From: Jerry D. Hedden Date: Fri, 3 Nov 2006 05:37:16 +0000 (-0800) Subject: threads 1.49 X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=commitdiff_plain;h=70dc2d882add6f056d8cfd04b3f8e0c3a5a3e509;p=p5sagit%2Fp5-mst-13.2.git threads 1.49 From: "Jerry D. Hedden" Message-ID: <20061103133716.95143.qmail@web30214.mail.mud.yahoo.com> p4raw-id: //depot/perl@29199 --- diff --git a/ext/threads/Changes b/ext/threads/Changes index 360eafc..f29126f 100755 --- a/ext/threads/Changes +++ b/ext/threads/Changes @@ -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 diff --git a/ext/threads/README b/ext/threads/README index ea749c5..effd009 100755 --- a/ext/threads/README +++ b/ext/threads/README @@ -1,4 +1,4 @@ -threads version 1.47 +threads version 1.49 ==================== This module exposes interpreter threads to the Perl level. diff --git a/ext/threads/t/exit.t b/ext/threads/t/exit.t index ed6c48b..8eb54c0 100644 --- a/ext/threads/t/exit.t +++ b/ext/threads/t/exit.t @@ -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();' . diff --git a/ext/threads/t/thread.t b/ext/threads/t/thread.t index 9cb69c9..c4be8fe 100644 --- a/ext/threads/t/thread.t +++ b/ext/threads/t/thread.t @@ -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, diff --git a/ext/threads/threads.pm b/ext/threads/threads.pm index 4559013..32d592f 100755 --- a/ext/threads/threads.pm +++ b/ext/threads/threads.pm @@ -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 Discussion Forum on CPAN: L Annotated POD for L: -L +L L, L diff --git a/ext/threads/threads.xs b/ext/threads/threads.xs index 977a47a..2002619 100755 --- a/ext/threads/threads.xs +++ b/ext/threads/threads.xs @@ -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;