You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tapestry.apache.org by "Eddie Lo (Updated) (JIRA)" <ji...@apache.org> on 2011/12/15 19:24:31 UTC

[jira] [Updated] (TAP5-1791) java.lang.StackOverflowError was thrown at org.apache.tapestry5.internal.services.ComponentEventLinkEncoderImpl.decodeComponentEventRequest(Request):243

     [ https://issues.apache.org/jira/browse/TAP5-1791?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Eddie Lo updated TAP5-1791:
---------------------------

    Description: 
Some some path parameters will cause tapestry getting into infinite loop.
The exact problem is caused by the combination of 3 factors:
* A low priority bug in JVM -- http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6882582
* A regex generated by Tapestry 3.0 
^/(((\w(?:\w|-)*)/)*(\w+))(\.(\w+(\.\w+)*))?(\:(\w+))?(/(.*))?
* A long and complex enough path parameter.
/t5/user/UserResetPasswordPage/user-id/22/reset-password-token/bHLQiMR3VD6eFTQ7Txj2y4u_HyGKiHwC9bF6dazuuf3__qhKpK3rtSbZHwB6W2dbmGCmPS1By1uq-rcZXO-Ooxd6Ire1vwPpxXUAlx3Mf15ShvJEf8r9MfWEMATS3Pyr-HaGiqqcjN2IhDtJtxnypanQkBrVPMC_APwDp7aWWZLajUAXbLn8d4-evXGarDqbUQvUGQ9oqzEAEPRt0hL5oDPwDg


When all the the 3 factors are hit, tapestry will get into at   
org.apache.tapestry5.internal.services.ComponentEventLinkEncoderImpl.decodeComponentEventRequest(Request):243
and following exception is thrown

[5DAC745F] java.lang.StackOverflowError
at java.util.regex.Pattern$BranchConn.match(Pattern.java:4078)
at java.util.regex.Pattern$BmpCharProperty.match(Pattern.java:3366)
at java.util.regex.Pattern$Branch.match(Pattern.java:4114)
at java.util.regex.Pattern$GroupHead.match(Pattern.java:4168)
at java.util.regex.Pattern$Loop.match(Pattern.java:4295)
at java.util.regex.Pattern$GroupTail.match(Pattern.java:4227)
at java.util.regex.Pattern$BranchConn.match(Pattern.java:4078)
at java.util.regex.Pattern$BmpCharProperty.match(Pattern.java:3366)
at java.util.regex.Pattern$Branch.match(Pattern.java:4114)
at java.util.regex.Pattern$GroupHead.match(Pattern.java:4168)
at java.util.regex.Pattern$Loop.match(Pattern.java:4295)
at java.util.regex.Pattern$GroupTail.match(Pattern.java:4227)
at java.util.regex.Pattern$BranchConn.match(Pattern.java:4078)
at java.util.regex.Pattern$BmpCharProperty.match(Pattern.java:3366)    
...


There is a limit in java only holding the top 1024 stacks. As the frame is small this time, it have far more that 1024, the bottom is truncated and lost.
However, I used debugger to confirm that it is thrown from  org.apache.tapestry5.internal.services.ComponentEventLinkEncoderImpl.decodeComponentEventRequest(Request):243

While the problem is caused by JVM bug (Oracle) and a long complex path parameters (us), it is recommended to also fix this in Tapestry to use a simpler regex.  



  was:
Some some path parameters will cause tapestry getting into infinite loop.
The exact problem is caused by the combination of 3 factors:
* [A low priority bug in JVM|http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6882582]
* A regex generated by Tapestry 3.0 
{noformat}
^/(((\w(?:\w|-)*)/)*(\w+))(\.(\w+(\.\w+)*))?(\:(\w+))?(/(.*))?
{noformat}
* A long and complex enough path parameter.
{noformat}
http://platform1-regression.qa.lithium.com/t5/user/UserResetPasswordPage/user-id/22/reset-password-token/bHLQiMR3VD6eFTQ7Txj2y4u_HyGKiHwC9bF6dazuuf3__qhKpK3rtSbZHwB6W2dbmGCmPS1By1uq-rcZXO-Ooxd6Ire1vwPpxXUAlx3Mf15ShvJEf8r9MfWEMATS3Pyr-HaGiqqcjN2IhDtJtxnypanQkBrVPMC_APwDp7aWWZLajUAXbLn8d4-evXGarDqbUQvUGQ9oqzEAEPRt0hL5oDPwDg
{noformat}

When all the the 3 factors are hit, tapestry will get into at   
org.apache.tapestry5.internal.services.ComponentEventLinkEncoderImpl.decodeComponentEventRequest(Request):243
and following exception is thrown
{noformat}
[5DAC745F] java.lang.StackOverflowError
at java.util.regex.Pattern$BranchConn.match(Pattern.java:4078)
at java.util.regex.Pattern$BmpCharProperty.match(Pattern.java:3366)
at java.util.regex.Pattern$Branch.match(Pattern.java:4114)
at java.util.regex.Pattern$GroupHead.match(Pattern.java:4168)
at java.util.regex.Pattern$Loop.match(Pattern.java:4295)
at java.util.regex.Pattern$GroupTail.match(Pattern.java:4227)
at java.util.regex.Pattern$BranchConn.match(Pattern.java:4078)
at java.util.regex.Pattern$BmpCharProperty.match(Pattern.java:3366)
at java.util.regex.Pattern$Branch.match(Pattern.java:4114)
at java.util.regex.Pattern$GroupHead.match(Pattern.java:4168)
at java.util.regex.Pattern$Loop.match(Pattern.java:4295)
at java.util.regex.Pattern$GroupTail.match(Pattern.java:4227)
at java.util.regex.Pattern$BranchConn.match(Pattern.java:4078)
at java.util.regex.Pattern$BmpCharProperty.match(Pattern.java:3366)    
...
{noformat}

There is a limit in java only holding the top 1024 stacks. As the frame is small this time, it have far more that 1024, the bottom is truncated and lost.
However, I used debugger to confirm that it is thrown from  org.apache.tapestry5.internal.services.ComponentEventLinkEncoderImpl.decodeComponentEventRequest(Request):243

While the problem is caused by JVM bug (Oracle) and a long complex path parameters (us), it is recommended to also fix this in Tapestry to use a simpler regex.  



    
> java.lang.StackOverflowError was thrown at org.apache.tapestry5.internal.services.ComponentEventLinkEncoderImpl.decodeComponentEventRequest(Request):243
> --------------------------------------------------------------------------------------------------------------------------------------------------------
>
>                 Key: TAP5-1791
>                 URL: https://issues.apache.org/jira/browse/TAP5-1791
>             Project: Tapestry 5
>          Issue Type: Bug
>          Components: tapestry-core
>    Affects Versions: 5.3
>            Reporter: Eddie Lo
>            Priority: Critical
>
> Some some path parameters will cause tapestry getting into infinite loop.
> The exact problem is caused by the combination of 3 factors:
> * A low priority bug in JVM -- http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6882582
> * A regex generated by Tapestry 3.0 
> ^/(((\w(?:\w|-)*)/)*(\w+))(\.(\w+(\.\w+)*))?(\:(\w+))?(/(.*))?
> * A long and complex enough path parameter.
> /t5/user/UserResetPasswordPage/user-id/22/reset-password-token/bHLQiMR3VD6eFTQ7Txj2y4u_HyGKiHwC9bF6dazuuf3__qhKpK3rtSbZHwB6W2dbmGCmPS1By1uq-rcZXO-Ooxd6Ire1vwPpxXUAlx3Mf15ShvJEf8r9MfWEMATS3Pyr-HaGiqqcjN2IhDtJtxnypanQkBrVPMC_APwDp7aWWZLajUAXbLn8d4-evXGarDqbUQvUGQ9oqzEAEPRt0hL5oDPwDg
> When all the the 3 factors are hit, tapestry will get into at   
> org.apache.tapestry5.internal.services.ComponentEventLinkEncoderImpl.decodeComponentEventRequest(Request):243
> and following exception is thrown
> [5DAC745F] java.lang.StackOverflowError
> at java.util.regex.Pattern$BranchConn.match(Pattern.java:4078)
> at java.util.regex.Pattern$BmpCharProperty.match(Pattern.java:3366)
> at java.util.regex.Pattern$Branch.match(Pattern.java:4114)
> at java.util.regex.Pattern$GroupHead.match(Pattern.java:4168)
> at java.util.regex.Pattern$Loop.match(Pattern.java:4295)
> at java.util.regex.Pattern$GroupTail.match(Pattern.java:4227)
> at java.util.regex.Pattern$BranchConn.match(Pattern.java:4078)
> at java.util.regex.Pattern$BmpCharProperty.match(Pattern.java:3366)
> at java.util.regex.Pattern$Branch.match(Pattern.java:4114)
> at java.util.regex.Pattern$GroupHead.match(Pattern.java:4168)
> at java.util.regex.Pattern$Loop.match(Pattern.java:4295)
> at java.util.regex.Pattern$GroupTail.match(Pattern.java:4227)
> at java.util.regex.Pattern$BranchConn.match(Pattern.java:4078)
> at java.util.regex.Pattern$BmpCharProperty.match(Pattern.java:3366)    
> ...
> There is a limit in java only holding the top 1024 stacks. As the frame is small this time, it have far more that 1024, the bottom is truncated and lost.
> However, I used debugger to confirm that it is thrown from  org.apache.tapestry5.internal.services.ComponentEventLinkEncoderImpl.decodeComponentEventRequest(Request):243
> While the problem is caused by JVM bug (Oracle) and a long complex path parameters (us), it is recommended to also fix this in Tapestry to use a simpler regex.  

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira