Can close-ing a pipe trigger a SIGPIPE?
Mikhail T.
mi+thun at aldan.algebra.com
Sat Oct 17 17:54:00 UTC 2009
Kostik Belousov написав(ла):
> Take ktrace of both parent and child.
>
I can see the curious piece right here:
The child exits:
92723 tclsh8.5 CALL exit(0)
The parent masks SIGPIPE (as part of my workaround):
92722 tclsh8.5 CALL sigaction(SIGPIPE,0x7fffffffa9e0,0)
92722 tclsh8.5 RET sigaction 0
This 0-size write must be part of the pipe-closing -- descriptors 4 and
5 must be the pipe's:
92722 tclsh8.5 CALL write(0x4,0x800e24028,0)
92722 tclsh8.5 RET write -1 errno 32 Broken pipe
92722 tclsh8.5 PSIG SIGPIPE caught handler=0x800f126d0 mask=0x0 code=0x0
92722 tclsh8.5 CALL sigreturn(0x7fffffffa0c0)
92722 tclsh8.5 RET sigreturn JUSTRETURN
92722 tclsh8.5 CALL close(0x5)
92722 tclsh8.5 RET close 0
92722 tclsh8.5 CALL close(0x4)
92722 tclsh8.5 RET close 0
Why would it write 0 bytes? Is doing so triggering a SIGPIPE now -- but,
perhaps, didn't use to?
Thanks!
-mi
More information about the freebsd-stable
mailing list