cvs commit: src/sys/sys proc.h src/sys/kern kern_thread.c
Julian Elischer
julian at elischer.org
Tue Jun 12 17:52:24 UTC 2007
Jeff Roberson wrote:
> 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.
I think I was being paranoid.. also called "being on the safe side".
>
> Tested by: moose at opera.com
> Reported by: kris, moose at opera.com
>
> Revision Changes Path
> 1.249 +33 -15 src/sys/kern/kern_thread.c
> 1.484 +1 -0 src/sys/sys/proc.h
More information about the cvs-all
mailing list