Subject: Re: bug#10305: coreutils-8.14, "rm -r" fails with EBADF

From: Paul Eggert <[email-masked]>
Date: Fri, 16 Dec 2011 10:47:17 -0800

On 12/16/11 05:46, Joachim Schmitz wrote:
> It is not O_NOCTTY or O_NONBLOCK and the others (O_SEARCH, O_DIRECTORY,
> O_NOFOLLOW, O_NOATIME) don't exist here.

It could be the FD_CLOEXEC, perhaps.  What does the following do?
Try it standalone, and also try it compiled and linked against
gnulib.

#include <fcntl.h>
#include <unistd.h>
#include <stdio.h>

int main (void)
{
  int fd, r, fd2;
  fd = open (".", O_RDONLY | O_NOCTTY | O_NONBLOCK);
  if (fd < 0)
    return perror ("open"), 1;
  r = fcntl (fd, F_SETFD, FD_CLOEXEC);
  if (r < 0)
    return perror ("F_SETFD"), 1;
  fd2 = dup (fd);
  if (fd2 < 0)
    return perror ("dup"), 1;
  return 0;
}