I Just created a JIRA report and a fix for that problem.
https://issues.apache.org/jira/browse/TAPESTRY-1857

Uli

Ulrich Stärk schrieb:
I just came to the same conclusion. The problem is with the ([-_\\.]*[A-Za-z0-9]+)* part of the regexp in the user as well as the domain part. Apart from that this regexp will reject email addresses which are valid according to RFC 3696 like [EMAIL PROTECTED]

Uli

andyhot schrieb:
hmmm - nice report - looks like that specific email regex is problematic when the given string is not email and contains lots of chars (>25-30 result in more than 100000 iterations according to RegexBuddy) - we'll probably have to find a better regex i guess

http://www.ex-parrot.com/~pdw/Mail-RFC822-Address.html looks quite interesting though ;)

Christian Dutaret wrote:
Hi all,

Occasionally, my T4.1.3 application running on tomcat/jdk5/linux gets to
take 100% CPU and then never release it until I restart the JVM. Doesn't
happen too often, maybe 5 times in a few months. After I restart Tomcat,
everything goes back to normal.
I eventually decided to try to find out the suspected infinite loop that
causes all this. So I did a thread dump on the JVM, identified the
cpu-consuming threads. I found 3 threads wasting 33% of the CPU each, and according to the thread dump, they're all running infinite loops on regexp matching. Here is an extract of the thread dump for one of these threads :

        at java.util.regex.Pattern$GroupTail.match(Pattern.java:4634)
        at java.util.regex.Pattern$Curly.match0(Pattern.java:4240)
        at java.util.regex.Pattern$Curly.match(Pattern.java:4202)
        at java.util.regex.Pattern$Curly.match0(Pattern.java:4247)
        at java.util.regex.Pattern$Curly.match(Pattern.java:4202)
        at java.util.regex.Pattern$GroupHead.match(Pattern.java:4575)
        at java.util.regex.Pattern$Loop.match(Pattern.java:4702)
        at java.util.regex.Pattern$GroupTail.match(Pattern.java:4634)
        at java.util.regex.Pattern$Curly.match0(Pattern.java:4240)
        at java.util.regex.Pattern$Curly.match(Pattern.java:4202)
        at java.util.regex.Pattern$Curly.match0(Pattern.java:4247)
        at java.util.regex.Pattern$Curly.match(Pattern.java:4202)
        at java.util.regex.Pattern$GroupHead.match(Pattern.java:4575)
        at java.util.regex.Pattern$Loop.match(Pattern.java:4702)
        at java.util.regex.Pattern$GroupTail.match(Pattern.java:4634)
        at java.util.regex.Pattern$Curly.match0(Pattern.java:4240)
        at java.util.regex.Pattern$Curly.match(Pattern.java:4202)
        at java.util.regex.Pattern$Curly.match0(Pattern.java:4247)
        at java.util.regex.Pattern$Curly.match(Pattern.java:4202)
        at java.util.regex.Pattern$GroupHead.match(Pattern.java:4575)
        at java.util.regex.Pattern$Loop.match(Pattern.java:4702)
        at java.util.regex.Pattern$GroupTail.match(Pattern.java:4634)
        at java.util.regex.Pattern$Curly.match0(Pattern.java:4240)
        at java.util.regex.Pattern$Curly.match(Pattern.java:4202)
        at java.util.regex.Pattern$GroupHead.match(Pattern.java:4575)
        at java.util.regex.Pattern$Loop.match(Pattern.java:4702)
        at java.util.regex.Pattern$GroupTail.match(Pattern.java:4634)
        at java.util.regex.Pattern$Curly.match0(Pattern.java:4240)
        at java.util.regex.Pattern$Curly.match(Pattern.java:4202)
        at java.util.regex.Pattern$Curly.match0(Pattern.java:4247)
        at java.util.regex.Pattern$Curly.match(Pattern.java:4202)
        at java.util.regex.Pattern$GroupHead.match(Pattern.java:4575)
        at java.util.regex.Pattern$Loop.matchInit(Pattern.java:4721)
        at java.util.regex.Pattern$Prolog.match(Pattern.java:4658)
        at java.util.regex.Pattern$Curly.match0(Pattern.java:4240)
        at java.util.regex.Pattern$Curly.match(Pattern.java:4202)
        at java.util.regex.Pattern$Begin.match(Pattern.java:3084)
        at java.util.regex.Matcher.match(Matcher.java:1114)
        at java.util.regex.Matcher.matches(Matcher.java:495)
at org.apache.tapestry.util.RegexpMatcher.matches(RegexpMatcher.java
:71)
at org.apache.tapestry.form.validator.Email.validate(Email.java:61) at org.apache.tapestry.form.ValidatableFieldSupportImpl.validate(
ValidatableFieldSupportImpl.java:99)
        at
$ValidatableFieldSupport_115c315e3ad.validate($ValidatableFieldSupport_115c315e3ad.java)
        at org.apache.tapestry.form.TextField.rewindFormComponent(
TextField.java:103)

As you can see, it seems that the email validator regexp matching causes an infinite loop in some rare cases. Unfortunately, I am not able to retrieve
which values did cause this.

In the mean time, I'll try my own simpler regexp, or maybe I'll just skip
email validation until I get a better idea.

Thanks for any hint on this

Ch.




---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to