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]