jeff 2007-06-12 07:24:47 UTC FreeBSD src repository
Modified files: sys/sys proc.h sys/kern kern_thread.c Log: Solve a complex exit race introduced with thread_lock: - Add a count of exiting threads, p_exitthreads, to struct proc. - Increment p_exithreads when we set the deadthread in thread_exit(). - When we thread_stash() a deadthread use an atomic to drop the count. - Spin until the p_exithreads count reaches 0 in thread_wait(). - Lock the last exiting thread momentarily to be certain that it has exited cpu_throw(). - Restructure thread_wait(). It does not need a loop as there will only ever be one thread. Tested by: [EMAIL PROTECTED] Reported by: kris, [EMAIL PROTECTED] Revision Changes Path 1.249 +33 -15 src/sys/kern/kern_thread.c 1.484 +1 -0 src/sys/sys/proc.h _______________________________________________ cvs-all@freebsd.org mailing list http://lists.freebsd.org/mailman/listinfo/cvs-all To unsubscribe, send any mail to "[EMAIL PROTECTED]"