threads 1.49
Jerry D. Hedden [Fri, 3 Nov 2006 05:37:16 +0000 (21:37 -0800)]
From: "Jerry D. Hedden" <jdhedden@yahoo.com>
Message-ID: <20061103133716.95143.qmail@web30214.mail.mud.yahoo.com>

p4raw-id: //depot/perl@29199

ext/threads/Changes
ext/threads/README
ext/threads/t/exit.t
ext/threads/t/thread.t
ext/threads/threads.pm
ext/threads/threads.xs

index 360eafc..f29126f 100755 (executable)
@@ -1,5 +1,11 @@
 Revision history for Perl extension threads.
 
+1.49 Fri Nov  3 08:33:28 EST 2006
+       - Fix a warning message
+
+1.48 Thu Nov  2 12:33:22 EST 2006
+       - Fix for segfault during thread destruction
+
 1.47 Mon Oct 30 16:02:53 EST 2006
        - Fix t/thread.t crash under Win32
        - Test multiple embedded Perl support
index ea749c5..effd009 100755 (executable)
@@ -1,4 +1,4 @@
-threads version 1.47
+threads version 1.49
 ====================
 
 This module exposes interpreter threads to the Perl level.
index ed6c48b..8eb54c0 100644 (file)
@@ -56,7 +56,7 @@ my $rc = $thr->join();
 ok(! defined($rc), 'Exited: threads->exit()');
 
 
-run_perl(prog => 'use threads 1.47;' .
+run_perl(prog => 'use threads 1.49;' .
                  'threads->exit(86);' .
                  'exit(99);',
          nolib => ($ENV{PERL_CORE}) ? 0 : 1,
@@ -104,7 +104,7 @@ $rc = $thr->join();
 ok(! defined($rc), 'Exited: $thr->set_thread_exit_only');
 
 
-run_perl(prog => 'use threads 1.47 qw(exit thread_only);' .
+run_perl(prog => 'use threads 1.49 qw(exit thread_only);' .
                  'threads->create(sub { exit(99); })->join();' .
                  'exit(86);',
          nolib => ($ENV{PERL_CORE}) ? 0 : 1,
@@ -112,7 +112,7 @@ run_perl(prog => 'use threads 1.47 qw(exit thread_only);' .
 is($?>>8, 86, "'use threads 'exit' => 'thread_only'");
 
 
-my $out = run_perl(prog => 'use threads 1.47;' .
+my $out = run_perl(prog => 'use threads 1.49;' .
                            'threads->create(sub {' .
                            '    exit(99);' .
                            '})->join();' .
@@ -124,7 +124,7 @@ is($?>>8, 99, "exit(status) in thread");
 like($out, '1 finished and unjoined', "exit(status) in thread");
 
 
-$out = run_perl(prog => 'use threads 1.47 qw(exit thread_only);' .
+$out = run_perl(prog => 'use threads 1.49 qw(exit thread_only);' .
                         'threads->create(sub {' .
                         '   threads->set_thread_exit_only(0);' .
                         '   exit(99);' .
@@ -137,7 +137,7 @@ is($?>>8, 99, "set_thread_exit_only(0)");
 like($out, '1 finished and unjoined', "set_thread_exit_only(0)");
 
 
-run_perl(prog => 'use threads 1.47;' .
+run_perl(prog => 'use threads 1.49;' .
                  'threads->create(sub {' .
                  '   $SIG{__WARN__} = sub { exit(99); };' .
                  '   die();' .
index 9cb69c9..c4be8fe 100644 (file)
@@ -171,7 +171,7 @@ package main;
 
 # bugid #24165
 
-run_perl(prog => 'use threads 1.47;' .
+run_perl(prog => 'use threads 1.49;' .
                  'sub a{threads->create(shift)} $t = a sub{};' .
                  '$t->tid; $t->join; $t->tid',
          nolib => ($ENV{PERL_CORE}) ? 0 : 1,
index 4559013..32d592f 100755 (executable)
@@ -5,7 +5,7 @@ use 5.008;
 use strict;
 use warnings;
 
-our $VERSION = '1.47';
+our $VERSION = '1.49';
 my $XS_VERSION = $VERSION;
 $VERSION = eval $VERSION;
 
@@ -133,7 +133,7 @@ threads - Perl interpreter-based threads
 
 =head1 VERSION
 
-This document describes threads version 1.47
+This document describes threads version 1.49
 
 =head1 SYNOPSIS
 
@@ -938,7 +938,7 @@ L<threads> Discussion Forum on CPAN:
 L<http://www.cpanforum.com/dist/threads>
 
 Annotated POD for L<threads>:
-L<http://annocpan.org/~JDHEDDEN/threads-1.47/threads.pm>
+L<http://annocpan.org/~JDHEDDEN/threads-1.49/threads.pm>
 
 L<threads::shared>, L<perlthrtut>
 
index 977a47a..2002619 100755 (executable)
@@ -174,6 +174,11 @@ S_ithread_destruct(pTHX_ ithread *thread)
 
     /* Remove from circular list of threads */
     MUTEX_LOCK(&MY_POOL.create_destruct_mutex);
+    if ((! thread->next || ! thread->prev) && ckWARN_d(WARN_INTERNAL)) {
+        Perl_warner(aTHX_ packWARN(WARN_INTERNAL),
+                    "Inconsistency in internal threads list found "
+                    "during destruction of thread %" UVuf, thread->tid);
+    }
     if (thread->next) thread->next->prev = thread->prev;
     if (thread->prev) thread->prev->next = thread->next;
     thread->next = NULL;