NetBSD-Users archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: signal handling problem



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

cheers
mark


Home | Main Index | Thread Index | Old Index