On Tue, 30 Apr 2002, Archie Cobbs wrote:
> Hi,
> Any comments positive or negative to the patch in bin/37614 ?
> I'd like to commit this soon...
> 
>   http://www.freebsd.org/cgi/query-pr.cgi?pr=37614

The patch is for stable, but would need to be applied to -current
first (after some adjustment).

Hmm, what about just bypassing the pthread_cancel() if the
thread is already in the process of exiting?

Index: uthread_cancel.c
===================================================================
RCS file: /opt/d/CVS/src/lib/libc_r/uthread/uthread_cancel.c,v
retrieving revision 1.12
diff -u -r1.12 uthread_cancel.c
--- uthread_cancel.c    6 Mar 2002 19:28:40 -0000       1.12
+++ uthread_cancel.c    1 May 2002 02:35:23 -0000
@@ -20,7 +20,8 @@
 
        if ((ret = _find_thread(pthread)) != 0) {
                /* NOTHING */
-       } else if (pthread->state == PS_DEAD || pthread->state == PS_DEADLOCK) {
+       } else if (pthread->state == PS_DEAD || pthread->state == PS_DEADLOCK
+            || (pthread->flags & PTHREAD_EXITING) != 0) {
                ret = 0;
        } else {
                /* Protect the scheduling queues: */


-- 
Dan Eischen


To Unsubscribe: send mail to [EMAIL PROTECTED]
with "unsubscribe freebsd-stable" in the body of the message

Reply via email to