odd KSE panic
Andrew Gallatin
gallatin at cs.duke.edu
Sun Jul 4 13:58:29 PDT 2004
Julian Elischer writes:
> When one thread calls exit() it marks the fact that the process is
> exiting, and then tries to wakeup all the other threads, and then
> suspends itself. The other threads, when awoken are supposed to notice
> what's going on and abort whatever they are doing and when they release
> all their resources, (by unrolling back to the user boundary) they are
> supposed to call thread_exit(). The last one out is supposed to
> wakeyup the original thread that called exit(), which can then proceed
> on the basis that it is now the only remaining thread.
>
> If there are threads waiting in uninterruptble sleeps then the process
> as a whole can not exit until they have finished sleeping and come back
> to the user boundary and called thread_exit().
>
> None of the three threads you show is in exit, or even anything related
> to exit.
>
Thank you for this explaination.. The way that threads exit is one
of the things I've never understood about KSE.
>
> ummmm nope.. where is mx_free?
>
Unreleased 3rd party device driver..
Drew
More information about the freebsd-threads
mailing list