Author: stas Date: Fri Mar 4 16:58:40 2005 New Revision: 156213 URL: http://svn.apache.org/viewcvs?view=rev&rev=156213 Log: tests reproducing perl bugs #34341 and #34342 in ithreads
Added: perl/modperl/trunk/t/response/TestPerl/ithreads_args.pm (with props) perl/modperl/trunk/t/response/TestPerl/ithreads_eval.pm (with props) Added: perl/modperl/trunk/t/response/TestPerl/ithreads_args.pm URL: http://svn.apache.org/viewcvs/perl/modperl/trunk/t/response/TestPerl/ithreads_args.pm?view=auto&rev=156213 ============================================================================== --- perl/modperl/trunk/t/response/TestPerl/ithreads_args.pm (added) +++ perl/modperl/trunk/t/response/TestPerl/ithreads_args.pm Fri Mar 4 16:58:40 2005 @@ -0,0 +1,32 @@ +package TestPerl::ithreads_args; + +# reproducing a bug in perl ithreads: [perl #34342] +# https://rt.perl.org/rt3/Ticket/Display.html?id=34342 +# +# here an unshifted $r (i.e. as it leaves @_ populated causes a scalar +# leak in the thread). + +use Devel::Peek; +use Apache::Test; + +sub handler { # XXX: unshifted $_[0] leaks scalar + #Dump $_[0]; + #my $r = shift; # shift removes the leak + my $r = $_[0]; + #Dump $r; # here PADBUSY,PADMY prevent the ithread from cloning it + + plan $r, tests => 1, need + need_threads, + {"perl >= 5.8.1 is required (this is $])" => ($] >= 5.008001)}; + + require threads; + + warn "\n*** The following leak is expected (perl bug #34342) ***\n"; + threads->new(sub {})->join; + + ok 1; + + return 0; +} + +1; Propchange: perl/modperl/trunk/t/response/TestPerl/ithreads_args.pm ------------------------------------------------------------------------------ svn:eol-style = native Added: perl/modperl/trunk/t/response/TestPerl/ithreads_eval.pm URL: http://svn.apache.org/viewcvs/perl/modperl/trunk/t/response/TestPerl/ithreads_eval.pm?view=auto&rev=156213 ============================================================================== --- perl/modperl/trunk/t/response/TestPerl/ithreads_eval.pm (added) +++ perl/modperl/trunk/t/response/TestPerl/ithreads_eval.pm Fri Mar 4 16:58:40 2005 @@ -0,0 +1,50 @@ +package TestPerl::ithreads_eval; + +# reproducing a bug in perl ithreads: [perl #34341] +# https://rt.perl.org/rt3/Ticket/Display.html?id=34341 +# +# $thr->join triggers the following leak: +# - due to to local $0, (its second MAGIC's MG_OBJ, +# you can see it in the output of Dump $0). This leak was first +# spotted in the RegistryCooker.pm which localizes $0 + +use strict; +use warnings FATAL => 'all'; + +use Apache::Test; +use Apache::TestUtil; + +use Devel::Peek; + +use Apache::Const -compile => 'OK'; + +sub handler { + my $r = shift; + + plan $r, tests => 1, need + need_threads, + {"perl >= 5.8.1 is required (this is $])" => ($] >= 5.008001)}; + + require threads; + + eval <<'EOI'; +sub mytest { + local $0 = 'mememe'; # <== XXX: leaks scalar + my $thr; + $thr = threads->new(\&mythread); + $thr->join; # <== XXX: triggers scalar leak +} +sub mythread { + #Dump $0; +} +EOI + + warn "\n*** The following leak is expected (perl bug 34341) ***\n"; + mytest(); + + ok 1; + + return Apache::OK; +} + +1; Propchange: perl/modperl/trunk/t/response/TestPerl/ithreads_eval.pm ------------------------------------------------------------------------------ svn:eol-style = native