You are viewing a plain text version of this content. The canonical link for it is here.
Posted to modperl-cvs@perl.apache.org by st...@apache.org on 2005/03/05 01:58:42 UTC

svn commit: r156213 - perl/modperl/trunk/t/response/TestPerl/ithreads_args.pm perl/modperl/trunk/t/response/TestPerl/ithreads_eval.pm

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