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