Date: Thu, 26 Jan 2006 09:55:05 +0100 From: Jose Marcio Martins da Cruz <Jose-Marcio.Martins@ensmp.fr> To: Julian Elischer <julian@elischer.org> Cc: freebsd-hackers@freebsd.org, freebsd-threads@freebsd.org Subject: Re: Changes from 5.2.1 to 5.3 (theads / signal handling) Message-ID: <43D88E69.1020102@ensmp.fr> In-Reply-To: <43D802DF.9040003@elischer.org> References: <43D74F91.2090009@ensmp.fr> <43D7C786.1090803@elischer.org> <43D7E45E.8070103@ensmp.fr> <43D802DF.9040003@elischer.org>
next in thread | previous in thread | raw e-mail | index | archive | help
Hello, Julian Elischer wrote: > Jose Marcio Martins da Cruz wrote: >>> also, does the child do an exec() after forking? >> >> No. The child gets out the father loop and calls another >> initialisation function. > > The Posix spec says that after a fork(0 teh child must do almost nothing > before calling exec() > and that AT A MAXIMUM it should only call async-safe functions. (i.e. > functions that can be called from > within signal handlers). So, if I understood, the better I can do is, instead of letting the child follow a different path after the fork, he shall better do an exec of another thing and start a clean process... > > There is all sorts of state being kept for the "now non existant" > threads in that address space. > > For example, some of them will still exist if they were stopped in user > space at the time, > but some of them will not (if tehy were in the kenrel at teh time). In > addition, > the process will now be marked "non threaded" in the kernel, as it now only > has one kernel thread (as specified by posix) so an attempt to schedule > another thread > from user space will lead to unknown behaviour. The child will most likely > run for a bit and then freeze up or die in some mysterious way. ( sound > familiar?). Very clear... Even on releases older than 5.3... 8-( You clarified a bug which was "harassing" me for a very long time... Can you point me a good doc about threads, signals, and such kind of things in FreeBSD context ? Thanks very much for all your very helpful hints. Jose-Marcio
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?43D88E69.1020102>