On Wed, 22 Sep 2004, Chris Stenton wrote: > If you create a thread before calling daemon then the next thread you > create after the daemon call will cause the following error from the > libpthread library. daemon() calls fork(). I don't think you can create a threaded program after a fork if you are already threaded. You have to wait to do any threading (including mutexes and stuff) until after the fork. When you call daemon() there is already a thread and perhaps some locks in the library (libc and libpthread). After the fork, the parent exits and the child is left. You are single threaded after the fork (as defined by POSIX), but libpthread and libc have locks that may be locked by threads created before the fork. > Fatal error 'mutex is on list' at line 516 in file > /usr/src/lib/libpthread/thread/thr_mutex.c (errno = 0) > > This error does not occur if you link with -lc_r, linking with -lthr > causes a core dump. -lthr does not look very stable. > > Here is some test code. I am running FreeBSD 5.3-beta > > Please reply directly as I am not on the mailing list -- Dan EischenReceived on Wed Sep 22 2004 - 09:59:36 UTC
This archive was generated by hypermail 2.4.0 : Wed May 19 2021 - 11:38:13 UTC