Control: tags -1 patch On 03/07/12 17:47, Jonathan Nieder wrote: > F_GETFL is 3, so fcntl is being called correctly. But why does > fcntl(F_GETFL) return 1 (== FD_CLOEXEC)? This looks like a bug.
On 28/11/12 16:17, Nicolas Boulenguez wrote: > - int flags = fcntl(fd, F_GETFL); > - if (flags < 0 || fcntl(fd, F_SETFL, flags | FD_CLOEXEC)) > + int flags = fcntl(fd, F_GETFD); > + if (flags < 0 || fcntl(fd, F_SETFD, flags | FD_CLOEXEC)) Of course! How did we miss that? The fcntl calls are getting/setting the wrong flags here and returning 1 (== O_WRONLY) rather than 1 (== FD_CLOEXEC). This explains why it wasn't reproducible on Debian's own kfreebsd (kernel) builds. O_CLOEXEC is undefined in GNU/kFreeBSD's glibc and it doesn't appear in the F_GETFL result. But when running in a jail on upstream FreeBSD kernels, it must be getting 0x00100001 (== O_WRONLY | O_CLOEXEC), and then it tries to F_SETFL with a flag our glibc won't recognise. Thanks a lot for this Nicolas! Regards, -- Steven Chamberlain ste...@pyro.eu.org -- To UNSUBSCRIBE, email to debian-bugs-rc-requ...@lists.debian.org with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org