http://qs321.pair.com?node_id=802444

Anonymous Monk has asked for the wisdom of the Perl Monks concerning the following question:

Can you reproduce this error? Or fix it? It only happens under taint. Editing either the html/codefile can make the error disappear (similar to disappearing segfault). I've reproduced this on activeperl5.8.9, strawberry5.10, and perl v5.11.0 I compiled myself

perl -T taintbug.pl file:http.taint.html

#!/usr/bin/perl -- -- # without Taint there is no bug use strict; use warnings; warn "THIS REPLICATES THE BUG\n";warn $_ for %INC; { #NOBUG without $ua ##### # # # # use WWW::Mechanize; my $ua = WWW::Mechanize->new(); my $url = shift; die "NoBug WO file:httpbug.htm" unless $url and length $url and $url =~ m!http.*?(\w).(\w)!i ; $ua->get($url); my $pager = parsepage($ua); warn; } exit(0); sub parsepage { my $ua = shift; my %so; my $so = join "\n", $ua->content =~/(so\.addVariable\(\s*'.+?'\s*, +\s*'.+?'\s*\)\s*;)/mg; warn $so; warn; # Insecure dependency in kill while running with -T switc +h at C:/Perl/site/lib/WWW/Mechanize.pm line 2326. #Faulting application perl.exe, version 5.8.9.825, faulting module msv +crt.dll, version 7.0.2600.1106, fault address 0x00033283. # 11111111111111111111111111111111111111111111111111111111111111111 +1 1 while($so =~/so\.addVariable\('([^']+)','([^']+)'\);/mg){ warn "b $1 $2"; $so{"$1"}="$2"; warn "a $1 $2"; } require CGI; return CGI->new({%so}); } __END__
  • Comment on Faulting application perl.exe, version 0.0.0.0, faulting module msvcrt.dll, version 7.0.2600.1106, fault address 0x0003334c.
  • Download Code

Replies are listed 'Best First'.
Re: Faulting application perl.exe, version 0.0.0.0, faulting module msvcrt.dll, version 7.0.2600.1106, fault address 0x0003334c.
by Anonymous Monk on Oct 21, 2009 at 12:46 UTC
Re: Faulting application perl.exe, version 0.0.0.0, faulting module msvcrt.dll, version 7.0.2600.1106, fault address 0x0003334c.
by Anonymous Monk on Mar 06, 2012 at 10:57 UTC

    Very similar problem but with

    Faulting application perl.exe, version 0.0.0.0, faulting module perl514.dll, version 0.0.0.0, fault address 0x0006f0eb.

    The program

    #!/usr/bin/perl -- use strict; use warnings; use File::Slurp; my @junk = ("junk") x 15; for my $f ( @junk ){ my( $what, $junk ) = split /whatever/, scalar read_file( $f ); }

    The error goes away if you split a variable, say $f. It also doesn't happen with ActivePerl-5.14.2.1402-MSWin32-x86-295342. Is this bug important, I don't know :/

    File::Slurp 9999.19 and perl 5.14.1

    perl -V