On 07/26/2011 07:50 AM, Santiago Vila wrote:
Yes, most likely this is a kernel and/or glibc bug.  POSIX requires
readlinkat(dfd, "", buf, size) to fail with ENOENT, if dfd is either
AT_FDCWD or open on a directory.  Which does strace say about the
syscall made just before the gnulib test-readlink fails?


--- SIGCHLD (Child exited) @ 0 (0) ---
readlink("no_such", 0x7fff370e7340, 80) = -1 ENOENT (No such file or directory)
readlink("no_such/", 0x7fff370e7340, 80) = -1 ENOENT (No such file or directory)
readlink("", 0x7fff370e7340, 80)        = -1 EINVAL (Invalid argument)

There's the bug. This is failing with EINVAL instead of ENOENT, which is contrary to POSIX. However, this kernel bug has already been papered over in gnulib, which means that it is merely a matter of updating m4 to use newer gnulib to make this test failure go away.

http://git.savannah.gnu.org/cgit/gnulib.git/commit/?id=dc446909

--
Eric Blake   ebl...@redhat.com    +1-801-349-2682
Libvirt virtualization library http://libvirt.org

Reply via email to