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]