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

Reply via email to