Porting on FreeBSD 53

Seán C. Farley sean-freebsd at farley.org
Thu May 12 14:43:55 PDT 2005


On Thu, 12 May 2005, Seán C. Farley wrote:

> On Thu, 12 May 2005, Hervé Kergourlay wrote:
>
> <snip>
>
>> 4) wait() API
>> 
>> 2 problems, the first is a ECHILD error on a wait call after a fork
>> fork The code is generic for most of unix system. Is there any
>> specific problems to manage the fork and wait APIs ?
>> the second problem with calls is a blocking wait() call in the same
>> condition but this time the son process is finished but the wait call
>> in the father stays blocked, again it's a generic Unix code
>> 
>> If there is no evidence, ask me for more informations
>
> The second problem sounds like what I am encountering
> (http://www.freebsd.org/cgi/query-pr.cgi?pr=77818) with zsh for my
> shell.  You did suspend (sigsuspend()) SIGCHLD before the fork?  By
> "fork fork", do you mean you fork twice?

Ah ha!  I see the problem that has been causing me this problem and
probably you too.  Signal suspensions (only these?) are not being copied
with a double fork().  Here is an example program[1] to illustrate.
They do get copied on FreeBSD-4.10 and Linux.  I just do not know if
they are supposed to be copied.

Seán

P.S.  I included David since he has been trying to help me with this
bug.

   1. http://www.farley.org/freebsd/tmp/grandparent.c
-- 
sean-freebsd at farley.org


More information about the freebsd-hackers mailing list