NetBSD-Users archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
Re: signal handling problem
In article <201007111734.53291.mark%ecs.vuw.ac.nz@localhost>,
Mark Davies <mark%ecs.vuw.ac.nz@localhost> wrote:
>On Sunday 11 July 2010 12:37:49 Christos Zoulas wrote:
>> >As written it fails to reap children (on 5.1_RC3) but if you remove the
>> >"if (sigchild)" prior to the "while ((pid = waitpid..." it works.
>>
>> Looks like a kernel bug to me. Have you ktrace'd -i it?
>
>Well not "-i" but I have ktrace'd the parent:
>
> 460 1 cnid_metad CALL pselect(1,0xbfbfe8f4,0,0,0,0xbfbfee38)
> 460 1 cnid_metad RET pselect -1 errno 4 Interrupted system call
> 460 1 cnid_metad CALL wait4(0xffffffff,0xbfbfee6c,1,0)
> 460 1 cnid_metad RET wait4 6437/0x1925
> 460 1 cnid_metad CALL close(2)
> 460 1 cnid_metad RET close 0
> 460 1 cnid_metad CALL wait4(0xffffffff,0xbfbfee6c,1,0)
> 460 1 cnid_metad RET wait4 0
> 460 1 cnid_metad CALL pselect(1,0xbfbfe8f4,0,0,0,0xbfbfee38)
>
>is what it looks like in the working (without if (sigchild)) version. In
>the original version (with if (sigchild)) its just
>
> 460 1 cnid_metad CALL pselect(1,0xbfbfe8f4,0,0,0,0xbfbfee38)
> 460 1 cnid_metad RET pselect -1 errno 4 Interrupted system call
> 460 1 cnid_metad CALL pselect(1,0xbfbfe8f4,0,0,0,0xbfbfee38)
>
>so the pselect is getting interrupted its just that sigchild is not getting
>set
Yes, that is why I am asking. It seems that while pselect is getting
interrupted by presumably the sigchld signal, the sigchld signal is
not being posted to the process so the sigchld variable is not set.
christos
Home |
Main Index |
Thread Index |
Old Index