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.


--
Andreas Andreou - [EMAIL PROTECTED] - http://andyhot.di.uoa.gr
Tapestry / Tacos developer
Open Source / JEE Consulting


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

Reply via email to