On 08.06.2010 17:50, Philip Hazel wrote:
I would if I could make it fail!
> I just found the time to test PCRE 8.10 RC 1. Unfortunately, it also
> shows the access violation, at the same place in pcre_exec.c, now line
> 5217.
That is very odd indeed. The studying shows that, in order to match,
there must be a whitespace character or an "x" in the input at the start
of the match, and neither are present in your data line. Therefore,
pcre_exec() shouldn't even start to try, and should never get anywhere
near line 5217. I have just traced the execution on my box, and indeed
it never tries to run the match.
Any chance you use different compile options? Here are mine:
SUPPORT_UCP=1;SUPPORT_UTF8=1;PCRE_DEBUG=1
Now with PCRE_DEBUG, I receive the outputs attached. Same pattern, two
files: One with study enabled and the other one without.
Interestingly, with study, PCRE seems to run into an endless loop:
match() returned 0 from line 2678 to line 5215
match() called in line 5215
match() returned 0 from line 2678 to line 5215
match() called in line 5215
and this goes on forever.
So...the question is, why are you seeing something different? We should
try to solve this problem before I release 8.10.
I am on a Windows machine (I know you never used it), but I don't think
this matters much since you could reproduce all bugs I posted previously.
If there is anything you would want me to do, please let me know.
Ralf
PCRE version 8.10-RC1 2010-06-03
/\s?xxx\s/8
------------------------------------------------------------------
\s?xxx\s
>> start branch
length=6 added 0 c=\
length=7 added 1 c=?
length=8 added 1 c=x
length=10 added 2 c=x
length=12 added 2 c=x
length=14 added 2 c=\
length=15 added 1 c=
>> end branch
end pre-compile: length=16 workspace=7
Length = 16 top_bracket = 0 top_backref = 0
Options=00000800
Req char = x
0 12 Bra
3 \s?
5 xxx
11 \s
12 12 Ket
15 End
------------------------------------------------------------------
\x{E0}0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456>>>>
Match against:
\xc3\xa00123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456
start non-capturing bracket
bracket 0 tail recursion
match() called in line 5215
match() returned 0 from line 2678 to line 5215
match() returned 0 from line 5430 >>>> returning PCRE_ERROR_NOMATCH
No match
PCRE version 8.10-RC1 2010-06-03
/\s?xxx\s/8S
------------------------------------------------------------------
\s?xxx\s
>> start branch
length=6 added 0 c=\
length=7 added 1 c=?
length=8 added 1 c=x
length=10 added 2 c=x
length=12 added 2 c=x
length=14 added 2 c=\
length=15 added 1 c=
>> end branch
end pre-compile: length=16 workspace=7
Length = 16 top_bracket = 0 top_backref = 0
Options=00000800
Req char = x
0 12 Bra
3 \s?
5 xxx
11 \s
12 12 Ket
15 End
------------------------------------------------------------------
\x{E0}0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456>>>>
Match against:
\xa00123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456
start non-capturing bracket
bracket 0 tail recursion
match() called in line 5215
match() returned 0 from line 2678 to line 5215
match() called in line 5215
match() returned 0 from line 2678 to line 5215
match() called in line 5215
match() returned 0 from line 2678 to line 5215
match() called in line 5215
<snip>
This goes on forever (about 1 million lines truncated).
</snip>--
## List details at http://lists.exim.org/mailman/listinfo/pcre-dev