Closed p5pRT closed 4 years ago
Perl lexer (???) has a deep recursion bug in Perl_scalarvoid when given a very large Perl subroutine to run. Perl_scalarvoid calls itself over and over\, for what I blindly guess is every opcode in the sub. If there are too many opcodes\, C stack overflows.
I could not replicate this with any stock ActivePerl (AP 5.10.0\, AP 5.12.3). While the test script is running\, ActivePerls peak at 8 MB on the C stack. I checked with VMMAP. If I lower the stack reserve from 16 MB to 256KB in the PE header on perl.exe from ActivePerls\, I will get the same exact Perl_scalarvoid stack overflow. There is no reason for the interpreter to peak at many MBs of C stack\, which is irreversibly expanded (there are OS specific ways to shrink C stacks.... I know it can be done with VirtualFree and VirtualAlloc on Windows\, but that is the wrong way to fix C stack recursion) and wasted\, never to be used again after BEGIN blocks run. I have not tested doing the "require" at runtime. On other perl scripts and apps I run\, all the interpreter (APs and my compiled Perl) peak at 20-50KB of C stack which is fine. I assume that the reason that my self-compiled Perl will stack overflow at 16MB and ActivePerls do not is because of high C stack overhead of each recursive Perl_scalarvoid when Perl is compiled with -Od (no registers) meanwhile ActivePerls are compiled with -O1 (small code).
I wrote this test script to test how efficient Perl is at returning memory to the OS after a Perl Module is "use"d and if\, and how well\, memory behind the BEGIN blocks (SVs\, CVs\, Opcodes\, pads\, raw malloced blocks) is returned to the OS. If I lower the 100000 to 50000 in the test script\, the script will run without a stack overflow. On sucessful runs\, malloced memory went down from ~60MB inside the module BEGIN block (at "print "after branches\n";") to ~3MB at runtime ("print "in main\n";" ) according to VMMAP (private/yellow memory). C Stack remained at many MBs (7 to 8MB at 50000 in test script).
Perl_scalarvoid\, whatever it does to opcodes\, should run in a loop down the optree\, not recursively on every opcode and thus eating away the C stack. I request that the above-reported bug be fixed.
included pics of VS debugger and opcode structs\, the pp_cond_expr and pp_null only 2 things inthe recursive pattern\, also added full C stack trace\, and added the test Perl script that generates these stack overflows
@bulk88 - Status changed from 'new' to 'open'
On Sun Jan 15 10:35:13 2012\, bulk88 wrote:
Perl lexer (???) has a deep recursion bug in Perl_scalarvoid when given a very large Perl subroutine to run.� Perl_scalarvoid calls itself over and over\, for what I blindly guess is every opcode in the sub.� If there are too many opcodes\, C stack overflows.
I could not replicate this with any stock ActivePerl (AP 5.10.0\, AP 5.12.3).� While the test script is running\, ActivePerls peak at 8 MB on the C stack.� I checked with VMMAP.� If I lower the stack reserve from 16 MB to 256KB in the PE header on perl.exe from ActivePerls\, I will get the same exact Perl_scalarvoid stack overflow.� There is no reason for the interpreter to peak at many MBs of C stack\, which is irreversibly expanded (there are OS specific ways to shrink C stacks.... I know it can be done with VirtualFree and VirtualAlloc on Windows\, but that is the wrong way to fix C stack recursion) and wasted\, never to be used again after BEGIN blocks run.� I have not tested doing the "require" at runtime.� On other perl scripts and apps I run\, all the interpreter (APs and my compiled Perl) peak at 20-50KB of C stack which is fine.� I assume that the reason that my self-compiled Perl will stack overflow at 16MB and ActivePerls do not is because of high C stack overhead of each recursive Perl_scalarvoid when Perl is compiled with -Od (no registers) meanwhile ActivePerls are compiled with -O1 (small code).
I wrote this test script to test how efficient Perl is at returning memory to the OS after a Perl Module is "use"d and if\, and how well\, memory behind the BEGIN blocks (SVs\, CVs\, Opcodes\, pads\, raw malloced blocks) is returned to the OS.� If I lower the 100000 to 50000 in the test script\, the script will run without a stack overflow.� On sucessful runs\, malloced memory went down from ~60MB inside the module BEGIN block (at "print "after branches\n";") to ~3MB at runtime ("print "in main\n";" ) according to VMMAP (private/yellow memory).� C Stack remained at many MBs (7 to 8MB at 50000 in test script).
Perl_scalarvoid\, whatever it does to opcodes\, should run in a loop down the optree\, not recursively on every opcode and thus eating away the C stack.� I request that the above-reported bug be fixed.
1. I modified the test program you wrote to take the number of iterations from the command-line rather than having it hard-coded. I then ran the program on the two OSes to which I have access\, Darwin and Linux. In both cases\, the program failed.
$ perl 108276_stk.pl 10 number: 10 before require Can't exec "pause": No such file or directory at 108276_stk.pl line 23. 10after branches Can't exec "pause": No such file or directory at testmod1326659374.pm line 14. in main Can't exec "pause": No such file or directory at 108276_stk.pl line 27.
'pause' is not an installed executable on those platforms (though it has a man page as a C library function).
Could you modify your program to avoid the use of 'pause'? That would enable more people to run it.
2. While the screenshots you posted via the RT GUI are displaying\, I suspect they won't show up on the perl5-porters mailing list or newsgroup.
Thank you for your report. Jim Keenan
On Sun Jan 15 12:58:36 2012\, jkeenan wrote:
On Sun Jan 15 10:35:13 2012\, bulk88 wrote:
Perl lexer (???) has a deep recursion bug in Perl_scalarvoid when given a very large Perl subroutine to run.� Perl_scalarvoid calls itself over and over\, for what I blindly guess is every opcode in the sub.� If there are too many opcodes\, C stack overflows.
I could not replicate this with any stock ActivePerl (AP 5.10.0\, AP 5.12.3).� While the test script is running\, ActivePerls peak at 8 MB on the C stack.� I checked with VMMAP.� If I lower the stack reserve from 16 MB to 256KB in the PE header on perl.exe from ActivePerls\, I will get the same exact Perl_scalarvoid stack overflow.� There is no reason for the interpreter to peak at many MBs of C stack\, which is irreversibly expanded (there are OS specific ways to shrink C stacks.... I know it can be done with VirtualFree and VirtualAlloc on Windows\, but that is the wrong way to fix C stack recursion) and wasted\, never to be used again after BEGIN blocks run.� I have not tested doing the "require" at runtime.� On other perl scripts and apps I run\, all the interpreter (APs and my compiled Perl) peak at 20-50KB of C stack which is fine.� I assume that the reason that my self-compiled Perl will stack overflow at 16MB and ActivePerls do not is because of high C stack overhead of each recursive Perl_scalarvoid when Perl is compiled with -Od (no registers) meanwhile ActivePerls are compiled with -O1 (small code).
I wrote this test script to test how efficient Perl is at returning memory to the OS after a Perl Module is "use"d and if\, and how well\, memory behind the BEGIN blocks (SVs\, CVs\, Opcodes\, pads\, raw malloced blocks) is returned to the OS.� If I lower the 100000 to 50000 in the test script\, the script will run without a stack overflow.� On sucessful runs\, malloced memory went down from ~60MB inside the module BEGIN block (at "print "after branches\n";") to ~3MB at runtime ("print "in main\n";" ) according to VMMAP (private/yellow memory).� C Stack remained at many MBs (7 to 8MB at 50000 in test script).
Perl_scalarvoid\, whatever it does to opcodes\, should run in a loop down the optree\, not recursively on every opcode and thus eating away the C stack.� I request that the above-reported bug be fixed.
1. I modified the test program you wrote to take the number of iterations from the command-line rather than having it hard-coded. I then ran the program on the two OSes to which I have access\, Darwin and Linux. In both cases\, the program failed.
$ perl 108276_stk.pl 10 number: 10 before require Can't exec "pause": No such file or directory at 108276_stk.pl line 23. 10after branches Can't exec "pause": No such file or directory at testmod1326659374.pm line 14. in main Can't exec "pause": No such file or directory at 108276_stk.pl line 27.
'pause' is not an installed executable on those platforms (though it has a man page as a C library function).
Could you modify your program to avoid the use of 'pause'? That would enable more people to run it.
I haven’t used Windows for a long\, long time (except IE for web testing)\, but if I remember correctly the pause command prints ‘Press the "any" key to continue...’ and waits for a keystroke before exiting.
Changing system("pause") to:
system("perl -e '$|=1; print q|Press return to continue... |; \<>'")
should work.
--
Father Chrysostomos
On Sun Jan 15 13:16:04 2012\, sprout wrote:
I haven’t used Windows for a long\, long time (except IE for web testing)\, but if I remember correctly the pause command prints ‘Press the "any" key to continue...’ and waits for a keystroke before exiting.
Changing system("pause") to:
system\("perl \-e '$|=1; print q|Press return to continue\.\.\. |; \<>'"\)
should work.
Google says "pause" equivalent on POSIX is "echo -n "Press any key to continue . . ." && read -n 1". The system("pause") lines are the points I suggest to look at memory usage of the Perl process. Not sure if there are any tools that can show reserved size of stack vs allocated amount of stack in virtual memory system on Linux/Unix. I used VMMAP for Windows to get the memory counts.
On Sun Jan 15 13:16:04 2012\, sprout wrote:
I haven’t used Windows for a long\, long time (except IE for web testing)\, but if I remember correctly the pause command prints ‘Press the "any" key to continue...’ and waits for a keystroke before exiting.
Changing system("pause") to:
system\("perl \-e '$|=1; print q|Press return to continue\.\.\. |; \<>'"\)
should work.
Google says "pause" equivalent on POSIX is "echo -n "Press any key to continue . . ." && read -n 1". The system("pause") lines are the points I suggest to look at memory usage of the Perl process. Not sure if there are any tools that can show reserved size of stack vs allocated amount of stack in virtual memory system on Linux/Unix. I used VMMAP for Windows to get the memory counts.
On Sun\, Jan 15\, 2012 at 10:35:14AM -0800\, bulk 88 wrote:
The code can be simplified to the following:
my $n = $ARGV[0]; die unless $n =~ /^\d+$/;
my $code = 'my $i = 0; if ($i) { print }' . "\n"; $code .= 'elsif ($i) { print }' . "\n" for 1..$n; eval $code;
segfaults for me on blead with n >= about 5000.
In blead\, it's recursing in S_finalize_op rather than scalarvoid; not sure whether this is instead of or in addition to a scalarvoid problem.
-- "But Sidley Park is already a picture\, and a most amiable picture too. The slopes are green and gentle. The trees are companionably grouped at intervals that show them to advantage. The rill is a serpentine ribbon unwound from the lake peaceably contained by meadows on which the right amount of sheep are tastefully arranged." -- Lady Croom\, "Arcadia"
On Mon Jan 16 03:51:55 2012\, davem wrote:
On Sun\, Jan 15\, 2012 at 10:35:14AM -0800\, bulk 88 wrote:
The code can be simplified to the following:
my $n = $ARGV\[0\]; die unless $n =~ /^\\d\+$/; my $code = 'my $i = 0; if \($i\) \{ print \}' \. "\\n"; $code \.= 'elsif \($i\) \{ print \}' \. "\\n" for 1\.\.$n; eval $code;
segfaults for me on blead with n >= about 5000.
In blead\, it's recursing in S_finalize_op rather than scalarvoid; not sure whether this is instead of or in addition to a scalarvoid problem.
Without actually looking\, I suspect it is in addition.
As I’m sure you already know\, each elsif is nested inside the previous one in the op tree.
So it looks as though at least S_finalize_op needs to be made iterative\, and probably scalarvoid\, too.
And this results in a crash in op_free:
perl -e'eval "sub{".q"$a+"x shift . "}"' 500000
What else needs to be made iterative?
--
Father Chrysostomos
On Fri Jan 20 09:38:48 2012\, sprout wrote:
So it looks as though at least S_finalize_op needs to be made iterative\, and probably scalarvoid\, too.
And this results in a crash in op_free:
perl -e'eval "sub{".q"$a+"x shift . "}"' 500000
What else needs to be made iterative?
I decided to run Perl's test suite on my c stack reduced perl. First one found is on parset.t\, there are many more on my list to analyze\, I see one in comp/proto.t that I am working on getting a stack trace of right now.
Perl_peep\, when running
cop_line 111 unsigned long + cop_file 0x018332bc "C:\perl-5.12.2\t\comp\parser.t"
perl512.dll!Perl_peep(interpreter * my_perl=0x0035403c\, op * o=0x01845b44) Line 8479 + 0x3 C perl512.dll!Perl_peep(interpreter * my_perl=0x0035403c\, op * o=0x01845af8) Line 8729 + 0x13 C perl512.dll!Perl_peep(interpreter * my_perl=0x0035403c\, op * o=0x01845a58) Line 8729 + 0x13 C perl512.dll!Perl_peep(interpreter * my_perl=0x0035403c\, op * o=0x018459b8) Line 8729 + 0x13 C perl512.dll!Perl_peep(interpreter * my_perl=0x0035403c\, op * o=0x01845918) Line 8729 + 0x13 C perl512.dll!Perl_peep(interpreter * my_perl=0x0035403c\, op * o=0x01845878) Line 8729 + 0x13 C perl512.dll!Perl_peep(interpreter * my_perl=0x0035403c\, op * o=0x018457d8) Line 8729 + 0x13 C perl512.dll!Perl_peep(interpreter * my_perl=0x0035403c\, op * o=0x01845738) Line 8729 + 0x13 C perl512.dll!Perl_peep(interpreter * my_perl=0x0035403c\, op * o=0x01845698) Line 8729 + 0x13 C perl512.dll!Perl_peep(interpreter * my_perl=0x0035403c\, op * o=0x018455f8) Line 8729 + 0x13 C perl512.dll!Perl_peep(interpreter * my_perl=0x0035403c\, op * o=0x01845558) Line 8729 + 0x13 C perl512.dll!Perl_peep(interpreter * my_perl=0x0035403c\, op * o=0x018454b8) Line 8729 + 0x13 C perl512.dll!Perl_peep(interpreter * my_perl=0x0035403c\, op * o=0x01845418) Line 8729 + 0x13 C perl512.dll!Perl_peep(interpreter * my_perl=0x0035403c\, op * o=0x01845378) Line 8729 + 0x13 C perl512.dll!Perl_peep(interpreter * my_perl=0x0035403c\, op * o=0x018452d8) Line 8729 + 0x13 C perl512.dll!Perl_peep(interpreter * my_perl=0x0035403c\, op * o=0x01845238) Line 8729 + 0x13 C perl512.dll!Perl_peep(interpreter * my_perl=0x0035403c\, op * o=0x01845198) Line 8729 + 0x13 C perl512.dll!Perl_peep(interpreter * my_perl=0x0035403c\, op * o=0x018450f8) Line 8729 + 0x13 C perl512.dll!Perl_peep(interpreter * my_perl=0x0035403c\, op * o=0x01845058) Line 8729 + 0x13 C perl512.dll!Perl_peep(interpreter * my_perl=0x0035403c\, op * o=0x01844fb8) Line 8729 + 0x13 C perl512.dll!Perl_peep(interpreter * my_perl=0x0035403c\, op * o=0x01844f18) Line 8729 + 0x13 C perl512.dll!Perl_peep(interpreter * my_perl=0x0035403c\, op * o=0x01844e78) Line 8729 + 0x13 C perl512.dll!Perl_peep(interpreter * my_perl=0x0035403c\, op * o=0x01844dd8) Line 8729 + 0x13 C perl512.dll!Perl_peep(interpreter * my_perl=0x0035403c\, op * o=0x01844d38) Line 8729 + 0x13 C perl512.dll!Perl_peep(interpreter * my_perl=0x0035403c\, op * o=0x01844c98) Line 8729 + 0x13 C perl512.dll!Perl_peep(interpreter * my_perl=0x0035403c\, op * o=0x01844bf8) Line 8729 + 0x13 C perl512.dll!Perl_peep(interpreter * my_perl=0x0035403c\, op * o=0x01844b58) Line 8729 + 0x13 C perl512.dll!Perl_peep(interpreter * my_perl=0x0035403c\, op * o=0x01844ab8) Line 8729 + 0x13 C perl512.dll!Perl_peep(interpreter * my_perl=0x0035403c\, op * o=0x01844a18) Line 8729 + 0x13 C perl512.dll!Perl_peep(interpreter * my_perl=0x0035403c\, op * o=0x01844978) Line 8729 + 0x13 C perl512.dll!Perl_peep(interpreter * my_perl=0x0035403c\, op * o=0x018448d8) Line 8729 + 0x13 C perl512.dll!Perl_peep(interpreter * my_perl=0x0035403c\, op * o=0x01848e88) Line 8729 + 0x13 C perl512.dll!Perl_peep(interpreter * my_perl=0x0035403c\, op * o=0x01848de8) Line 8729 + 0x13 C perl512.dll!Perl_peep(interpreter * my_perl=0x0035403c\, op * o=0x01848d48) Line 8729 + 0x13 C perl512.dll!Perl_peep(interpreter * my_perl=0x0035403c\, op * o=0x01848ca8) Line 8729 + 0x13 C perl512.dll!Perl_peep(interpreter * my_perl=0x0035403c\, op * o=0x01848c08) Line 8729 + 0x13 C perl512.dll!Perl_peep(interpreter * my_perl=0x0035403c\, op * o=0x01848b68) Line 8729 + 0x13 C perl512.dll!Perl_peep(interpreter * my_perl=0x0035403c\, op * o=0x01848ac8) Line 8729 + 0x13 C perl512.dll!Perl_peep(interpreter * my_perl=0x0035403c\, op * o=0x01848a28) Line 8729 + 0x13 C perl512.dll!Perl_peep(interpreter * my_perl=0x0035403c\, op * o=0x01848988) Line 8729 + 0x13 C perl512.dll!Perl_peep(interpreter * my_perl=0x0035403c\, op * o=0x018488e8) Line 8729 + 0x13 C perl512.dll!Perl_peep(interpreter * my_perl=0x0035403c\, op * o=0x01848848) Line 8729 + 0x13 C perl512.dll!Perl_peep(interpreter * my_perl=0x0035403c\, op * o=0x018487a8) Line 8729 + 0x13 C perl512.dll!Perl_peep(interpreter * my_perl=0x0035403c\, op * o=0x01848708) Line 8729 + 0x13 C perl512.dll!Perl_peep(interpreter * my_perl=0x0035403c\, op * o=0x01848668) Line 8729 + 0x13 C perl512.dll!Perl_peep(interpreter * my_perl=0x0035403c\, op * o=0x018485c8) Line 8729 + 0x13 C perl512.dll!Perl_peep(interpreter * my_perl=0x0035403c\, op * o=0x01848528) Line 8729 + 0x13 C perl512.dll!Perl_peep(interpreter * my_perl=0x0035403c\, op * o=0x01848488) Line 8729 + 0x13 C perl512.dll!Perl_peep(interpreter * my_perl=0x0035403c\, op * o=0x018483e8) Line 8729 + 0x13 C perl512.dll!Perl_peep(interpreter * my_perl=0x0035403c\, op * o=0x01848348) Line 8729 + 0x13 C perl512.dll!Perl_peep(interpreter * my_perl=0x0035403c\, op * o=0x018482a8) Line 8729 + 0x13 C perl512.dll!Perl_peep(interpreter * my_perl=0x0035403c\, op * o=0x01848208) Line 8729 + 0x13 C perl512.dll!Perl_peep(interpreter * my_perl=0x0035403c\, op * o=0x01848168) Line 8729 + 0x13 C perl512.dll!Perl_peep(interpreter * my_perl=0x0035403c\, op * o=0x018480c8) Line 8729 + 0x13 C perl512.dll!Perl_peep(interpreter * my_perl=0x0035403c\, op * o=0x01848028) Line 8729 + 0x13 C perl512.dll!Perl_peep(interpreter * my_perl=0x0035403c\, op * o=0x01847f88) Line 8729 + 0x13 C perl512.dll!Perl_peep(interpreter * my_perl=0x0035403c\, op * o=0x01847ee8) Line 8729 + 0x13 C perl512.dll!Perl_peep(interpreter * my_perl=0x0035403c\, op * o=0x01847e48) Line 8729 + 0x13 C perl512.dll!Perl_peep(interpreter * my_perl=0x0035403c\, op * o=0x01847da8) Line 8729 + 0x13 C perl512.dll!Perl_peep(interpreter * my_perl=0x0035403c\, op * o=0x01847d08) Line 8729 + 0x13 C perl512.dll!Perl_peep(interpreter * my_perl=0x0035403c\, op * o=0x01847c68) Line 8729 + 0x13 C perl512.dll!Perl_peep(interpreter * my_perl=0x0035403c\, op * o=0x01847bc8) Line 8729 + 0x13 C perl512.dll!Perl_peep(interpreter * my_perl=0x0035403c\, op * o=0x01847b28) Line 8729 + 0x13 C perl512.dll!Perl_peep(interpreter * my_perl=0x0035403c\, op * o=0x01847a88) Line 8729 + 0x13 C perl512.dll!Perl_peep(interpreter * my_perl=0x0035403c\, op * o=0x018479e8) Line 8729 + 0x13 C perl512.dll!Perl_peep(interpreter * my_perl=0x0035403c\, op * o=0x01847948) Line 8729 + 0x13 C perl512.dll!Perl_peep(interpreter * my_perl=0x0035403c\, op * o=0x018478a8) Line 8729 + 0x13 C perl512.dll!Perl_peep(interpreter * my_perl=0x0035403c\, op * o=0x01847808) Line 8729 + 0x13 C perl512.dll!Perl_peep(interpreter * my_perl=0x0035403c\, op * o=0x01847768) Line 8729 + 0x13 C perl512.dll!Perl_peep(interpreter * my_perl=0x0035403c\, op * o=0x018476c8) Line 8729 + 0x13 C perl512.dll!Perl_peep(interpreter * my_perl=0x0035403c\, op * o=0x01847628) Line 8729 + 0x13 C perl512.dll!Perl_peep(interpreter * my_perl=0x0035403c\, op * o=0x01847588) Line 8729 + 0x13 C perl512.dll!Perl_peep(interpreter * my_perl=0x0035403c\, op * o=0x018474e8) Line 8729 + 0x13 C perl512.dll!Perl_peep(interpreter * my_perl=0x0035403c\, op * o=0x01847448) Line 8729 + 0x13 C perl512.dll!Perl_peep(interpreter * my_perl=0x0035403c\, op * o=0x018473a8) Line 8729 + 0x13 C perl512.dll!Perl_peep(interpreter * my_perl=0x0035403c\, op * o=0x01847308) Line 8729 + 0x13 C perl512.dll!Perl_peep(interpreter * my_perl=0x0035403c\, op * o=0x01847268) Line 8729 + 0x13 C perl512.dll!Perl_peep(interpreter * my_perl=0x0035403c\, op * o=0x018471c8) Line 8729 + 0x13 C perl512.dll!Perl_peep(interpreter * my_perl=0x0035403c\, op * o=0x01847128) Line 8729 + 0x13 C perl512.dll!Perl_peep(interpreter * my_perl=0x0035403c\, op * o=0x01847088) Line 8729 + 0x13 C perl512.dll!Perl_peep(interpreter * my_perl=0x0035403c\, op * o=0x01846fe8) Line 8729 + 0x13 C perl512.dll!Perl_peep(interpreter * my_perl=0x0035403c\, op * o=0x01846f48) Line 8729 + 0x13 C perl512.dll!Perl_peep(interpreter * my_perl=0x0035403c\, op * o=0x018549f8) Line 8729 + 0x13 C perl512.dll!Perl_peep(interpreter * my_perl=0x0035403c\, op * o=0x01854958) Line 8729 + 0x13 C perl512.dll!Perl_peep(interpreter * my_perl=0x0035403c\, op * o=0x018548b8) Line 8729 + 0x13 C perl512.dll!Perl_peep(interpreter * my_perl=0x0035403c\, op * o=0x01854818) Line 8729 + 0x13 C perl512.dll!Perl_peep(interpreter * my_perl=0x0035403c\, op * o=0x01854778) Line 8729 + 0x13 C perl512.dll!Perl_peep(interpreter * my_perl=0x0035403c\, op * o=0x018546d8) Line 8729 + 0x13 C perl512.dll!Perl_peep(interpreter * my_perl=0x0035403c\, op * o=0x01854638) Line 8729 + 0x13 C perl512.dll!Perl_peep(interpreter * my_perl=0x0035403c\, op * o=0x01854598) Line 8729 + 0x13 C perl512.dll!Perl_newPROG(interpreter * my_perl=0x0035403c\, op * o=0x01837a60) Line 2365 + 0x17 C perl512.dll!Perl_yyparse(interpreter * my_perl=0x0035403c) Line 143 + 0x2c C perl512.dll!S_parse_body(interpreter * my_perl=0x0035403c\, char * * env=0x002428f8\, void (interpreter *)* xsinit=0x281d2260) Line 2160 + 0x9 C perl512.dll!perl_parse(interpreter * my_perl=0x0035403c\, void (interpreter *)* xsinit=0x281d2260\, int argc=0x00000002\, char * * argv=0x00242510\, char * * env=0x002428f8) Line 1605 + 0x11 C perl512.dll!RunPerl(int argc=0x00000002\, char * * argv=0x00242510\, char * * env=0x002428f8) Line 263 + 0x1a C++ perl.exe!main(int argc=0x00000002\, char * * argv=0x00242510\, char * * env=0x00242d48) Line 73 + 0x12 C perl.exe!mainCRTStartup() Line 398 + 0xe C kernel32.dll!_BaseProcessStart@4() + 0x23
/t/cmd/for.t Overflow in Peep at cop_line 462 unsigned long + cop_file 0x0186ed8c "C:\perl-5.12.2\t\cmd\for.t" char * /t/io/fs.t overflow in peep at cop_line 416 unsigned long + cop_file 0x0193b074 "C:\perl-5.12.2\t\io\fs.t" char * overflow in peep at /t/re/pat_advanced.t cop_line 832 unsigned long + cop_file 0x01add1b4 "C:\perl-5.12.2\t\re\pat_advanced.t" char * half the re folder failed at 28KB stack size\, im not going to analyze them unless someone wants me to\, i guess they are all peeps /t/op/pack.t overflow in S_group_end\, this is interesting\, i set stack to 81920 bytes long\, not 28KB\, at 28KB this overflowed in peek cop_line 1230 unsigned long + cop_file 0x01bc671c "C:\perl-5.12.2\t\op\pack.t" char *
I killed "perl harness " when it started running cpan folder tests. I also include the way I change the c stack size for these tests. I modified perlmain.c . PLSTK is the number of pages you want the c stack to be long. I wrote the code for 32 bit windows only. If someone wants me to try something specific\, reply to the bug\, I have no other ideas for figuring out what has bad C stack recursion in perl.
#include "EXTERN.h"
#include "perl.h"
#define _WIN32_WINNT 0x0400
#include <windows.h>
#ifdef __GNUC__
/* Mingw32 defaults to globing command line
* This is inconsistent with other Win32 ports and
* seems to cause trouble with passing -DXSVERSION=\"1.6\"
* So we turn it off like this, but only when compiling
* perlmain.c: perlmainst.c is linked into the same executable
* as win32.c, which also does this, so we mustn't do it twice
* otherwise we get a multiple definition error.
*/
#ifndef PERLDLL
int _CRT_glob = 0;
#endif
#endif
DWORD FilterFunction(LPEXCEPTION_POINTERS exceptionPtr)
{
printf("1 "); // printed first
return EXCEPTION_EXECUTE_HANDLER;
}
int
main(int argc, char **argv, char **env)
{
char * stackSizeEnv = getenv("PLSTK");
int newStackSize = 0;
DWORD oldProtect;
PBYTE pPtr;
MEMORY_BASIC_INFORMATION infoRes;
MEMORY_BASIC_INFORMATION infoGuard;
MEMORY_BASIC_INFORMATION infoAlloc;
DWORD_PTR stackEnd;
DWORD_PTR stackAllocBegin;
BOOL ret;
__asm mov pPtr, esp
if(stackSizeEnv) {
newStackSize = atoi(stackSizeEnv);
}
else {
newStackSize = 7;
}
if(newStackSize) {
assert(VirtualQuery(pPtr, &infoRes,
sizeof(MEMORY_BASIC_INFORMATION)));
assert(VirtualQuery((DWORD_PTR)infoRes.AllocationBase, &infoRes,
sizeof(MEMORY_BASIC_INFORMATION)));
assert(VirtualQuery((DWORD_PTR)infoRes.AllocationBase+infoRes.RegionSize, &infoGuard,
sizeof(MEMORY_BASIC_INFORMATION)));
assert(VirtualQuery((DWORD_PTR)infoRes.AllocationBase+infoRes.RegionSize
+infoGuard.RegionSize, &infoAlloc,
sizeof(MEMORY_BASIC_INFORMATION)));
stackEnd = (DWORD_PTR)infoRes.AllocationBase+infoRes.RegionSize
+infoGuard.RegionSize+infoAlloc.RegionSize;
stackAllocBegin = stackEnd-(newStackSize*4096);
ret = VirtualAlloc(stackAllocBegin, (newStackSize*4096), MEM_COMMIT, PAGE_READWRITE);
//ret = VirtualProtect(stackAllocBegin, (newStackSize*4096),
// PAGE_READWRITE, &oldProtect);
//printf("vp ret=%u glr=%u\n", ret, GetLastError());
ret = VirtualAlloc(stackAllocBegin-(4096*2), (4096*2), MEM_COMMIT, PAGE_NOACCESS);
//printf("vp ret=%u glr=%u\n", ret, GetLastError());
//ret = VirtualProtect(stackEnd-(newStackSize*4096)-4096, 4096,
// PAGE_NOACCESS, &oldProtect);
//printf("vp ret=%u glr=%u\n", ret, GetLastError());
//while( ! (stMemBasicInfo.Protect & PAGE_GUARD)) {
// assert(VirtualQuery((DWORD_PTR)stMemBasicInfo.BaseAddress-1, &stMemBasicInfo,
// sizeof(stMemBasicInfo)));
//}
//assert(VirtualProtect(stMemBasicInfo.BaseAddress, stMemBasicInfo.RegionSize,
// PAGE_NOACCESS, &oldProtect));
//assert(VirtualQuery((DWORD_PTR)stMemBasicInfo.BaseAddress-1, &stMemBasicInfo,
// sizeof(stMemBasicInfo)));
//assert(VirtualFree((DWORD_PTR)stMemBasicInfo.AllocationBase,
// 0, MEM_RELEASE));
}
if(0) {
exit(1);
}
__try {
ret = RunPerl(argc, argv, env);
}
__except(FilterFunction(GetExceptionInformation())) {
ret = 1;
}
return ret;
}
ntdll.dll!_RtlFreeHeap@12() + 0x1763f
msvcrt.dll!_free() + 0xc3
perl512.dll!VMem::Free(void * pMem=0x0193ae34) Line 229 + 0xa C++
perl512.dll!CPerlHost::Free(void * ptr=0x0193ae34) Line 68 + 0x22 C++
perl512.dll!PerlMemFree(IPerlMem * piPerl=0x00245b6c\, void * ptr=0x0193ae34) Line 311 C++
perl512.dll!Perl_safesysfree(void * where=0x0193ae34) Line 262 + 0x1a C
perl512.dll!Perl_sv_clear(interpreter * my_perl=0x0035403c\, sv * const sv=0x0192e964) Line 5865 + 0xc C
perl512.dll!Perl_sv_free2(interpreter * my_perl=0x0035403c\, sv * const sv=0x0192e964) Line 5985 + 0xd C
perl512.dll!Perl_sv_free(interpreter * my_perl=0x0035403c\, sv * const sv=0x0192e964) Line 5962 + 0xd C
perl512.dll!Perl_peep(interpreter * my_perl=0x0035403c\, op * o=0x0193a14c) Line 8784 + 0xd C
perl512.dll!Perl_peep(interpreter * my_perl=0x0035403c\, op * o=0x019396a8) Line 8729 + 0x13 C
perl512.dll!Perl_peep(interpreter * my_perl=0x0035403c\, op * o=0x0193a75c) Line 8671 + 0x13 C
perl512.dll!Perl_peep(interpreter * my_perl=0x0035403c\, op * o=0x0193a660) Line 8671 + 0x13 C
perl512.dll!Perl_peep(interpreter * my_perl=0x0035403c\, op * o=0x0193aae0) Line 8729 + 0x13 C
perl512.dll!Perl_peep(interpreter * my_perl=0x0035403c\, op * o=0x019353d4) Line 8671 + 0x13 C
perl512.dll!Perl_peep(interpreter * my_perl=0x0035403c\, op * o=0x01935988) Line 8671 + 0x13 C
perl512.dll!Perl_peep(interpreter * my_perl=0x0035403c\, op * o=0x0193588c) Line 8671 + 0x13 C perl512.dll!Perl_peep(interpreter * my_perl=0x0035403c\, op * o=0x01936014) Line 8671 + 0x13 C perl512.dll!Perl_peep(interpreter * my_perl=0x0035403c\, op * o=0x0193a3b4) Line 8729 + 0x13 C perl512.dll!Perl_peep(interpreter * my_perl=0x0035403c\, op * o=0x01936364) Line 8671 + 0x13 C perl512.dll!Perl_peep(interpreter * my_perl=0x0035403c\, op * o=0x019362bc) Line 8671 + 0x13 C perl512.dll!Perl_peep(interpreter * my_perl=0x0035403c\, op * o=0x019366e8) Line 8729 + 0x13 C perl512.dll!Perl_peep(interpreter * my_perl=0x0035403c\, op * o=0x01931d78) Line 8671 + 0x13 C perl512.dll!Perl_peep(interpreter * my_perl=0x0035403c\, op * o=0x019322c4) Line 8671 + 0x13 C perl512.dll!Perl_peep(interpreter * my_perl=0x0035403c\, op * o=0x019328f8) Line 8671 + 0x13 C perl512.dll!Perl_peep(interpreter * my_perl=0x0035403c\, op * o=0x0193a314) Line 8729 + 0x13 C perl512.dll!Perl_peep(interpreter * my_perl=0x0035403c\, op * o=0x01932e94) Line 8671 + 0x13 C perl512.dll!Perl_peep(interpreter * my_perl=0x0035403c\, op * o=0x0192bb9c) Line 8671 + 0x13 C perl512.dll!Perl_peep(interpreter * my_perl=0x0035403c\, op * o=0x0192bdac) Line 8671 + 0x13 C perl512.dll!Perl_peep(interpreter * my_perl=0x0035403c\, op * o=0x0192bde8) Line 8671 + 0x13 C perl512.dll!Perl_peep(interpreter * my_perl=0x0035403c\, op * o=0x01933290) Line 8729 + 0x13 C perl512.dll!Perl_peep(interpreter * my_perl=0x0035403c\, op * o=0x0192c040) Line 8671 + 0x13 C perl512.dll!Perl_peep(interpreter * my_perl=0x0035403c\, op * o=0x0192cbc8) Line 8671 + 0x13 C perl512.dll!Perl_peep(interpreter * my_perl=0x0035403c\, op * o=0x0192cd34) Line 8671 + 0x13 C perl512.dll!Perl_peep(interpreter * my_perl=0x0035403c\, op * o=0x0192cdac) Line 8671 + 0x13 C perl512.dll!Perl_peep(interpreter * my_perl=0x0035403c\, op * o=0x0192c7bc) Line 8729 + 0x13 C perl512.dll!Perl_peep(interpreter * my_perl=0x0035403c\, op * o=0x019255b8) Line 8671 + 0x13 C perl512.dll!Perl_peep(interpreter * my_perl=0x0035403c\, op * o=0x01925630) Line 8671 + 0x13 C perl512.dll!Perl_peep(interpreter * my_perl=0x0035403c\, op * o=0x01924fdc) Line 8729 + 0x13 C perl512.dll!Perl_peep(interpreter * my_perl=0x0035403c\, op * o=0x01926520) Line 8722 + 0x13 C perl512.dll!Perl_peep(interpreter * my_perl=0x0035403c\, op * o=0x01921530) Line 8671 + 0x13 C perl512.dll!Perl_peep(interpreter * my_perl=0x0035403c\, op * o=0x019215a8) Line 8671 + 0x13 C perl512.dll!Perl_peep(interpreter * my_perl=0x0035403c\, op * o=0x01926b60) Line 8729 + 0x13 C perl512.dll!Perl_peep(interpreter * my_perl=0x0035403c\, op * o=0x01921c48) Line 8671 + 0x13 C perl512.dll!Perl_peep(interpreter * my_perl=0x0035403c\, op * o=0x01921cc0) Line 8671 + 0x13 C perl512.dll!Perl_peep(interpreter * my_perl=0x0035403c\, op * o=0x019217ac) Line 8729 + 0x13 C perl512.dll!Perl_peep(interpreter * my_perl=0x0035403c\, op * o=0x019222a0) Line 8671 + 0x13 C perl512.dll!Perl_peep(interpreter * my_perl=0x0035403c\, op * o=0x01922318) Line 8671 + 0x13 C perl512.dll!Perl_peep(interpreter * my_perl=0x0035403c\, op * o=0x01921ec4) Line 8729 + 0x13 C perl512.dll!Perl_peep(interpreter * my_perl=0x0035403c\, op * o=0x01922818) Line 8671 + 0x13 C perl512.dll!Perl_peep(interpreter * my_perl=0x0035403c\, op * o=0x019225bc) Line 8729 + 0x13 C perl512.dll!Perl_peep(interpreter * my_perl=0x0035403c\, op * o=0x01922f2c) Line 8671 + 0x13 C perl512.dll!Perl_peep(interpreter * my_perl=0x0035403c\, op * o=0x01922c98) Line 8729 + 0x13 C perl512.dll!Perl_peep(interpreter * my_perl=0x0035403c\, op * o=0x0191b45c) Line 8671 + 0x13 C perl512.dll!Perl_peep(interpreter * my_perl=0x0035403c\, op * o=0x0191b4d4) Line 8671 + 0x13 C perl512.dll!Perl_peep(interpreter * my_perl=0x0035403c\, op * o=0x0192251c) Line 8729 + 0x13 C perl512.dll!Perl_peep(interpreter * my_perl=0x0035403c\, op * o=0x0191c304) Line 8671 + 0x13 C perl512.dll!Perl_peep(interpreter * my_perl=0x0035403c\, op * o=0x0191c054) Line 8729 + 0x13 C perl512.dll!Perl_peep(interpreter * my_perl=0x0035403c\, op * o=0x0191c940) Line 8671 + 0x13 C perl512.dll!Perl_peep(interpreter * my_perl=0x0035403c\, op * o=0x0191c6e4) Line 8729 + 0x13 C perl512.dll!Perl_peep(interpreter * my_perl=0x0035403c\, op * o=0x01918140) Line 8671 + 0x13 C perl512.dll!Perl_peep(interpreter * my_perl=0x0035403c\, op * o=0x01917ee4) Line 8729 + 0x13 C perl512.dll!Perl_peep(interpreter * my_perl=0x0035403c\, op * o=0x0191851c) Line 8671 + 0x13 C perl512.dll!Perl_peep(interpreter * my_perl=0x0035403c\, op * o=0x0191b6d8) Line 8729 + 0x13 C perl512.dll!Perl_peep(interpreter * my_perl=0x0035403c\, op * o=0x019188bc) Line 8722 + 0x13 C perl512.dll!Perl_peep(interpreter * my_perl=0x0035403c\, op * o=0x01918930) Line 8671 + 0x13 C perl512.dll!Perl_peep(interpreter * my_perl=0x0035403c\, op * o=0x01918ea4) Line 8671 + 0x13 C perl512.dll!Perl_peep(interpreter * my_perl=0x0035403c\, op * o=0x0191902c) Line 8671 + 0x13 C perl512.dll!Perl_peep(interpreter * my_perl=0x0035403c\, op * o=0x01918b84) Line 8729 + 0x13 C perl512.dll!Perl_peep(interpreter * my_perl=0x0035403c\, op * o=0x019194a8) Line 8671 + 0x13 C perl512.dll!Perl_peep(interpreter * my_perl=0x0035403c\, op * o=0x019192a4) Line 8729 + 0x13 C perl512.dll!Perl_peep(interpreter * my_perl=0x0035403c\, op * o=0x01914e58) Line 8671 + 0x13 C perl512.dll!Perl_peep(interpreter * my_perl=0x0035403c\, op * o=0x01918ae4) Line 8729 + 0x13 C perl512.dll!Perl_peep(interpreter * my_perl=0x0035403c\, op * o=0x019152b8) Line 8671 + 0x13 C perl512.dll!Perl_peep(interpreter * my_perl=0x0035403c\, op * o=0x01915540) Line 8671 + 0x13 C perl512.dll!Perl_peep(interpreter * my_perl=0x0035403c\, op * o=0x0191594c) Line 8671 + 0x13 C perl512.dll!Perl_peep(interpreter * my_perl=0x0035403c\, op * o=0x01915988) Line 8671 + 0x13 C perl512.dll!Perl_peep(interpreter * my_perl=0x0035403c\, op * o=0x01915a38) Line 8671 + 0x13 C perl512.dll!Perl_peep(interpreter * my_perl=0x0035403c\, op * o=0x019156ec) Line 8729 + 0x13 C perl512.dll!Perl_peep(interpreter * my_perl=0x0035403c\, op * o=0x01915d1c) Line 8671 + 0x13 C perl512.dll!Perl_peep(interpreter * my_perl=0x0035403c\, op * o=0x01916048) Line 8722 + 0x13 C perl512.dll!Perl_peep(interpreter * my_perl=0x0035403c\, op * o=0x01916b28) Line 8671 + 0x13 C perl512.dll!Perl_peep(interpreter * my_perl=0x0035403c\, op * o=0x019105b8) Line 8671 + 0x13 C perl512.dll!Perl_peep(interpreter * my_perl=0x0035403c\, op * o=0x019107b0) Line 8671 + 0x13 C perl512.dll!Perl_peep(interpreter * my_perl=0x0035403c\, op * o=0x019107ec) Line 8671 + 0x13 C perl512.dll!Perl_peep(interpreter * my_perl=0x0035403c\, op * o=0x01910a5c) Line 8671 + 0x13 C perl512.dll!Perl_peep(interpreter * my_perl=0x0035403c\, op * o=0x01910c94) Line 8671 + 0x13 C perl512.dll!Perl_peep(interpreter * my_perl=0x0035403c\, op * o=0x01910bec) Line 8671 + 0x13 C perl512.dll!Perl_peep(interpreter * my_perl=0x0035403c\, op * o=0x01910f38) Line 8671 + 0x13 C perl512.dll!Perl_peep(interpreter * my_perl=0x0035403c\, op * o=0x01911170) Line 8671 + 0x13 C perl512.dll!Perl_peep(interpreter * my_perl=0x0035403c\, op * o=0x01911318) Line 8671 + 0x13 C perl512.dll!Perl_peep(interpreter * my_perl=0x0035403c\, op * o=0x019113c8) Line 8671 + 0x13 C perl512.dll!Perl_peep(interpreter * my_perl=0x0035403c\, op * o=0x01911478) Line 8671 + 0x13 C perl512.dll!Perl_peep(interpreter * my_perl=0x0035403c\, op * o=0x01911528) Line 8671 + 0x13 C perl512.dll!Perl_peep(interpreter * my_perl=0x0035403c\, op * o=0x019115d8) Line 8671 + 0x13 C perl512.dll!Perl_peep(interpreter * my_perl=0x0035403c\, op * o=0x01911948) Line 8722 + 0x13 C perl512.dll!Perl_peep(interpreter * my_perl=0x0035403c\, op * o=0x01911dd0) Line 8671 + 0x13 C perl512.dll!Perl_newPROG(interpreter * my_perl=0x0035403c\, op * o=0x01911ed8) Line 2365 + 0x17 C perl512.dll!Perl_yyparse(interpreter * my_perl=0x0035403c) Line 143 + 0x2c C perl512.dll!S_parse_body(interpreter * my_perl=0x0035403c\, char * * env=0x002428f0\, void (interpreter *)* xsinit=0x281d2260) Line 2160 + 0x9 C perl512.dll!perl_parse(interpreter * my_perl=0x0035403c\, void (interpreter *)* xsinit=0x281d2260\, int argc=2\, char * * argv=0x00242510\, char * * env=0x002428f0) Line 1605 + 0x11 C perl512.dll!RunPerl(int argc=2\, char * * argv=0x00242510\, char * * env=0x002428f0) Line 263 + 0x1a C++ perl.exe!main(int argc=2\, char * * argv=0x00242510\, char * * env=0x00242d48) Line 85 + 0x12 C perl.exe!mainCRTStartup() Line 398 + 0xe C kernel32.dll!_BaseProcessStart@4() + 0x23
perl512.dll!Perl_peep(interpreter * my_perl=0x0035403c\, op * o=0x0186e564) Line 8479 + 0x3 C perl512.dll!Perl_peep(interpreter * my_perl=0x0035403c\, op * o=0x0186e48c) Line 8729 + 0x13 C perl512.dll!Perl_peep(interpreter * my_perl=0x0035403c\, op * o=0x0186e9c0) Line 8729 + 0x13 C perl512.dll!Perl_peep(interpreter * my_perl=0x0035403c\, op * o=0x01869dc4) Line 8729 + 0x13 C perl512.dll!Perl_peep(interpreter * my_perl=0x0035403c\, op * o=0x0186a3c8) Line 8729 + 0x13 C perl512.dll!Perl_peep(interpreter * my_perl=0x0035403c\, op * o=0x0186aa74) Line 8729 + 0x13 C perl512.dll!Perl_peep(interpreter * my_perl=0x0035403c\, op * o=0x0186b104) Line 8729 + 0x13 C perl512.dll!Perl_peep(interpreter * my_perl=0x0035403c\, op * o=0x0186b694) Line 8729 + 0x13 C perl512.dll!Perl_peep(interpreter * my_perl=0x0035403c\, op * o=0x01866864) Line 8729 + 0x13 C perl512.dll!Perl_peep(interpreter * my_perl=0x0035403c\, op * o=0x01866e68) Line 8729 + 0x13 C perl512.dll!Perl_peep(interpreter * my_perl=0x0035403c\, op * o=0x0186746c) Line 8729 + 0x13 C perl512.dll!Perl_peep(interpreter * my_perl=0x0035403c\, op * o=0x01867b18) Line 8729 + 0x13 C perl512.dll!Perl_peep(interpreter * my_perl=0x0035403c\, op * o=0x018681a8) Line 8729 + 0x13 C perl512.dll!Perl_peep(interpreter * my_perl=0x0035403c\, op * o=0x01862648) Line 8729 + 0x13 C perl512.dll!Perl_peep(interpreter * my_perl=0x0035403c\, op * o=0x01862bbc) Line 8729 + 0x13 C perl512.dll!Perl_peep(interpreter * my_perl=0x0035403c\, op * o=0x018631a4) Line 8729 + 0x13 C perl512.dll!Perl_peep(interpreter * my_perl=0x0035403c\, op * o=0x0186378c) Line 8729 + 0x13 C perl512.dll!Perl_peep(interpreter * my_perl=0x0035403c\, op * o=0x01863e1c) Line 8729 + 0x13 C perl512.dll!Perl_peep(interpreter * my_perl=0x0035403c\, op * o=0x0185f23c) Line 8729 + 0x13 C perl512.dll!Perl_peep(interpreter * my_perl=0x0035403c\, op * o=0x0185f7b0) Line 8729 + 0x13 C perl512.dll!Perl_peep(interpreter * my_perl=0x0035403c\, op * o=0x0185fd08) Line 8729 + 0x13 C perl512.dll!Perl_peep(interpreter * my_perl=0x0035403c\, op * o=0x018602f0) Line 8729 + 0x13 C perl512.dll!Perl_peep(interpreter * my_perl=0x0035403c\, op * o=0x018608d8) Line 8729 + 0x13 C perl512.dll!Perl_peep(interpreter * my_perl=0x0035403c\, op * o=0x01860f68) Line 8729 + 0x13 C perl512.dll!Perl_peep(interpreter * my_perl=0x0035403c\, op * o=0x0185c368) Line 8729 + 0x13 C perl512.dll!Perl_peep(interpreter * my_perl=0x0035403c\, op * o=0x0185c8dc) Line 8729 + 0x13 C perl512.dll!Perl_peep(interpreter * my_perl=0x0035403c\, op * o=0x0185ce34) Line 8729 + 0x13 C perl512.dll!Perl_peep(interpreter * my_perl=0x0035403c\, op * o=0x0185d41c) Line 8729 + 0x13 C perl512.dll!Perl_peep(interpreter * my_perl=0x0035403c\, op * o=0x0185da04) Line 8729 + 0x13 C perl512.dll!Perl_peep(interpreter * my_perl=0x0035403c\, op * o=0x0185759c) Line 8729 + 0x13 C perl512.dll!Perl_peep(interpreter * my_perl=0x0035403c\, op * o=0x01857c10) Line 8729 + 0x13 C perl512.dll!Perl_peep(interpreter * my_perl=0x0035403c\, op * o=0x01858184) Line 8729 + 0x13 C perl512.dll!Perl_peep(interpreter * my_perl=0x0035403c\, op * o=0x018586dc) Line 8729 + 0x13 C perl512.dll!Perl_peep(interpreter * my_perl=0x0035403c\, op * o=0x01858cc4) Line 8729 + 0x13 C perl512.dll!Perl_peep(interpreter * my_perl=0x0035403c\, op * o=0x018592ac) Line 8729 + 0x13 C perl512.dll!Perl_peep(interpreter * my_perl=0x0035403c\, op * o=0x01854958) Line 8729 + 0x13 C perl512.dll!Perl_peep(interpreter * my_perl=0x0035403c\, op * o=0x01854fcc) Line 8729 + 0x13 C perl512.dll!Perl_peep(interpreter * my_perl=0x0035403c\, op * o=0x01855540) Line 8729 + 0x13 C perl512.dll!Perl_peep(interpreter * my_perl=0x0035403c\, op * o=0x01855a98) Line 8729 + 0x13 C perl512.dll!Perl_peep(interpreter * my_perl=0x0035403c\, op * o=0x0185602c) Line 8729 + 0x13 C perl512.dll!Perl_peep(interpreter * my_perl=0x0035403c\, op * o=0x018520a8) Line 8729 + 0x13 C perl512.dll!Perl_peep(interpreter * my_perl=0x0035403c\, op * o=0x01852700) Line 8729 + 0x13 C perl512.dll!Perl_peep(interpreter * my_perl=0x0035403c\, op * o=0x01852d3c) Line 8729 + 0x13 C perl512.dll!Perl_peep(interpreter * my_perl=0x0035403c\, op * o=0x01853278) Line 8729 + 0x13 C perl512.dll!Perl_peep(interpreter * my_perl=0x0035403c\, op * o=0x01853798) Line 8729 + 0x13 C perl512.dll!Perl_peep(interpreter * my_perl=0x0035403c\, op * o=0x01853d40) Line 8729 + 0x13 C perl512.dll!Perl_peep(interpreter * my_perl=0x0035403c\, op * o=0x0184d384) Line 8729 + 0x13 C perl512.dll!Perl_peep(interpreter * my_perl=0x0035403c\, op * o=0x0184d9d4) Line 8729 + 0x13 C perl512.dll!Perl_peep(interpreter * my_perl=0x0035403c\, op * o=0x0184e008) Line 8729 + 0x13 C perl512.dll!Perl_peep(interpreter * my_perl=0x0035403c\, op * o=0x0184e53c) Line 8729 + 0x13 C perl512.dll!Perl_peep(interpreter * my_perl=0x0035403c\, op * o=0x0184ea54) Line 8729 + 0x13 C perl512.dll!Perl_peep(interpreter * my_perl=0x0035403c\, op * o=0x01849280) Line 8729 + 0x13 C perl512.dll!Perl_peep(interpreter * my_perl=0x0035403c\, op * o=0x018497d4) Line 8729 + 0x13 C perl512.dll!Perl_peep(interpreter * my_perl=0x0035403c\, op * o=0x01849dec) Line 8729 + 0x13 C perl512.dll!Perl_peep(interpreter * my_perl=0x0035403c\, op * o=0x0184a3e8) Line 8729 + 0x13 C perl512.dll!Perl_peep(interpreter * my_perl=0x0035403c\, op * o=0x0184a8e4) Line 8729 + 0x13 C perl512.dll!Perl_peep(interpreter * my_perl=0x0035403c\, op * o=0x0184adc4) Line 8729 + 0x13 C perl512.dll!Perl_peep(interpreter * my_perl=0x0035403c\, op * o=0x0184645c) Line 8729 + 0x13 C perl512.dll!Perl_peep(interpreter * my_perl=0x0035403c\, op * o=0x01846a28) Line 8729 + 0x13 C perl512.dll!Perl_peep(interpreter * my_perl=0x0035403c\, op * o=0x0184709c) Line 8729 + 0x13 C perl512.dll!Perl_peep(interpreter * my_perl=0x0035403c\, op * o=0x018476f4) Line 8729 + 0x13 C perl512.dll!Perl_peep(interpreter * my_perl=0x0035403c\, op * o=0x01847c4c) Line 8729 + 0x13 C perl512.dll!Perl_peep(interpreter * my_perl=0x0035403c\, op * o=0x01848188) Line 8729 + 0x13 C perl512.dll!Perl_peep(interpreter * my_perl=0x0035403c\, op * o=0x0184325c) Line 8729 + 0x13 C perl512.dll!Perl_peep(interpreter * my_perl=0x0035403c\, op * o=0x018437d4) Line 8729 + 0x13 C perl512.dll!Perl_peep(interpreter * my_perl=0x0035403c\, op * o=0x01843e10) Line 8729 + 0x13 C perl512.dll!Perl_peep(interpreter * my_perl=0x0035403c\, op * o=0x01844430) Line 8729 + 0x13 C perl512.dll!Perl_peep(interpreter * my_perl=0x0035403c\, op * o=0x01844950) Line 8729 + 0x13 C perl512.dll!Perl_peep(interpreter * my_perl=0x0035403c\, op * o=0x0183f334) Line 8722 + 0x13 C perl512.dll!Perl_peep(interpreter * my_perl=0x0035403c\, op * o=0x0183f514) Line 8729 + 0x13 C perl512.dll!Perl_peep(interpreter * my_perl=0x0035403c\, op * o=0x0183f198) Line 8729 + 0x13 C perl512.dll!Perl_peep(interpreter * my_perl=0x0035403c\, op * o=0x0183fe08) Line 8722 + 0x13 C perl512.dll!Perl_peep(interpreter * my_perl=0x0035403c\, op * o=0x018400a8) Line 8729 + 0x13 C perl512.dll!Perl_peep(interpreter * my_perl=0x0035403c\, op * o=0x0184051c) Line 8722 + 0x13 C perl512.dll!Perl_peep(interpreter * my_perl=0x0035403c\, op * o=0x018406c8) Line 8729 + 0x13 C perl512.dll!Perl_peep(interpreter * my_perl=0x0035403c\, op * o=0x0183a384) Line 8722 + 0x13 C perl512.dll!Perl_peep(interpreter * my_perl=0x0035403c\, op * o=0x0183a530) Line 8729 + 0x13 C perl512.dll!Perl_peep(interpreter * my_perl=0x0035403c\, op * o=0x0183aaa4) Line 8722 + 0x13 C perl512.dll!Perl_peep(interpreter * my_perl=0x0035403c\, op * o=0x0183ad30) Line 8722 + 0x13 C perl512.dll!Perl_peep(interpreter * my_perl=0x0035403c\, op * o=0x0183afbc) Line 8722 + 0x13 C perl512.dll!Perl_peep(interpreter * my_perl=0x0035403c\, op * o=0x0183b658) Line 8729 + 0x13 C perl512.dll!Perl_peep(interpreter * my_perl=0x0035403c\, op * o=0x0183b95c) Line 8722 + 0x13 C perl512.dll!Perl_peep(interpreter * my_perl=0x0035403c\, op * o=0x0183bd58) Line 8729 + 0x13 C perl512.dll!Perl_peep(interpreter * my_perl=0x0035403c\, op * o=0x01835b84) Line 8729 + 0x13 C perl512.dll!Perl_peep(interpreter * my_perl=0x0035403c\, op * o=0x01835e8c) Line 8722 + 0x13 C perl512.dll!Perl_peep(interpreter * my_perl=0x0035403c\, op * o=0x01836264) Line 8729 + 0x13 C perl512.dll!Perl_peep(interpreter * my_perl=0x0035403c\, op * o=0x01836718) Line 8722 + 0x13 C perl512.dll!Perl_peep(interpreter * my_perl=0x0035403c\, op * o=0x01836a30) Line 8735 + 0x13 C perl512.dll!Perl_peep(interpreter * my_perl=0x0035403c\, op * o=0x01836e00) Line 8722 + 0x13 C perl512.dll!Perl_peep(interpreter * my_perl=0x0035403c\, op * o=0x01837700) Line 8729 + 0x13 C perl512.dll!Perl_newPROG(interpreter * my_perl=0x0035403c\, op * o=0x01837a18) Line 2365 + 0x17 C perl512.dll!Perl_yyparse(interpreter * my_perl=0x0035403c) Line 143 + 0x2c C perl512.dll!S_parse_body(interpreter * my_perl=0x0035403c\, char * * env=0x002428f8\, void (interpreter *)* xsinit=0x281d2260) Line 2160 + 0x9 C perl512.dll!perl_parse(interpreter * my_perl=0x0035403c\, void (interpreter *)* xsinit=0x281d2260\, int argc=2\, char * * argv=0x00242510\, char * * env=0x002428f8) Line 1605 + 0x11 C perl512.dll!RunPerl(int argc=2\, char * * argv=0x00242510\, char * * env=0x002428f8) Line 263 + 0x1a C++ perl.exe!main(int argc=2\, char * * argv=0x00242510\, char * * env=0x00242d48) Line 85 + 0x12 C perl.exe!mainCRTStartup() Line 398 + 0xe C kernel32.dll!_BaseProcessStart@4() + 0x23
this bug sounds similar to https://rt-archive.perl.org/perl5/Ticket/Display.html?id=89356
Hi\,
I cannot reproduce the issue in S_finalize_op on blead[1]. It is possible that it has been "fixed" somehow (or we got different architectures).
On the other hand\, I can reproduce the crash caused by:
perl -e'eval "sub{".q"$a+"x shift . "}"' 500000
I have attached a prototype patch that solves the problem (at least for me). With the patch applied\, I can run it with up to at least 2M without it crashing - I have not tested beyond that because perl starts to use >= 4GB of RAM around the 2M mark. A more memory friendly test case is definitely welcome. :)
For the reviewer(s): the patch is much easier to read by ignoring space changes[2]. It re-uses the basic principe of the DEFER marco used in the peephole optimizer. The "major" difference is that it uses a fixed-size stack rather than a fixed-size queue. The size of the queue did not seem to matter a lot (even with MAX_DEFERRED reduced to 2 was the crash avoided in original test case).
The test suite showed no regression\, perl was configured with: ./Configure -des -Dusedevel
~Niels
[1] I have been using code suggested by Dave Mitchell (rewritten as a perl one-liner)
./perl -e 'my $code = q[my $i = 0; if ($i) { print } ] . "\n";' -e '$code .= q[ elsif ($i) { print } ] . "\n" for 1..$ARGV[0];' -e 'eval $code' 10000
[2] Compare
$ git diff --ignore-all-space --stat op.c | 37 [...] 1 file changed\, 34 insertions(+)\, 3 deletions(-)
versus.
$ git diff --stat op.c | 141 [...] 1 file changed\, 86 insertions(+)\, 55 deletions(-)
On Wed Jul 17 14:29:33 2013\, niels@thykier.net wrote:
Hi\,
I cannot reproduce the issue in S_finalize_op on blead[1]. It is possible that it has been "fixed" somehow (or we got different architectures).
On the other hand\, I can reproduce the crash caused by:
perl -e'eval "sub{".q"$a+"x shift . "}"' 500000
I'll update this ticket for 5.19.2. All experiments were done with a intentionally C stack reduced perl\, the C stack is fixed at 20 KB\, the perl is -O1\, so the parameters in the callstacks may be/are garbage.
Perl_scalarvoid on stk.pl script above is still a problem. I attach a new callstack.
The davem script above is still a problem. New callstack attached.
The Father C rep operator on add operator then eval is still a problem. Callstack attached.
I also attach a newer perlmain.c that I used to reduce the C stack's size\, the original c stack shrinking code above was more hackish and only worked on DEBUGGING perl.
-- bulk88 ~ bulk88 at hotmail.com
perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x00930a80) Line 1233 + 0x3 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f6b1ec) Line 1505 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f6b1cc) Line 1528 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f6b14c) Line 1505 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f6b12c) Line 1528 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f6b0ac) Line 1505 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f6b08c) Line 1528 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f6b00c) Line 1505 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f6afec) Line 1528 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f6af6c) Line 1505 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f6af4c) Line 1528 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f6aecc) Line 1505 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f6aeac) Line 1528 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f6ae2c) Line 1505 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f6ae0c) Line 1528 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f6ad8c) Line 1505 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f6ad6c) Line 1528 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f6acec) Line 1505 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f6accc) Line 1528 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f6ac4c) Line 1505 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f6ac2c) Line 1528 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f6abac) Line 1505 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f6ab8c) Line 1528 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f6ab0c) Line 1505 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f6aaec) Line 1528 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f6aa6c) Line 1505 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f6aa4c) Line 1528 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f6a9cc) Line 1505 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f6a9ac) Line 1528 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f6f5f4) Line 1505 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f6f5d4) Line 1528 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f6f554) Line 1505 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f6f534) Line 1528 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f6f4b4) Line 1505 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f6f494) Line 1528 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f6f414) Line 1505 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f6f3f4) Line 1528 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f6f374) Line 1505 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f6f354) Line 1528 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f6f2d4) Line 1505 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f6f2b4) Line 1528 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f6f234) Line 1505 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f6f214) Line 1528 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f6f194) Line 1505 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f6f174) Line 1528 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f6f0f4) Line 1505 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f6f0d4) Line 1528 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f6f054) Line 1505 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f6f034) Line 1528 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f6efb4) Line 1505 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f6ef94) Line 1528 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f6ef14) Line 1505 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f6eef4) Line 1528 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f6ee74) Line 1505 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f6ee54) Line 1528 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f6edd4) Line 1505 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f6edb4) Line 1528 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f6ed34) Line 1505 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f6ed14) Line 1528 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f6ec94) Line 1505 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f6ec74) Line 1528 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f6ebf4) Line 1505 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f6ebd4) Line 1528 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f6eb54) Line 1505 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f6eb34) Line 1528 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f6eab4) Line 1505 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f6ea94) Line 1528 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f6ea14) Line 1505 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f6e9f4) Line 1528 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f6e974) Line 1505 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f6e954) Line 1528 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f6e8d4) Line 1505 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f6e8b4) Line 1528 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f6e834) Line 1505 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f6e814) Line 1528 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f6e794) Line 1505 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f6e774) Line 1528 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f6e6f4) Line 1505 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f6e6d4) Line 1528 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f6e654) Line 1505 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f6e634) Line 1528 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f6e5b4) Line 1505 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f6e594) Line 1528 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f6e514) Line 1505 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f6e4f4) Line 1528 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f6e474) Line 1505 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f6e454) Line 1528 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f6e3d4) Line 1505 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f6e3b4) Line 1528 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f6e334) Line 1505 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f6e314) Line 1528 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f6e294) Line 1505 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f6e274) Line 1528 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f6e1f4) Line 1505 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f6e1d4) Line 1528 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f6e154) Line 1505 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f6e134) Line 1528 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f6e0b4) Line 1505 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f6e094) Line 1528 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f6e014) Line 1505 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f6dff4) Line 1528 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f6df74) Line 1505 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f6df54) Line 1528 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f6ded4) Line 1505 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f6deb4) Line 1528 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f6de34) Line 1505 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f6de14) Line 1528 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f6dd94) Line 1505 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f6dd74) Line 1528 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f6dcf4) Line 1505 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f6dcd4) Line 1528 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f6dc54) Line 1505 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f6dc34) Line 1528 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f6dbb4) Line 1505 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f6db94) Line 1528 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f6db14) Line 1505 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f6daf4) Line 1528 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f6da74) Line 1505 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f6da54) Line 1528 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f6d9d4) Line 1505 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f6d9b4) Line 1528 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f6d934) Line 1505 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f6d914) Line 1528 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f6d894) Line 1505 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f6d874) Line 1528 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f6d7f4) Line 1505 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f6d7d4) Line 1528 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f6d754) Line 1505 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f6d734) Line 1528 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f6d6b4) Line 1505 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f6d694) Line 1528 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f722dc) Line 1505 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f722bc) Line 1528 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f7223c) Line 1505 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f7221c) Line 1528 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f7219c) Line 1505 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f7217c) Line 1528 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f720fc) Line 1505 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f720dc) Line 1528 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f7205c) Line 1505 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f7203c) Line 1528 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f71fbc) Line 1505 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f71f9c) Line 1528 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f71f1c) Line 1505 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f71efc) Line 1528 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f71e7c) Line 1505 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f71e5c) Line 1528 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f71ddc) Line 1505 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f71dbc) Line 1528 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f71d3c) Line 1505 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f71d1c) Line 1528 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f71c9c) Line 1505 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f71c7c) Line 1528 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f71bfc) Line 1505 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f71bdc) Line 1528 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f71b5c) Line 1505 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f71b3c) Line 1528 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f71abc) Line 1505 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f71a9c) Line 1528 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f71a1c) Line 1505 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f719fc) Line 1528 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f7197c) Line 1505 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f7195c) Line 1528 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f718dc) Line 1505 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f718bc) Line 1528 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f7183c) Line 1505 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f7181c) Line 1528 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f7179c) Line 1505 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f7177c) Line 1528 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f716fc) Line 1505 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f716dc) Line 1528 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f7165c) Line 1505 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f7163c) Line 1528 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f715bc) Line 1505 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f7159c) Line 1528 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f7151c) Line 1505 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f714fc) Line 1528 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f7147c) Line 1505 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f7145c) Line 1528 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f713dc) Line 1505 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f713bc) Line 1528 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f7133c) Line 1505 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f7131c) Line 1528 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f7129c) Line 1505 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f7127c) Line 1528 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f711fc) Line 1505 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f711dc) Line 1528 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f7115c) Line 1505 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f7113c) Line 1528 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f710bc) Line 1505 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f7109c) Line 1528 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f7101c) Line 1505 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f70ffc) Line 1528 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f70f7c) Line 1505 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f70f5c) Line 1528 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f70edc) Line 1505 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f70ebc) Line 1528 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f70e3c) Line 1505 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f70e1c) Line 1528 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f70d9c) Line 1505 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f70d7c) Line 1528 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f70cfc) Line 1505 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f70cdc) Line 1528 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f70c5c) Line 1505 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f70c3c) Line 1528 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f70bbc) Line 1505 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f70b9c) Line 1528 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f70b1c) Line 1505 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f70afc) Line 1528 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f70a7c) Line 1505 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f70a5c) Line 1528 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f709dc) Line 1505 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f709bc) Line 1528 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f7093c) Line 1505 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f7091c) Line 1528 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f7089c) Line 1505 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f7087c) Line 1528 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f707fc) Line 1505 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f707dc) Line 1528 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f7075c) Line 1505 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f7073c) Line 1528 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f706bc) Line 1505 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f7069c) Line 1528 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f7061c) Line 1505 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f705fc) Line 1528 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f7057c) Line 1505 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f7055c) Line 1528 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f704dc) Line 1505 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f704bc) Line 1528 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f7043c) Line 1505 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f7041c) Line 1528 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f7039c) Line 1505 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f7037c) Line 1528 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f74fc4) Line 1505 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f74fa4) Line 1528 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f74f24) Line 1505 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f74f04) Line 1528 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f74e84) Line 1505 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f74e64) Line 1528 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f74de4) Line 1505 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f74dc4) Line 1528 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f74d44) Line 1505 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f74d24) Line 1528 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f74ca4) Line 1505 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f74c84) Line 1528 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f74c04) Line 1505 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f74be4) Line 1528 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f74b64) Line 1505 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f74b44) Line 1528 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f74ac4) Line 1505 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f74aa4) Line 1528 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f74a24) Line 1505 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f74a04) Line 1528 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f74984) Line 1505 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f74964) Line 1528 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f748e4) Line 1505 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f748c4) Line 1528 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f74844) Line 1505 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f74824) Line 1528 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f747a4) Line 1505 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f74784) Line 1528 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f74704) Line 1505 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f746e4) Line 1528 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f74664) Line 1505 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f74644) Line 1528 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f745c4) Line 1505 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f745a4) Line 1528 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f74524) Line 1505 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f74504) Line 1528 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f74484) Line 1505 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f74464) Line 1528 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f743e4) Line 1505 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f743c4) Line 1528 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f74344) Line 1505 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f74324) Line 1528 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f742a4) Line 1505 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f74284) Line 1528 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f74204) Line 1505 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f741e4) Line 1528 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f74164) Line 1505 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f74144) Line 1528 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f740c4) Line 1505 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f740a4) Line 1528 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f74024) Line 1505 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f74004) Line 1528 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f73f84) Line 1505 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f73f64) Line 1528 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f73ee4) Line 1505 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f73ec4) Line 1528 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f73e44) Line 1505 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f73e24) Line 1528 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f73da4) Line 1505 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f73d84) Line 1528 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f73d04) Line 1505 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f73ce4) Line 1528 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f73c64) Line 1505 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f73c44) Line 1528 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f73bc4) Line 1505 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f73ba4) Line 1528 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f73b24) Line 1505 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f73b04) Line 1528 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f73a84) Line 1505 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f73a64) Line 1528 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f739e4) Line 1505 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f739c4) Line 1528 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f73944) Line 1505 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f73924) Line 1528 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f738a4) Line 1505 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f73884) Line 1528 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f73804) Line 1505 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f737e4) Line 1528 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f73764) Line 1505 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f73744) Line 1528 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f736c4) Line 1505 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f736a4) Line 1528 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f73624) Line 1505 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f73604) Line 1528 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f73584) Line 1505 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f73564) Line 1528 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f734e4) Line 1505 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f734c4) Line 1528 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f73444) Line 1505 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f73424) Line 1528 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f733a4) Line 1505 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f73384) Line 1528 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f73304) Line 1505 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f732e4) Line 1528 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f73264) Line 1505 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f73244) Line 1528 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f731c4) Line 1505 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f731a4) Line 1528 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f73124) Line 1505 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f73104) Line 1528 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f73084) Line 1505 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f73064) Line 1528 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f77cb4) Line 1505 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f77c94) Line 1528 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f77c14) Line 1505 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f77bf4) Line 1528 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f77b74) Line 1505 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f77b54) Line 1528 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f77ad4) Line 1505 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f77ab4) Line 1528 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f77a34) Line 1505 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f77a14) Line 1528 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f77994) Line 1505 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f77974) Line 1528 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f778f4) Line 1505 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f778d4) Line 1528 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f77854) Line 1505 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f77834) Line 1528 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f777b4) Line 1505 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f77794) Line 1528 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f77714) Line 1505 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f776f4) Line 1528 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f77674) Line 1505 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f77654) Line 1528 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f775d4) Line 1505 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f775b4) Line 1528 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f77534) Line 1505 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f77514) Line 1528 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f77494) Line 1505 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f77474) Line 1528 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f773f4) Line 1505 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f773d4) Line 1528 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f77354) Line 1505 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f77334) Line 1528 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f772b4) Line 1505 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f77294) Line 1528 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f77214) Line 1505 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f771f4) Line 1528 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f77174) Line 1505 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f77154) Line 1528 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f770d4) Line 1505 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f770b4) Line 1528 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f77034) Line 1505 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f77014) Line 1528 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f76f94) Line 1505 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f76f74) Line 1528 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f76ef4) Line 1505 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f76ed4) Line 1528 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f76e54) Line 1505 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f76e34) Line 1528 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f76db4) Line 1505 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f76d94) Line 1528 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f76d14) Line 1505 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f76cf4) Line 1528 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f76c74) Line 1505 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f76c54) Line 1528 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f76bd4) Line 1505 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f76bb4) Line 1528 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f76b34) Line 1505 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f76b14) Line 1528 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f76a94) Line 1505 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f76a74) Line 1528 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f769f4) Line 1505 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f769d4) Line 1528 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f76954) Line 1505 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f76934) Line 1528 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f768b4) Line 1505 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f76894) Line 1528 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f76814) Line 1505 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f767f4) Line 1528 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f76774) Line 1505 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f76754) Line 1528 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f766d4) Line 1505 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f766b4) Line 1528 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f76634) Line 1505 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f76614) Line 1528 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f76594) Line 1505 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f76574) Line 1528 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f764f4) Line 1505 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f764d4) Line 1528 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f76454) Line 1505 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f76434) Line 1528 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f763b4) Line 1505 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f76394) Line 1528 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f76314) Line 1505 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f762f4) Line 1528 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f76274) Line 1505 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f76254) Line 1528 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f761d4) Line 1505 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f761b4) Line 1528 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f76134) Line 1505 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f76114) Line 1528 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f76094) Line 1505 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f76074) Line 1528 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f75ff4) Line 1505 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f75fd4) Line 1528 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f75f54) Line 1505 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f75f34) Line 1528 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f75eb4) Line 1505 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f75e94) Line 1528 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f75e14) Line 1505 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f75df4) Line 1528 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f75d74) Line 1505 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f75d54) Line 1528 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f7a99c) Line 1505 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f7a97c) Line 1528 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f7a8fc) Line 1505 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f7a8dc) Line 1528 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f7a85c) Line 1505 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f7a83c) Line 1528 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f7a7bc) Line 1505 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f7a79c) Line 1528 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f7a71c) Line 1505 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f7a6fc) Line 1528 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f7a67c) Line 1505 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f7a65c) Line 1528 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f7a5dc) Line 1505 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f7a5bc) Line 1528 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f7a53c) Line 1505 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f7a51c) Line 1528 + 0x9 C perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f7a4f8) Line 1505 + 0x9 C
perl519.dll!Perl_scalarvoid(interpreter * my_perl=0x003657e4\, op * o=0x01f7a4d8) Line 1528 + 0x9 C perl519.dll!S_scalarseq(interpreter * my_perl=0x0012b000\, op * o=0x000001ff) Line 1646 + 0x7 C perl519.dll!Perl_block_end(interpreter * my_perl=0x00000005\, long floor=0x000000ab\, op * seq=0x000001ff) Line 2902 + 0xd C perl519.dll!Perl_yyparse(interpreter * my_perl=0x003657e4\, int gramtype=0x00000001) Line 209 + 0xd C perl519.dll!S_doeval(interpreter * my_perl=0x00000005\, int gimme=0x00000002\, cv * outside=0x000001ff\, unsigned long seq=0x0000001c\, hv * hh=0x00000000) Line 3490 C perl519.dll!Perl_pp_require(interpreter * my_perl=0x009045bc) Line 4095 + 0x21 C perl519.dll!Perl_runops_standard(interpreter * my_perl=0x003657e4) Line 42 + 0x4 C perl519.dll!Perl_call_sv(interpreter * my_perl=0x00000000\, sv * sv=0x0012b0b0\, volatile long flags=0x28021eb4) Line 2809 + 0xc C perl519.dll!Perl_call_list(interpreter * my_perl=0x003657e4\, long oldscope=0x00000002\, av * paramList=0x008fe704) Line 4900 C perl519.dll!S_process_special_blocks(interpreter * my_perl=0x00070023\, long floor=0x000001ff\, const char * const fullname=0x0036e684\, gv * const gv=0x008fe784\, cv * const cv=0x008fe724) Line 7741 C perl519.dll!Perl_newATTRSUB_flags(interpreter * my_perl=0x000001ff\, long floor=0x00000026\, op * o=0x009076f0\, op * proto=0x00000000\, void * attrs=0x2802a49e\, op * block=0x0036e4e0\, unsigned long flags=0x01000000) Line 7703 + 0x13 C perl519.dll!Perl_newATTRSUB(interpreter * my_perl=0x003657e4\, long floor=0x00000026\, op * o=0x009076f0\, op * proto=0x00000000\, op * attrs=0x00000000\, op * block=0x0036e4e0) Line 7376 + 0x19 C perl519.dll!Perl_yyparse(interpreter * my_perl=0x003657e4\, int gramtype=0x009076f0) Line 364 + 0x25 C perl519.dll!S_parse_body(interpreter * my_perl=0x000001ff\, char * * env=0x003628c0\, void (interpreter *)* xsinit=0x280af764) Line 2337 + 0xd C perl519.dll!perl_parse(interpreter * my_perl=0x003657e4\, void (interpreter *)* xsinit=0x280af764\, int argc=0x00000002\, char * * argv=0x00362478\, char * * env=0x003628c0) Line 1650 C perl519.dll!RunPerl(int argc=0x00000002\, char * * argv=0x01362478\, char * * env=0x00362de8) Line 263 + 0x10 C perl.exe!main(int argc=0x00000002\, char * * argv=0x00362478\, char * * env=0x00362de8) Line 88 + 0x12 C perl.exe!mainCRTStartup() Line 398 + 0xe C kernel32.dll!_BaseProcessStart@4() + 0x23
#include "EXTERN.h"
#include "perl.h"
#ifdef __GNUC__
/* Mingw32 defaults to globing command line
* This is inconsistent with other Win32 ports and
* seems to cause trouble with passing -DXSVERSION=\"1.6\"
* So we turn it off like this, but only when compiling
* perlmain.c: perlmainst.c is linked into the same executable
* as win32.c, which also does this, so we mustn't do it twice
* otherwise we get a multiple definition error.
*/
#ifndef PERLDLL
int _CRT_glob = 0;
#endif
#endif
DWORD FilterFunction(LPEXCEPTION_POINTERS exceptionPtr)
{
printf("1 "); // printed first
return EXCEPTION_EXECUTE_HANDLER;
}
int
main(int argc, char **argv, char **env)
{
char * stackSizeEnv = getenv("PLSTK");
int newStackSize = 0;
DWORD oldProtect;
PBYTE pPtr;
MEMORY_BASIC_INFORMATION infoRes;
MEMORY_BASIC_INFORMATION infoGuard;
MEMORY_BASIC_INFORMATION infoAlloc;
DWORD_PTR stackEnd;
DWORD_PTR stackAllocBegin;
BOOL ret;
__asm mov pPtr, esp
if(stackSizeEnv) {
newStackSize = atoi(stackSizeEnv);
}
else {
newStackSize = 5;
}
if(newStackSize) {
ret = VirtualQuery(pPtr, &infoRes,
sizeof(MEMORY_BASIC_INFORMATION));
assert(ret);
ret = VirtualQuery((DWORD_PTR)infoRes.AllocationBase, &infoRes,
sizeof(MEMORY_BASIC_INFORMATION));
assert(ret);
ret = VirtualQuery((DWORD_PTR)infoRes.AllocationBase+infoRes.RegionSize, &infoGuard,
sizeof(MEMORY_BASIC_INFORMATION));
assert(ret);
ret = VirtualQuery((DWORD_PTR)infoRes.AllocationBase
+infoRes.RegionSize
+infoGuard.RegionSize
,&infoAlloc, sizeof(MEMORY_BASIC_INFORMATION));
assert(ret);
stackEnd = (DWORD_PTR)infoRes.AllocationBase+infoRes.RegionSize
+infoGuard.RegionSize+infoAlloc.RegionSize;
stackAllocBegin = stackEnd-(newStackSize*4096);
ret = VirtualAlloc(stackAllocBegin, (newStackSize*4096), MEM_COMMIT, PAGE_READWRITE);
//ret = VirtualProtect(stackAllocBegin, (newStackSize*4096),
// PAGE_READWRITE, &oldProtect);
printf("vp ret=%u glr=%u\n", ret, GetLastError());
ret = VirtualAlloc(stackAllocBegin-(4096*2), (4096*2), MEM_COMMIT, PAGE_NOACCESS);
printf("vp ret=%u glr=%u\n", ret, GetLastError());
//ret = VirtualProtect(stackEnd-(newStackSize*4096)-4096, 4096,
// PAGE_NOACCESS, &oldProtect);
//printf("vp ret=%u glr=%u\n", ret, GetLastError());
//while( ! (stMemBasicInfo.Protect & PAGE_GUARD)) {
// assert(VirtualQuery((DWORD_PTR)stMemBasicInfo.BaseAddress-1, &stMemBasicInfo,
// sizeof(stMemBasicInfo)));
//}
//assert(VirtualProtect(stMemBasicInfo.BaseAddress, stMemBasicInfo.RegionSize,
// PAGE_NOACCESS, &oldProtect));
//assert(VirtualQuery((DWORD_PTR)stMemBasicInfo.BaseAddress-1, &stMemBasicInfo,
// sizeof(stMemBasicInfo)));
//assert(VirtualFree((DWORD_PTR)stMemBasicInfo.AllocationBase,
// 0, MEM_RELEASE));
}
if(0) {
exit(1);
}
__try {
ret = RunPerl(argc, argv, env);
}
__except(FilterFunction(GetExceptionInformation())) {
ret = 1;
}
return ret;
}
[rep op on evaled add callstack.txt](https://rt-archive.perl.org/perl5/Ticket/Attachment/1235621/643139/rep op on evaled add callstack.txt)
RT web interface lost the attachment. Adding a missing one.
-- bulk88 ~ bulk88 at hotmail.com
On Wed Jul 17 19:10:02 2013\, bulk88 wrote:
RT web interface lost the attachment. Adding a missing one.
Ok\, I uploaded a 0 byte file before. Trying again.
-- bulk88 ~ bulk88 at hotmail.com
n is at 5000
perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00958b84) Line 1696 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00958ba0) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00958ae8) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c069c4) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c069a4) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c06924) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c06904) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c06884) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c06864) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c067e4) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c067c4) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c06744) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c06724) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c066a4) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c06684) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c06604) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c065e4) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c06564) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c06544) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c064c4) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c064a4) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c06424) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c06404) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c06384) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c06364) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c062e4) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c062c4) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c06244) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c06224) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c061a4) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c06184) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c06104) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c060e4) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c06064) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c06044) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c0a95c) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c0a93c) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c0a8bc) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c0a89c) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c0a81c) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c0a7fc) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c0a77c) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c0a75c) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c0a6dc) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c0a6bc) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c0a63c) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c0a61c) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c0a59c) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c0a57c) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c0a4fc) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c0a4dc) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c0a45c) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c0a43c) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c0a3bc) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c0a39c) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c0a31c) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c0a2fc) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c0a27c) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c0a25c) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c0a1dc) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c0a1bc) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c0a13c) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c0a11c) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c0a09c) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c0a07c) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c09ffc) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c09fdc) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c09f5c) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c09f3c) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c09ebc) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c09e9c) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c09e1c) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c09dfc) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c09d7c) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c09d5c) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c09cdc) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c09cbc) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c09c3c) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c09c1c) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c09b9c) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c09b7c) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c09afc) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c09adc) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c09a5c) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c09a3c) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c099bc) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c0999c) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c0991c) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c098fc) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c0987c) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c0985c) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c097dc) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c097bc) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c0973c) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c0971c) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c0969c) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c0967c) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c095fc) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c095dc) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c0955c) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c0953c) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c094bc) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c0949c) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c0941c) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c093fc) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c0937c) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c0935c) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c092dc) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c092bc) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c0923c) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c0921c) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c0919c) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c0917c) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c090fc) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c090dc) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c0905c) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c0903c) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c08fbc) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c08f9c) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c08f1c) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c08efc) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c08e7c) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c08e5c) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c08ddc) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c08dbc) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c08d3c) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c08d1c) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c08c9c) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c08c7c) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c08bfc) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c08bdc) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c08b5c) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c08b3c) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c08abc) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c08a9c) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c08a1c) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c089fc) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c0d314) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c0d2f4) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c0d274) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c0d254) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c0d1d4) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c0d1b4) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c0d134) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c0d114) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c0d094) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c0d074) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c0cff4) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c0cfd4) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c0cf54) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c0cf34) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c0ceb4) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c0ce94) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c0ce14) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c0cdf4) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c0cd74) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c0cd54) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c0ccd4) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c0ccb4) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c0cc34) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c0cc14) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c0cb94) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c0cb74) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c0caf4) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c0cad4) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c0ca54) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c0ca34) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c0c9b4) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c0c994) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c0c914) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c0c8f4) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c0c874) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c0c854) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c0c7d4) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c0c7b4) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c0c734) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c0c714) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c0c694) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c0c674) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c0c5f4) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c0c5d4) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c0c554) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c0c534) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c0c4b4) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c0c494) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c0c414) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c0c3f4) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c0c374) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c0c354) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c0c2d4) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c0c2b4) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c0c234) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c0c214) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c0c194) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c0c174) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c0c0f4) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c0c0d4) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c0c054) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c0c034) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c0bfb4) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c0bf94) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c0bf14) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c0bef4) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c0be74) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c0be54) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c0bdd4) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c0bdb4) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c0bd34) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c0bd14) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c0bc94) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c0bc74) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c0bbf4) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c0bbd4) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c0bb54) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c0bb34) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c0bab4) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c0ba94) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c0ba14) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c0b9f4) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c0b974) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c0b954) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c0b8d4) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c0b8b4) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c0b834) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c0b814) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c0b794) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c0b774) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c0b6f4) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c0b6d4) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c0b654) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c0b634) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c0b5b4) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c0b594) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c0b514) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c0b4f4) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c0b474) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c0b454) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c0b3d4) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c0b3b4) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c0f33c) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c0f31c) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c0f29c) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c0f27c) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c0f1fc) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c0f1dc) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c0f15c) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c0f13c) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c0f0bc) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c0f09c) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c0f01c) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c0effc) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c0ef7c) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c0ef5c) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c0eedc) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c0eebc) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c0ee3c) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c0ee1c) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c0ed9c) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c0ed7c) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c0ecfc) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c0ecdc) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c0ec5c) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c0ec3c) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c0ebbc) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c0eb9c) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c0eb1c) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c0eafc) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c0ea7c) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c0ea5c) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c0e9dc) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c0e9bc) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c0e93c) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c0e91c) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c0e89c) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c0e87c) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c0e7fc) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c0e7dc) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c0e75c) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c0e73c) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c0e6bc) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c0e69c) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c0e61c) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c0e5fc) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c0e57c) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c0e55c) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c0e4dc) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c0e4bc) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c0e43c) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c0e41c) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c0e39c) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c0e37c) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c0e2fc) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c0e2dc) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c0e25c) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c0e23c) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c0e1bc) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c0e19c) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c0e11c) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c0e0fc) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c0e07c) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c0e05c) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c0dfdc) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c0dfbc) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c0df3c) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c0df1c) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c0de9c) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c0de7c) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c0ddfc) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c0dddc) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c0dd5c) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c0dd3c) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c0dcbc) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c0dc9c) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c0dc1c) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c0dbfc) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c0db7c) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c0db5c) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c0dadc) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c0dabc) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c0da3c) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c0da1c) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c0d99c) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c0d97c) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c0d8fc) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c0d8dc) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c0d85c) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c0d83c) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c0d7bc) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c0d79c) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c0d71c) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c0d6fc) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c0d67c) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c0d65c) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c0d5dc) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c0d5bc) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c0d53c) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c0d51c) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c0d49c) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c0d47c) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c0d3fc) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c0d3dc) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c11364) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c11344) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c112c4) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c112a4) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c11224) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c11204) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c11184) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c11164) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c110e4) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c110c4) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c11044) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c11024) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c10fa4) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c10f84) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c10f04) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c10ee4) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c10e64) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c10e44) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c10dc4) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c10da4) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c10d24) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c10d04) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c10c84) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c10c64) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c10be4) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c10bc4) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c10b44) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c10b24) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c10aa4) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c10a84) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c10a04) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c109e4) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c10964) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c10944) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c108c4) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c108a4) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c10824) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c10804) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c10784) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c10764) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c106e4) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c106c4) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c10644) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c10624) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c105a4) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c10584) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c10504) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c104e4) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c10464) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c10444) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c103c4) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c103a4) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c10324) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c10304) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c10284) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c10264) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c101e4) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c101c4) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c10144) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c10124) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c100a4) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c10084) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c10004) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c0ffe4) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c0ff64) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c0ff44) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c0fec4) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c0fea4) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c0fe24) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c0fe04) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c0fd84) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c0fd64) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c0fce4) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c0fcc4) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c0fc44) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c0fc24) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c0fba4) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c0fb84) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c0fb04) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c0fae4) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c0fa64) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c0fa44) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c0f9c4) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c0f9a4) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c0f924) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c0f904) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c0f884) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c0f864) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c0f7e4) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c0f7c4) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c0f744) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c0f724) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c0f6a4) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c0f684) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c0f604) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c0f5e4) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c0f564) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c0f544) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c0f4c4) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c0f4a4) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c0f424) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c0f404) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c1356c) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c1354c) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c134cc) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c134ac) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c1342c) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c1340c) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c1338c) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c1336c) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c132ec) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c132cc) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c1324c) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c1322c) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c131ac) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c1318c) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c1310c) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c130ec) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c1306c) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c1304c) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c12fcc) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c12fac) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c12f2c) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c12f0c) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c12e8c) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c12e6c) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c12e48) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c12e28) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x0093005c) Line 1917 + 0x7 C perl519.dll!S_finalize_op(interpreter * my_perl=0x003657e4\, op * o=0x00c12dcc) Line 1917 + 0x7 C perl519.dll!Perl_finalize_optree(interpreter * my_perl=0x003657e4\, op * o=0x00c12dcc) Line 1691 C perl519.dll!Perl_newPROG(interpreter * my_perl=0x003657e4\, op * o=0x0093005c) Line 3046 C perl519.dll!Perl_yyparse(interpreter * my_perl=0x003657e4\, int gramtype=0x00000000) Line 146 + 0x14 C perl519.dll!S_doeval(interpreter * my_perl=0x00958ba0\, int gimme=0x00000001\, cv * outside=0x000000b6\, unsigned long seq=0x00000002\, hv * hh=0x00000000) Line 3490 C perl519.dll!Perl_pp_entereval(interpreter * my_perl=0x013657e4) Line 4225 + 0x18 C perl519.dll!Perl_runops_standard(interpreter * my_perl=0x003657e4) Line 42 + 0x4 C perl519.dll!S_run_body(interpreter * my_perl=0x003657e4\, long oldscope=0x00000001) Line 2495 + 0xa C perl519.dll!perl_run(interpreter * my_perl=0x003657e4) Line 2411 + 0x8 C perl519.dll!RunPerl(int argc=0x00000003\, char * * argv=0x01362478\, char * * env=0x00362de8) Line 270 + 0x6 C perl.exe!main(int argc=0x00000003\, char * * argv=0x00362478\, char * * env=0x00362de8) Line 88 + 0x12 C perl.exe!mainCRTStartup() Line 398 + 0xe C kernel32.dll!_BaseProcessStart@4() + 0x23
On Wed Jul 17 14:29:33 2013\, niels@thykier.net wrote:
Hi\,
I cannot reproduce the issue in S_finalize_op on blead[1]. It is possible that it has been "fixed" somehow (or we got different architectures).
On the other hand\, I can reproduce the crash caused by:
perl -e'eval "sub{".q"$a+"x shift . "}"' 500000
I have attached a prototype patch that solves the problem (at least for me). With the patch applied\, I can run it with up to at least 2M without it crashing - I have not tested beyond that because perl starts to use >= 4GB of RAM around the 2M mark. A more memory friendly test case is definitely welcome. :)
For the reviewer(s): the patch is much easier to read by ignoring space changes[2]. It re-uses the basic principe of the DEFER marco used in the peephole optimizer. The "major" difference is that it uses a fixed-size stack rather than a fixed-size queue. The size of the queue did not seem to matter a lot (even with MAX_DEFERRED reduced to 2 was the crash avoided in original test case).
Applied patch\, used on 20 KB C stack perl described above\,
-e "eval \"sub{\".q\"$a+\"x shift . \"}\"" 500000
after patch didn't crash\, previously was crashing as described in earlier post of mine in this ticket. I have no comment on the correctness of this patch.
-- bulk88 ~ bulk88 at hotmail.com
On Wed\, Jul 17\, 2013 at 11:28 PM\, Niels Thykier \niels@​thykier\.net wrote:
For the reviewer(s): the patch is much easier to read by ignoring space changes[2].
Then why did you post it with space changes? Not only does it deter reviewers from looking at this\, it's also wrong (our style standard is crap\, but it's generally considered too late to change that).
Leon
On 2013-07-18 13:12\, Leon Timmermans wrote:
On Wed\, Jul 17\, 2013 at 11:28 PM\, Niels Thykier \niels@​thykier\.net wrote:
For the reviewer(s): the patch is much easier to read by ignoring space changes[2].
Then why did you post it with space changes? Not only does it deter reviewers from looking at this\, it's also wrong (our style standard is crap\, but it's generally considered too late to change that).
Leon
The space changes are caused by adding an extra scope\, i.e.
code
became
while (something) { code-with-minor-modifications }
I can rewrite the patch as
while (something) { code-with-minor-modifications }
but I suspected that it would make things worse in the long-term.
In regards to the spaces used. As I understood it\, the "desired" intention is " "\, "\t"\, "\t "\, "\t\t". So that is what I have been using so far. If it is wrong\, then by all means do correct me so I don't include it in future patches.
~Niels
On Thu\, Jul 18\, 2013 at 01:19:05PM +0200\, Niels Thykier wrote:
On 2013-07-18 13:12\, Leon Timmermans wrote:
On Wed\, Jul 17\, 2013 at 11:28 PM\, Niels Thykier \niels@​thykier\.net wrote:
For the reviewer(s): the patch is much easier to read by ignoring space changes[2].
Then why did you post it with space changes? Not only does it deter reviewers from looking at this\, it's also wrong (our style standard is crap\, but it's generally considered too late to change that).
Leon
The space changes are caused by adding an extra scope\, i.e.
code
became
while (something) { code-with-minor-modifications }
I can rewrite the patch as
while (something) { code-with-minor-modifications }
but I suspected that it would make things worse in the long-term.
Yes\, typically we have been re-indenting when adding scopes. So you're right that the answer isn't as obvious as it first seemed.
In this case\, I think for ease of review the best course of action would have been to attach the "proper" diff and put a whitespace-ignoring diff inline in your message.
(Because I'm unaware of any means for a reviewer to generate that diff without having to 1) checkout the correct parent version 2) apply your patch 3) run diff themselves
whereas you are in a position to do just step 3\, and save anyone else having to quit their e-mail client to duplicate work)
In regards to the spaces used. As I understood it\, the "desired" intention is " "\, "\t"\, "\t "\, "\t\t". So that is what I have been using so far. If it is wrong\, then by all means do correct me so I don't include it in future patches.
There's an editor block at the bottom of each file which is supposed to get (at least) emacs and vi to indent at 4 columns\, and expand tabs to spaces. Historically most of the code has hard tabs\, and the alignment mostly seems to assume a tabstop is at 8 spaces\, but the rough plan is to eliminate tabs on any line that gets changed for any other reason. The intent is to avoid the "blame" history of files (at least of the complex old C code) being confused by having whitespace only changes.
Nicholas Clark
On Thu\, Jul 18\, 2013 at 12:27:46PM +0100\, Nicholas Clark wrote:
Yes\, typically we have been re-indenting when adding scopes. So you're right that the answer isn't as obvious as it first seemed.
In this case\, I think for ease of review the best course of action would have been to attach the "proper" diff and put a whitespace-ignoring diff inline in your message.
My personal preference is to do it as two commits; the first adds the extra scope and the code changes; the second does just the re-indenting.
-- I don't want to achieve immortality through my work... I want to achieve it through not dying. -- Woody Allen
On Wed\, Jul 17\, 2013 at 11:28:48PM +0200\, Niels Thykier wrote:
I have attached a prototype patch that solves the problem (at least for me). With the patch applied\, I can run it with up to at least 2M without it crashing - I have not tested beyond that because perl starts to use >= 4GB of RAM around the 2M mark.
Some general thoughts and comments about this issue.
There are several places in op.c that recursively do a partial or full treewalk of the subtree associated with a node. A quick scan of op.c for likely recursive functions turns up:
Perl_op_free S_find_and_forget_pmops Perl_scalar Perl_scalarvoid Perl_list S_finalize_op Perl_doref S_my_kid S_aassign_common_vars
(Then of course there's Perl_rpeep\, which doesn't recursively walk the tree\, but instead follows op_next nodes\, recursively scanning whenever there's a branch\, such as a LOGOP with an op_other field).
Now\, it's quite simple (especially with machine-generated code) to create an optree that's arbitrarily deep. For example:
my $line = "\$cond ? \$a : \n"; my $code = ($line x 10000) . "\$b;\n"; eval $code;
This creates a 10\,000 depth tree.
Any function which walks the tree recursively (or which uses a small fixed stack to avoid some recursion) is going to crash on a suitably pathological piece of code.
Which leads me to speculate...
The problem really is that there is no pointer back from the kids to the parent op. Thus to walk the tree you need a stack (C or otherwise) to record your current op_sibling iterator for every depth in the tree.
If hypothetically the last kid in an op_sibling chain had a pointer back to its parent\, e.g.
parent | kid1 --> kid2 ---> kid3 ---> NULL | kid4 ---> kid5 --> kid6 ---> NULL
becomes
parent \<----------------- | \ kid1 --> kid2 ---> kid3 -/ | ^ | \ | -------------------- | \ kid4 ---> kid5 --> kid6 -/
Then walking the whole subtree can be done simply by iteratively following (op_first || op_sibling) until we arrive back at the original node.
For this to work\, we need a temporary 'already processed' flag on ops to show that they've already been visited (so in the above when we arrive back at kid2 we know to follow op_sibling rather than op_first). Perhaps op_opt will suffice?.
Also\, we need to temporarily set the op_sibling of the last kid from NULL to instead point back at its parent; we revert this to NULL once we visit the kid in question (which may involve needing another flag bit).
Actually\, if we know we're at the last op_sibling and so the next op will be the parent\, then we don't need an 'already processed' flag: we know that the next node has already been done. Or maybe the tmp pointer should point to parent->op_sibling rather than to parent\, also avoiding the need for an 'already processed' flag.
Of course this is all predicated on the actions being performed for each tree node not choking on the fake extra pointer on the last kid. I don't know whether this would be an issue.
I had a brief attempt to see if I could get a proof-of-concept implementation to work with op_free\, but that turns out to be a bit complicated by the fact that some actions are performed before the kids are walked\, and some after (and of course the op itself gets freed). So I gave up as I haven't got time to look into this deeply at the moment.
So I thought I'd throw it into the ring instead.
-- If life gives you lemons\, you'll probably develop a citric acid allergy.
On 07/18/2013 08:13 AM\, Dave Mitchell wrote:
On Thu\, Jul 18\, 2013 at 12:27:46PM +0100\, Nicholas Clark wrote:
Yes\, typically we have been re-indenting when adding scopes. So you're right that the answer isn't as obvious as it first seemed.
In this case\, I think for ease of review the best course of action would have been to attach the "proper" diff and put a whitespace-ignoring diff inline in your message.
My personal preference is to do it as two commits; the first adds the extra scope and the code changes; the second does just the re-indenting.
I thought in fact\, that this was the officially sanctioned thing to do.
On Thu Jul 18 07:50:32 2013\, davem wrote:> Some general thoughts and comments about this issue.
There are several places in op.c that recursively do a partial or full treewalk of the subtree associated with a node. A quick scan of op.c for likely recursive functions turns up:
Perl\_op\_free S\_find\_and\_forget\_pmops Perl\_scalar Perl\_scalarvoid Perl\_list S\_finalize\_op Perl\_doref S\_my\_kid S\_aassign\_common\_vars
(Then of course there's Perl_rpeep\, which doesn't recursively walk the tree\, but instead follows op_next nodes\, recursively scanning whenever there's a branch\, such as a LOGOP with an op_other field).
Now\, it's quite simple (especially with machine-generated code) to create an optree that's arbitrarily deep. For example:
my $line = "\\$cond ? \\$a : \\n"; my $code = \($line x 10000\) \. "\\$b;\\n"; eval $code;
This creates a 10\,000 depth tree.
Any function which walks the tree recursively (or which uses a small fixed stack to avoid some recursion) is going to crash on a suitably pathological piece of code.
Which leads me to speculate...
The problem really is that there is no pointer back from the kids to the parent op. Thus to walk the tree you need a stack (C or otherwise) to record your current op_sibling iterator for every depth in the tree.
If hypothetically the last kid in an op_sibling chain had a pointer back to its parent\, e.g.
parent | kid1 \-\-> kid2 \-\-\-> kid3 \-\-\-> NULL | kid4 \-\-\-> kid5 \-\-> kid6 \-\-\-> NULL
becomes
parent \<\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\- | \\ kid1 \-\-> kid2 \-\-\-> kid3 \-/ | ^ | \\ | \-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\- | \\ kid4 \-\-\-> kid5 \-\-> kid6 \-/
Then walking the whole subtree can be done simply by iteratively following (op_first || op_sibling) until we arrive back at the original node.
For this to work\, we need a temporary 'already processed' flag on ops to show that they've already been visited (so in the above when we arrive back at kid2 we know to follow op_sibling rather than op_first). Perhaps op_opt will suffice?.
Also\, we need to temporarily set the op_sibling of the last kid from NULL to instead point back at its parent; we revert this to NULL once we visit the kid in question (which may involve needing another flag bit).
Actually\, if we know we're at the last op_sibling and so the next op will be the parent\, then we don't need an 'already processed' flag: we know that the next node has already been done. Or maybe the tmp pointer should point to parent->op_sibling rather than to parent\, also avoiding the need for an 'already processed' flag.
Of course this is all predicated on the actions being performed for each tree node not choking on the fake extra pointer on the last kid. I don't know whether this would be an issue.
I had a brief attempt to see if I could get a proof-of-concept implementation to work with op_free\, but that turns out to be a bit complicated by the fact that some actions are performed before the kids are walked\, and some after (and of course the op itself gets freed). So I gave up as I haven't got time to look into this deeply at the moment.
So I thought I'd throw it into the ring instead.
Instead of Thykier's 10 deep fixed len mini stack\, or davem's adding return to root OP * to end of a branch on optree\, here is my WAG idea.
Do an ENTER\, use SAVEDESTRUCTOR_X for every OP * encountered\, then do a LEAVE\, and the ops will free in a linear flattened model using an malloced unlimited length (OS user mode memory limit) stack (save stack)?
I'll guess from the other posts in this ticket so far\, that these op tree deep recursion bugs are something/some function needs to trace around the outside of the tree\, linearlizing the tree. A combination of for loops and recursion are used to do this in the current implementation. Is this a correct explanation?
Also\, in the for loop+recusion call stacks\, is the algorithm\, where x is the number of OP structs in the sub\, x*x\, or x! or just plain x? I'm trying to figure out if there is a performance problem/big O of these op tree recursion crashes.
-- bulk88 ~ bulk88 at hotmail.com
Dave Mitchell \davem@​iabyn\.com wrote: :There are several places in op.c that recursively do a partial or full :treewalk of the subtree associated with a node. A quick scan of op.c for :likely recursive functions turns up: : : Perl_op_free : S_find_and_forget_pmops : Perl_scalar : Perl_scalarvoid : Perl_list : S_finalize_op : Perl_doref : S_my_kid : S_aassign_common_vars : :(Then of course there's Perl_rpeep\, which doesn't recursively walk the :tree\, but instead follows op_next nodes\, recursively scanning whenever :there's a branch\, such as a LOGOP with an op_other field). : :Now\, it's quite simple (especially with machine-generated code) to create :an optree that's arbitrarily deep. For example: : : my $line = "\$cond ? \$a : \n"; : my $code = ($line x 10000) . "\$b;\n"; : eval $code; : :This creates a 10\,000 depth tree. : :Any function which walks the tree recursively (or which uses a small fixed :stack to avoid some recursion) is going to crash on a suitably :pathological piece of code. : :Which leads me to speculate... : :The problem really is that there is no pointer back from the kids to the :parent op. Thus to walk the tree you need a stack (C or otherwise) to :record your current op_sibling iterator for every depth in the tree. : :If hypothetically the last kid in an op_sibling chain had a pointer back :to its parent\, e.g. : : parent : | : kid1 --> kid2 ---> kid3 ---> NULL |
---|
: kid4 ---> kid5 --> kid6 ---> NULL : :becomes : : parent \<----------------- : | \ : kid1 --> kid2 ---> kid3 -/ : | ^ : | \ : | -------------------- : | \ : kid4 ---> kid5 --> kid6 -/ |
---|
:Then walking the whole subtree can be done simply by iteratively :following (op_first | op_sibling) until we arrive back at the original :node. |
---|
:For this to work\, we need a temporary 'already processed' flag on ops to :show that they've already been visited (so in the above when we arrive back :at kid2 we know to follow op_sibling rather than op_first). Perhaps op_opt :will suffice?. : :Also\, we need to temporarily set the op_sibling of the last kid from NULL :to instead point back at its parent; we revert this to NULL once we visit :the kid in question (which may involve needing another flag bit). : :Actually\, if we know we're at the last op_sibling and so the next op will :be the parent\, then we don't need an 'already processed' flag: we know :that the next node has already been done. Or maybe the tmp pointer should :point to parent->op_sibling rather than to parent\, also avoiding the need :for an 'already processed' flag. : :Of course this is all predicated on the actions being performed for :each tree node not choking on the fake extra pointer on the last kid. :I don't know whether this would be an issue. : :I had a brief attempt to see if I could get a proof-of-concept :implementation to work with op_free\, but that turns out to be a bit :complicated by the fact that some actions are performed before the kids :are walked\, and some after (and of course the op itself gets freed). :So I gave up as I haven't got time to look into this deeply at the moment. : :So I thought I'd throw it into the ring instead.
Maybe I misrepresent it\, but it sounds rather an expensive way - in memory and complexity - to cope with the pathological cases. I feel like there ought to be something rather lighter-weight that performs well in normal cases. If it performs well in pathological cases as well\, all the better\, but (other than trying not to crash) I don't feel they're what we should optimize for.
Moving the C-stack recursion to an optree-traversal stack that grows at need (but rarely needs to in any but pathological cases) sounds as if it should suffice\, and as if it could involve rather less complexity.
Hugo
On 2013-07-18 16:49\, Dave Mitchell wrote:
On Wed\, Jul 17\, 2013 at 11:28:48PM +0200\, Niels Thykier wrote:
I have attached a prototype patch that solves the problem (at least for me). With the patch applied\, I can run it with up to at least 2M without it crashing - I have not tested beyond that because perl starts to use >= 4GB of RAM around the 2M mark.
Some general thoughts and comments about this issue.
There are several places in op.c that recursively do a partial or full treewalk of the subtree associated with a node. A quick scan of op.c for likely recursive functions turns up:
\[\.\.\.\]
(Then of course there's Perl_rpeep\, which doesn't recursively walk the tree\, but instead follows op_next nodes\, recursively scanning whenever there's a branch\, such as a LOGOP with an op_other field).
I agree that it seems like we are re-doing (partial) recursive walking quite a few times. So it would probably be worth it to have some utilities to make it easier.
Now\, it's quite simple (especially with machine-generated code) to create an optree that's arbitrarily deep. For example:
my $line = "\\$cond ? \\$a : \\n"; my $code = \($line x 10000\) \. "\\$b;\\n"; eval $code;
This creates a 10\,000 depth tree.
Seems to be a nice memory friendly stack-trashing test case. :) Although it seems to take quite a while to compile for larger numbers.
Any function which walks the tree recursively (or which uses a small fixed stack to avoid some recursion) is going to crash on a suitably pathological piece of code.
Which leads me to speculate...
The problem really is that there is no pointer back from the kids to the parent op. Thus to walk the tree you need a stack (C or otherwise) to record your current op_sibling iterator for every depth in the tree.
If hypothetically the last kid in an op_sibling chain had a pointer back to its parent\, e.g.
parent | kid1 \-\-> kid2 \-\-\-> kid3 \-\-\-> NULL | kid4 \-\-\-> kid5 \-\-> kid6 \-\-\-> NULL
becomes
parent \<\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\- | \\ kid1 \-\-> kid2 \-\-\-> kid3 \-/ | ^ | \\ | \-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\- | \\ kid4 \-\-\-> kid5 \-\-> kid6 \-/
Then walking the whole subtree can be done simply by iteratively following (op_first || op_sibling) until we arrive back at the original node.
Interesting proposal - if nothing else\, we could avoid having to deal with dynamic memory allocation for traversing the tree (once it has been fully constructed that is).
For this to work\, we need a temporary 'already processed' flag on ops to show that they've already been visited (so in the above when we arrive back at kid2 we know to follow op_sibling rather than op_first). Perhaps op_opt will suffice?.
Mmm\, we might have to restore its original value again. Admittedly I don't remember the peep optimiser fully\, but if it uses any of the functions above\, we don't want calling them to leave some nodes unoptimised. Also\, it would possibly make it difficult for the peep optimiser to use this approach (for similar reasons).
Also\, we need to temporarily set the op_sibling of the last kid from NULL to instead point back at its parent; we revert this to NULL once we visit the kid in question (which may involve needing another flag bit).
If you revert it back to NULL\, how are you going to use it for traversing the tree. If I understand this part correctly\, you would end up adding the parent-link back\, then use it and remove it again several times. And I am pretty sure the part of adding the parent-link is not going to be easy without recursion or some helper stack/queue.
Actually\, if we know we're at the last op_sibling and so the next op will be the parent\, then we don't need an 'already processed' flag: we know that the next node has already been done. Or maybe the tmp pointer should point to parent->op_sibling rather than to parent\, also avoiding the need for an 'already processed' flag.
Are you sure this will work for all cases\, e.g. the peep optimiser makes the following comment about loop ops:
/* a while(1) loop doesn't have an op_next that escapes the * loop\, so we have to explicitly follow the op_lastop to * process the rest of the code */
(This is an honest question - I am by no means an expert on ops of any kind)
Of course this is all predicated on the actions being performed for each tree node not choking on the fake extra pointer on the last kid. I don't know whether this would be an issue.
I suspect something will croak/while(1)-loop on it\, but I definitely find this an interesting alternative (particularly due to its possible O(1) memory usage).
I had a brief attempt to see if I could get a proof-of-concept implementation to work with op_free\, but that turns out to be a bit complicated by the fact that some actions are performed before the kids are walked\, and some after (and of course the op itself gets freed). So I gave up as I haven't got time to look into this deeply at the moment.
So I thought I'd throw it into the ring instead.
I tried a different approach that for op_free in the attached patch - it /doesn't/ work\, but I had to refactor part of op_free as a side-effect. Part of this refactoring might help you do your proof-of-concept though.
The basic idea behind my patch was to abuse the op_next as a backlink doing free (under the assumption that "about to be freed" => "free general purpose memory"). In theory\, it is also stackless like your idea\, but it works only for free (as the traversion is destructive). Sadly\, this seems to break perl causing many scripts to do "nothing at all". Possibly a bug in my implementation or in my assumption. Anyway\, hope it helps you.
~Niels
On 2013-07-18 13:27\, Nicholas Clark wrote:
On Thu\, Jul 18\, 2013 at 01:19:05PM +0200\, Niels Thykier wrote:
[...]
Yes\, typically we have been re-indenting when adding scopes. So you're right that the answer isn't as obvious as it first seemed.
In this case\, I think for ease of review the best course of action would have been to attach the "proper" diff and put a whitespace-ignoring diff inline in your message.
(Because I'm unaware of any means for a reviewer to generate that diff without having to 1) checkout the correct parent version 2) apply your patch 3) run diff themselves
whereas you are in a position to do just step 3\, and save anyone else having to quit their e-mail client to duplicate work)
True\, I should have thought of that.
In regards to the spaces used. As I understood it\, the "desired" intention is " "\, "\t"\, "\t "\, "\t\t". So that is what I have been using so far. If it is wrong\, then by all means do correct me so I don't include it in future patches.
There's an editor block at the bottom of each file which is supposed to get (at least) emacs and vi to indent at 4 columns\, and expand tabs to spaces. Historically most of the code has hard tabs\, and the alignment mostly seems to assume a tabstop is at 8 spaces\, but the rough plan is to eliminate tabs on any line that gets changed for any other reason. The intent is to avoid the "blame" history of files (at least of the complex old C code) being confused by having whitespace only changes.
Nicholas Clark
Noted.
~Niels
On Thu Jul 18 15:15:54 2013\, niels@thykier.net wrote:
On 2013-07-18 16:49\, Dave Mitchell wrote:
For this to work\, we need a temporary 'already processed' flag on ops to show that they've already been visited (so in the above when we arrive back at kid2 we know to follow op_sibling rather than op_first). Perhaps op_opt will suffice?.
Mmm\, we might have to restore its original value again. Admittedly I don't remember the peep optimiser fully\, but if it uses any of the functions above\, we don't want calling them to leave some nodes unoptimised. Also\, it would possibly make it difficult for the peep optimiser to use this approach (for similar reasons).
I don’t think we need any extra flag here.
for each op { if o->op_sibling is a list op and o->op_sibling->op_last == o\, then next_op_to_look_at = o->op_sibling->op_sibling o->op_sibling = NULL; do our stuff ... }
I think the correct check for ‘is this sibling actually the parent?’ would be:
if (o->op_sibling->op_flags & OPf_KIDS && ( o->op_sibling->op_first == o /* UNOP */ || (o->op_sibling->op_first->op_sibling /* LISTOP */ && o->op_sibling->op_last == o) ))
--
Father Chrysostomos
On Fri\, Jul 19\, 2013 at 12:15:04AM +0200\, Niels Thykier wrote:
For this to work\, we need a temporary 'already processed' flag on ops to show that they've already been visited (so in the above when we arrive back at kid2 we know to follow op_sibling rather than op_first). Perhaps op_opt will suffice?.
Mmm\, we might have to restore its original value again. Admittedly I don't remember the peep optimiser fully\, but if it uses any of the functions above\, we don't want calling them to leave some nodes unoptimised. Also\, it would possibly make it difficult for the peep optimiser to use this approach (for similar reasons).
Note that my suggestion is specifically for the treewalker functions (process an op then its kids); the peephole optimiser isn't a treewalker (it follows op_next's\, not kids).
Also\, we need to temporarily set the op_sibling of the last kid from NULL to instead point back at its parent; we revert this to NULL once we visit the kid in question (which may involve needing another flag bit).
If you revert it back to NULL\, how are you going to use it for traversing the tree. If I understand this part correctly\, you would end up adding the parent-link back\, then use it and remove it again several times. And I am pretty sure the part of adding the parent-link is not going to be easy without recursion or some helper stack/queue.
Perhaps a specific example:
A lot of the recursive tree-walker functions look like\, in essence:
Perl_foo(OP *o) { switch (o->op_type) { ... fix up o in some way }
/* visit o's kids */ if (o->op_flags & OPf_KIDS) { OP *kid = cUNOPo->op_first; while (kid) { foo(kid); kid = kid->op_sibling; } } }
I would change it to look like (somewhat handwavy):
Perl_foo(OP *o) { while (o) {
if (o->op_fake_sibling_flag) { o->op_fake_sibling_flag = 0; o->op_sibling = NULL; }
switch (o->op_type) { ... fix up o in some way }
/* visit o's kids */ if (o->op_flags & OPf_KIDS) { OP *lastkid = (loop through op_sibling chain to find last kid); lastkid->op_sibling = o; /* tmp loop back to parents */ lastkid->op_fake_sibling_flag = 1; o = lastkid; } else o = o->op_sibling; } }
The above code is not workable - for example I don't address how to halt once we've parsed the whole subtree and ended back up at the original o; but what it does demonstrate is the *temporary* nature of the fixup; when we're about to process the list of kids\, we hack the last kid; when we reach the last kid\, we unhack it.
Actually\, if we know we're at the last op_sibling and so the next op will be the parent\, then we don't need an 'already processed' flag: we know that the next node has already been done. Or maybe the tmp pointer should point to parent->op_sibling rather than to parent\, also avoiding the need for an 'already processed' flag.
Are you sure this will work for all cases\, e.g. the peep optimiser makes the following comment about loop ops:
/\* a while\(1\) loop doesn't have an op\_next that escapes the \* loop\, so we have to explicitly follow the op\_lastop to \* process the rest of the code \*/
(This is an honest question - I am by no means an expert on ops of any kind)
Again\, this suggestion doesn't apply to the peephole optimiser.
I tried a different approach that for op_free in the attached patch - it /doesn't/ work\, but I had to refactor part of op_free as a side-effect. Part of this refactoring might help you do your proof-of-concept though.
The basic idea behind my patch was to abuse the op_next as a backlink doing free (under the assumption that "about to be freed" => "free general purpose memory"). In theory\, it is also stackless like your idea\, but it works only for free (as the traversion is destructive). Sadly\, this seems to break perl causing many scripts to do "nothing at all". Possibly a bug in my implementation or in my assumption. Anyway\, hope it helps you.
As I mentioned earlier\, I haven't really got time to look at the deeply at the moment.
-- "You're so sadly neglected\, and often ignored. A poor second to Belgium\, When going abroad." -- Monty Python\, "Finland"
On Thu\, Jul 18\, 2013 at 10:05:09AM -0700\, bulk88 via RT wrote:
Instead of Thykier's 10 deep fixed len mini stack\, or davem's adding return to root OP * to end of a branch on optree\, here is my WAG idea.
Do an ENTER\, use SAVEDESTRUCTOR_X for every OP * encountered\, then do a LEAVE\, and the ops will free in a linear flattened model using an malloced unlimited length (OS user mode memory limit) stack (save stack)?
Unfortunately I don't think that would work\, since the save stack is per interpreter\, while the op tree is shared among threads (so if the thread that compiled the code exits\, the op tree is freed\, screwing any threads still live and using that code).
I'll guess from the other posts in this ticket so far\, that these op tree deep recursion bugs are something/some function needs to trace around the outside of the tree\, linearlizing the tree. A combination of for loops and recursion are used to do this in the current implementation. Is this a correct explanation?
Not really. During compilation it's sometimes required to visit every node in a tree (or part of a tree) in either depth-first or breath-first order. For example when compiling an assignment op (where expr is a subtree that's already been compiled):
@foo = expr
Its only at this point that the compiler knows that expr will be evaluated in list context. It calls Perl_list() on the top node of the subtree representing expr. This will mark that node as list context\, then (if appropriate) recursively visit any children of that node; skipping any node whose context has already been determined.
As the code is compiled\, more and more small subtree are joined into bigger trees\, until you end up with a single tree containing the whole function\, with Perl_scalar() and Perl_list() and others being called multiple times on various subtrees (but usually a particular subtree is only walked once).
As a final compilation act\, the whole sub's optree is walked once in finalize_optree() to do any final fixups.
Then when a sub is freed\, its optree is recursively freed using a similar treewalk.
Also\, in the for loop+recusion call stacks\, is the algorithm\, where x is the number of OP structs in the sub\, x*x\, or x! or just plain x? I'm trying to figure out if there is a performance problem/big O of these op tree recursion crashes.
They should be plain x.
-- I've often wanted to drown my troubles\, but I can't get my wife to go swimming.
On Thu\, Jul 18\, 2013 at 08:22:00PM +0100\, hv@crypt.org wrote:
Maybe I misrepresent it\, but it sounds rather an expensive way - in memory and complexity - to cope with the pathological cases. I feel like there ought to be something rather lighter-weight that performs well in normal cases. If it performs well in pathological cases as well\, all the better\, but (other than trying not to crash) I don't feel they're what we should optimize for.
Moving the C-stack recursion to an optree-traversal stack that grows at need (but rarely needs to in any but pathological cases) sounds as if it should suffice\, and as if it could involve rather less complexity.
I think both approaches would have a similar level of complexity. They'll both make what was a simple recursive function more messy..
The advantage of my approach would be that no new data needs mallocing(); the entries in the traversal stack are essentially being temporarily being stored in the otherwise NULL op_sibling fields of the last kid at each depth.
I don't think the code for my approach need be messy\, but it would require some hard thinking to do right - i.e. to get exactly the right algorithm so that everything just comes out in the wash and doesn't require lots of flags and messing about.
But I'm not opposed to the mallocing-a-traversal stack either.
-- Atheism is a religion like not collecting stamps is a hobby
On Thu\, Jul 18\, 2013 at 03:46:31PM -0700\, Father Chrysostomos via RT wrote:
I think the correct check for ‘is this sibling actually the parent?’ would be:
if (o->op_sibling->op_flags & OPf_KIDS && ( o->op_sibling->op_first == o /* UNOP */ || (o->op_sibling->op_first->op_sibling /* LISTOP */ && o->op_sibling->op_last == o) ))
On my quick play with this last night I found that it wasn't simple\, for a given node o\, to determine its last child. For example LOGOPs don't have a pointer to the second child. I tried in op_free() to determine the last kid by doing a switch on the OP class (e.g. OA_LISTOP) and handling each class\, then comparing that with a brute-force kid=cUNOPo->op_first; while (kid && kid->op_sibling) kid->op_sibling and asserting that the two results were always the same. I found so many exceptions that I quickly gave up.
-- Dave's first rule of Opera: If something needs saying\, say it: don't warble it.
Can someone add a HasPatch RT tag to this ticket now that there is a patch in it?
-- bulk88 ~ bulk88 at hotmail.com
On Wed Jul 17 14:29:33 2013\, niels@thykier.net wrote:
Hi\,
I cannot reproduce the issue in S_finalize_op on blead[1]. It is possible that it has been "fixed" somehow (or we got different architectures).
On the other hand\, I can reproduce the crash caused by:
perl -e'eval "sub{".q"$a+"x shift . "}"' 500000
I have attached a prototype patch that solves the problem (at least for me). With the patch applied\, I can run it with up to at least 2M without it crashing - I have not tested beyond that because perl starts to use >= 4GB of RAM around the 2M mark. A more memory friendly test case is definitely welcome. :)
For the reviewer(s): the patch is much easier to read by ignoring space changes[2]. It re-uses the basic principe of the DEFER marco used in the peephole optimizer. The "major" difference is that it uses a fixed-size stack rather than a fixed-size queue. The size of the queue did not seem to matter a lot (even with MAX_DEFERRED reduced to 2 was the crash avoided in original test case).
The test suite showed no regression\, perl was configured with: ./Configure -des -Dusedevel
~Niels
[1] I have been using code suggested by Dave Mitchell (rewritten as a perl one-liner)
./perl -e 'my $code = q[my $i = 0; if ($i) { print } ] . "\n";' -e '$code .= q[ elsif ($i) { print } ] . "\n" for 1..$ARGV[0];' -e 'eval $code' 10000
[2] Compare
$ git diff --ignore-all-space --stat op.c | 37 [...] 1 file changed\, 34 insertions(+)\, 3 deletions(-)
versus.
$ git diff --stat op.c | 141 [...] 1 file changed\, 86 insertions(+)\, 55 deletions(-)
Would you be willing to finish this patch\, either making it malloc a deferred stack when necessary (presumably a rare case) or using Dave Mitchell’s op_sibling technique?
--
Father Chrysostomos
On Wed Jul 24 12:37:14 2013\, sprout wrote:
Would you be willing to finish this patch\, either making it malloc a deferred stack when necessary (presumably a rare case) or using Dave Mitchell’s op_sibling technique?
I've attached a variant of Niels' patch\, included inline below as a whitespace ignoring diff.
Without the patch C\< ./perl -e eval\ "sub{".q"$a+"x\ shift\ .\ "}" 500000 > crashed deep in op_free()\, with the patch it didn't.
I was a bit worried about increasing the allocation linearly would result in a performance issue\, but that turned out to be faster than a simple exponential allocation (on Linux\, YMMV.)
Tony
Migrated from rt.perl.org#108276 (status was 'open')
Searchable as RT108276$