6.1 libpthread: pthread_create and _pq_insert_tail: Already in priority queue

Julian Elischer julian at elischer.org
Wed Mar 22 11:12:18 UTC 2006


Volker Stolz wrote:

>A rather largish application (the most recent version of GHC, see lang/ghc)
>fails in its runtime system with:
>
>_pq_insert_tail: Already in priority queue
>
>Basically some threads and mutexes are involved, then the application forks, some more threads
>are created and then I get this error on a pthread_create().
>
>If I use libmap.conf to map libpthread to either libthr or libc_r, the error
>doesn't occur. I'm a bit baffled by this...any pointers are welcome!
>
>This is mentioned on some MySQL-lists as well, but never with an explanation :|
>Maybe the runtime is violation some assumptions on what it should be able to do
>with threads, but I couldn't find anything "interesting".
>
>Cheers,
>  Volker
>  
>
This is probably the old "The pthead standard says that after a fork a 
pthreaded child can only do async-safe
library calls (those that are safe for signals), before it does an 
exec() (which it almost must do).
The parent can of course continue on doing normal work..  All othe 
rthreads in teh child will have been
uncerimoniously killed.


More information about the freebsd-hackers mailing list