RFR: 8373448: jpackage: StackOverflowError when processing a very long argument [v2]
Alexander Matveev
almatvee at openjdk.org
Fri Jan 9 01:12:58 UTC 2026
On Fri, 9 Jan 2026 00:42:31 GMT, Alexey Semenyuk <asemenyuk at openjdk.org> wrote:
>> Replace reluctant quantifier `*?` with the possessive alternative (`*+`) and get rid of back-references from the regexp tokenizing a value of the "--arguments" option into a string array to fix the catastrophic backtracking resulting in a stack overflow.
>>
>> Old regexp: `(?:(?:(["'])(?:\\\1|.)*?(?:\1|$))|(?:\["'\s]|[^\s]))++`
>>
>> New regexp `(?:(?:(?:'(?:\'|[^'])*+(?:'|$))|(?:"(?:\"|[^"])*+(?:"|$)))|(?:\["'\s]|\S))++`
>>
>> Add test cases that pass both the old and the new variants of the regexp, except for the last test case that causes a stack overflow with the old regexp.
>>
>> The initial intention was to replace the regexp with the tokenizer function. It was abandoned in favor of reworking the regexp to minimize the risk of regressions.
>
> Alexey Semenyuk has updated the pull request incrementally with one additional commit since the last revision:
>
> Remove debug output
Looks good.
-------------
Marked as reviewed by almatvee (Reviewer).
PR Review: https://git.openjdk.org/jdk/pull/29104#pullrequestreview-3641932708
More information about the core-libs-dev
mailing list