Date: Sat, 17 Oct 2009 20:59:41 +0300 From: Kostik Belousov <kostikbel@gmail.com> To: "Mikhail T." <mi+thun@aldan.algebra.com> Cc: stable@freebsd.org Subject: Re: Can close-ing a pipe trigger a SIGPIPE? Message-ID: <20091017175941.GK2160@deviant.kiev.zoral.com.ua> In-Reply-To: <4ADA04B3.1000704@aldan.algebra.com> References: <4AD9F4ED.2050002@aldan.algebra.com> <20091017172718.GJ2160@deviant.kiev.zoral.com.ua> <4ADA04B3.1000704@aldan.algebra.com>
next in thread | previous in thread | raw e-mail | index | archive | help
[-- Attachment #1 --] On Sat, Oct 17, 2009 at 01:53:55PM -0400, Mikhail T. wrote: > 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? Obviously, I cannot answer the question. This is something that should be read from source code or asked by authors. [-- Attachment #2 --] -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.10 (FreeBSD) iEYEARECAAYFAkraBgwACgkQC3+MBN1Mb4gvxACg4dINw+O+/SWEBhfX/W0Pr5Nk ydoAoIKZFTxI/jTgwl9hbOLUwyWT4et1 =1+ri -----END PGP SIGNATURE-----
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20091017175941.GK2160>
