Fixed by upping the stack size. I guess that section of the code has a
heavy footprint.
ruel loehr wrote:
>
> We are having some problems using the latest webtest release with dwr and
> javascript templates.
>
> JDK is 1.5.0.11.
>
> Initially, mark pointed us too some improvements made on htmlunit trunk
> for regex processing.
>
> I checked out html unit 1.14 tagged release and ported the trunk change
> for HTMLUnitRegexProxy to that branch. Everything worked fine for a bit,
> until our developers introduced dwr onto a second page. Our stack
> overflow errors then reappeared.
>
> [sleep] Exception in thread "HtmlUnit Managed Thread #7:
> XMLHttpRequest.send" java.lang.StackOverflowError
> [sleep] at
> java.util.regex.Pattern$Curly.match(Pattern.java:4190)
>
> I've hacked around at the htmlunit source, putting in a bunch of debug
> statements to try and narrow the problem.
>
> [sleep] INFO
> (com.gargoylesoftware.htmlunit.javascript.regexp.HtmlUnitRegExpProxy$RegExpData)
> - After escapeJSCurly re is ^(\s*\S*(\s+\S+)*)\s*$
> [sleep] INFO
> (com.gargoylesoftware.htmlunit.javascript.regexp.HtmlUnitRegExpProxy) -
> Pattern compiled
> [sleep] INFO
> (com.gargoylesoftware.htmlunit.javascript.regexp.HtmlUnitRegExpProxy) - We
> are now calling pattern matcher with string: {var hourTypeIndicators =
> ["Branch Working Hours","Specific Hours","Not Available"]}
> [sleep] {var hourValues =
> ["01","02","03","04","05","06","07","08","09","10","11"]}
> [sleep] {var minuteValues = ["00","30"]}
> [sleep] {var ampmValues = ["AM","PM"]}
> [sleep] {var timeWindowSizes = [1, 2, 3,4, 5, 6,7, 8, 9,10, 11, 12,13,
> 14, 15,16,17, 18, 19,20, 21, 22,23,24]}
> [sleep] {if schedulingConfig != null}
> [sleep] {if (schedulingConfig.isBranchView)}
>
> I SNIPPED some the code which gets output here, it's a big javascript
> template.
>
> [sleep]
> [sleep]
> [sleep] INFO
> (com.gargoylesoftware.htmlunit.javascript.regexp.HtmlUnitRegExpProxy) -
> The matcher is created
> [sleep] INFO
> (com.gargoylesoftware.htmlunit.javascript.regexp.HtmlUnitRegExpProxy) -
> Calling replaceAll on the matcher with replacemetn : $1
> [sleep] Exception in thread "HtmlUnit Managed Thread #7:
> XMLHttpRequest.send" java.lang.StackOverflowError
> [sleep] at
> java.util.regex.Pattern$Curly.match(Pattern.java:4190)
>
> Now the interesting part. I forced HTMLUnit to write out the the context
> string, the regex pattern and the flags to 3 respective files. Then I
> wrote a small test class to simulate the behavior.
>
> public static void main(String[] args) {
> // TODO Auto-generated method stub
>
> Regexp regexp = new Regexp("^(\\s*\\S*(\\s+\\S+)*)\\s*$");
>
> String thisString= null;
>
> byte b[];
> try {
> FileInputStream fis = new
> FileInputStream("c:\\string.txt");
> int x= fis.available();
> b = new byte[x];
>
> fis.read(b);
> thisString = new String(b);
>
> } catch (FileNotFoundException e) {
> // TODO Auto-generated catch block
> e.printStackTrace();
> } catch (IOException e) {
> // TODO Auto-generated catch block
> e.printStackTrace();
> }
>
> System.out.println("About to compile a pattern");
> System.out.println("Regexp is " + regexp.toString());
>
> final Pattern pattern = Pattern.compile(regexp.toString(), 0 );
> System.out.println("Pattern compiled");
> final Matcher matcher = pattern.matcher(thisString);
> System.out.println("The matcher is created ");
> String done = matcher.replaceAll("$1");
>
> }
>
> I can't get it to fail. Is the NativeRegExp class coming into play
> somehow and causing this bug? I haven't found a way to instantiate it in
> my test.....
>
>
> Thanks!
> Ruel Loehr
>
>
>
>
>
>
--
View this message in context:
http://www.nabble.com/htmlunit-%2B-dwr-%2B-regexp-stack-overflow-tp16358149p16396507.html
Sent from the WebTest mailing list archive at Nabble.com.
_______________________________________________
WebTest mailing list
[email protected]
http://lists.canoo.com/mailman/listinfo/webtest