[ https://issues.apache.org/jira/browse/LUCENE-10501?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Kartik Ganesh updated LUCENE-10501: ----------------------------------- Description: When RegExp encounters a very large string, it hits a Stack Overflow exception when parsing it. Simple program to repro: {noformat} $ ls RegExpTest.java lucene-core-9.1.0.jar $ cat RegExpTest.java class RegExpTest { public static void main(String[] args) { StringBuilder strBuilder = new StringBuilder(); for (int i = 0; i < 50000; i++) { strBuilder.append("a"); } try { new org.apache.lucene.util.automaton.RegExp(strBuilder.toString()); } catch (StackOverflowError e) { System.out.println("Stack overflow"); System.exit(-1); } System.out.println("Success"); } } $ javac -cp './lucene-core-9.1.0.jar:.' RegExpTest.java $ java -cp './lucene-core-9.1.0.jar:.' RegExpTest Stack overflow $ java -Xss1G -cp './lucene-core-9.1.0.jar:.' RegExpTest Success{noformat} Based on https://issues.apache.org/jira/browse/LUCENE-6156 , this appears to be due to the recursive parsing implementation. was: When RegExp encounters a very large string, it hits a Stack Overflow exception when parsing it. Simple program to repro: {{$ ls}} {{RegExpTest.java lucene-core-9.1.0.jar}} {{$ cat RegExpTest.java}} {{class RegExpTest {}} {{ public static void main(String[] args) {}} {{ StringBuilder strBuilder = new StringBuilder();}} {{ for (int i = 0; i < 50000; i++) {}} {{ strBuilder.append("a");}} {{ }}} {{ try {}} {{ new org.apache.lucene.util.automaton.RegExp(strBuilder.toString());}} {{ } catch (StackOverflowError e) {}} {{ System.out.println("Stack overflow");}} {{ System.exit(-1);}} {{ }}} {{ System.out.println("Success");}} {{ }}} {{}}} {{$ javac -cp './lucene-core-9.1.0.jar:.' RegExpTest.java}} {{$ java -cp './lucene-core-9.1.0.jar:.' RegExpTest}} {{Stack overflow}} {{$ java -Xss1G -cp './lucene-core-9.1.0.jar:.' RegExpTest}} {{Success}} Based on https://issues.apache.org/jira/browse/LUCENE-6156 , this appears to be due to the recursive parsing implementation. > StackOverflow when RegExp encounters a very large string > -------------------------------------------------------- > > Key: LUCENE-10501 > URL: https://issues.apache.org/jira/browse/LUCENE-10501 > Project: Lucene - Core > Issue Type: Bug > Components: core/queryparser > Affects Versions: 9.1 > Reporter: Kartik Ganesh > Priority: Major > > When RegExp encounters a very large string, it hits a Stack Overflow > exception when parsing it. > Simple program to repro: > {noformat} > $ ls > RegExpTest.java lucene-core-9.1.0.jar > $ cat RegExpTest.java > class RegExpTest { > public static void main(String[] args) { > StringBuilder strBuilder = new StringBuilder(); > for (int i = 0; i < 50000; i++) { > strBuilder.append("a"); > } > try { > new > org.apache.lucene.util.automaton.RegExp(strBuilder.toString()); > } catch (StackOverflowError e) { > System.out.println("Stack overflow"); > System.exit(-1); > } > System.out.println("Success"); > } > } > $ javac -cp './lucene-core-9.1.0.jar:.' RegExpTest.java > $ java -cp './lucene-core-9.1.0.jar:.' RegExpTest > Stack overflow > $ java -Xss1G -cp './lucene-core-9.1.0.jar:.' RegExpTest > Success{noformat} > Based on https://issues.apache.org/jira/browse/LUCENE-6156 , this appears to > be due to the recursive parsing implementation. -- This message was sent by Atlassian Jira (v8.20.1#820001) --------------------------------------------------------------------- To unsubscribe, e-mail: issues-unsubscr...@lucene.apache.org For additional commands, e-mail: issues-h...@lucene.apache.org