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