On 12/18/11 02:31, Joachim Schmitz wrote: > it seems to go wrong in fcntl.c, line 194: > > /* Haiku alpha 2 loses fd flags on original. */ > int flags = fcntl (fd, F_GETFD); <== > if (flags < 0) > { > result = -1; > break; > } > > that fcntl() returns a -1 with errno set to EBADF.
What is the value of fd at that point? Is it actually an invalid file descriptor? > For some reason I can step into that fcntl(), guess it is calling the > system's fcntl here? Yes, that's how it's supposed to work. If you plant a breakpoint on the parent fts_build, and single step through that, can you find out whether continue_readdir is true? If it's true, then please investigate why dirfd (fts.c line 1285) returned an invalid file descriptor. If it's false, then please investigate why opendirat (..., &dir_fd) (fts.c line 1301) succeeded but set dir_fd to an invalid file descriptor.