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