pthread - fork - execv problem
Dan Nelson
dnelson at allantgroup.com
Tue Jun 22 18:26:54 GMT 2004
In the last episode (Jun 22), Nikos Ntarmos said:
> On Tue, Jun 22, 2004 at 09:56:33AM -0500, Dan Nelson wrote:
> > It may be an application bug. After a fork both processes are
> > independant. The child should not be able to affect the parent
> > like this, unless the parent does something like holding a mutex
> > used by all the threads and calling wait().
>
> ... or the child holding a mutex before the fork(2) syscall. FWIW the
> Linux info for libc and the NetBSD and Solaris man pages mention
> pthread_atfork(3), used to install handlers to take care of such
> cases. FreeBSD seems to not know of any such function, so chances are
> that fork()'ing from inside a posix thread is not supported (?).
It's definitely a possibility.
libpthread in -current does support pthread_atfork, and I have a patch
(below) that adds the same functionality to libc_r and libthr that I
need to send-pr. Pointy hat to the original committer for breaking ABI
compatibility.
http://dan.allantgroup.com/FreeBSD/
--
Dan Nelson
dnelson at allantgroup.com
More information about the freebsd-threads
mailing list