X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=ext%2Fthreads%2Fthreads.xs;h=59e3597aadba329939d9a6b195d9518458b39467;hb=65575be5af9681bf691b8b72b0e5b7f432a867bf;hp=cbe4e04b3301519ab4b62e84af0fb23ee39bd0c6;hpb=9d7debe1023b7931d135e515197539d2f69518ce;p=p5sagit%2Fp5-mst-13.2.git diff --git a/ext/threads/threads.xs b/ext/threads/threads.xs index cbe4e04..59e3597 100755 --- a/ext/threads/threads.xs +++ b/ext/threads/threads.xs @@ -280,7 +280,7 @@ Perl_ithread_run(void * arg) { } PUTBACK; if (SvTRUE(ERRSV)) { - Perl_warn(aTHX_ "Died:%" SVf,ERRSV); + Perl_warn(aTHX_ "thread failed to start: %" SVf, ERRSV); } FREETMPS; LEAVE; @@ -288,10 +288,6 @@ Perl_ithread_run(void * arg) { } PerlIO_flush((PerlIO*)NULL); - MUTEX_LOCK(&create_destruct_mutex); - active_threads--; - assert( active_threads >= 0 ); - MUTEX_UNLOCK(&create_destruct_mutex); MUTEX_LOCK(&thread->mutex); thread->state |= PERL_ITHR_FINISHED; @@ -301,6 +297,11 @@ Perl_ithread_run(void * arg) { } else { MUTEX_UNLOCK(&thread->mutex); } + MUTEX_LOCK(&create_destruct_mutex); + active_threads--; + assert( active_threads >= 0 ); + MUTEX_UNLOCK(&create_destruct_mutex); + #ifdef WIN32 return (DWORD)0; #else