threaded, forked, rethreaded processes will deadlock

Dan Nelson dnelson at
Thu Jan 8 20:22:12 PST 2009

In the last episode (Jan 08), Daniel Eischen said:
> On Thu, 8 Jan 2009, Brian Fundakowski Feldman wrote:
> > It appears that the post-fork hooks for malloc(3) are somewhat
> > broken such that when a threaded program forks, and then its child
> > attempts to go threaded, it deadlocks because it already appears to
> > have locks held.  I am not familiar enough with the current
> > libthr/libc/rtld-elf interaction that I've been able to fix it
> > myself, unfortunately.
> There's really nothing to fix - according to POSIX you are only
> allowed to call async-signal-safe functions in the child forked from
> a threaded process.  If you are trying to do anything other than
> that, it may or may not work on FreeBSD, but it is not guaranteed and
> is not portable.

The Rationale section of the pthread_atfork() page is a good read here,

	Dan Nelson
	dnelson at

More information about the freebsd-hackers mailing list