oops. fixed in AOSP by https://android-review.googlesource.com/#/c/134752/.
On Mon, Feb 23, 2015 at 9:44 AM, Kevin Cernekee <cerne...@google.com> wrote: > On Sun, Feb 22, 2015 at 7:11 PM, Paul Eggert <egg...@cs.ucla.edu> wrote: >> Kevin Cernekee wrote: >>> >>> Based on comments in tests/test-sys_resource.c it looks like somebody >>> may have started a <sys/resource.h> replacement, but there is more >>> work to be done. >> >> >> Yes. It's not clear how to implement all that stuff in the sys_resource >> module, so instead, how about the more-modest patch attached? I've pushed >> it. > > Now test-getdtablesize and test-fcntl pass. But we have a new problem > with test-dup2, as this assertion is failing: > > /* Assigning to self must be a no-op. */ > ASSERT (dup2 (fd, fd) == fd); > > Under the hood, Bionic implements dup2() using dup3(): > > int dup2(int old_fd, int new_fd) { > return dup3(old_fd, new_fd, 0); > } > > openat(AT_FDCWD, "test-dup2.tmp", O_RDWR|O_CREAT|O_TRUNC|O_LARGEFILE, 0600) = > 3 > fcntl64(3, F_GETFL) = 0x20002 (flags O_RDWR|O_LARGEFILE) > close(4) = -1 EBADF (Bad file descriptor) > close(5) = -1 EBADF (Bad file descriptor) > fcntl64(4, F_GETFL) = -1 EBADF (Bad file descriptor) > fcntl64(5, F_GETFL) = -1 EBADF (Bad file descriptor) > dup3(3, 3, 0) = -1 EINVAL (Invalid argument) > write(2, "test-dup2.c:123: assertion 'dup2"..., 56test-dup2.c:123: > assertion 'dup2 (fd, fd) == fd' failed > ) = 56 > > > and according to the man page, dup3() fails with EINVAL if oldfd == > newfd. Unlike dup2(), which should return newfd. > > gnulib commit f9fa7159134175 ("dup2, fcntl: cross-compiler better for > Android") changed the logic to guess "yes" instead of "no" on the > question of whether dup2() is sane on Linux. I suspect this was the > source of the regression? Perhaps we need another a special case in > there for Android (attached). -- Elliott Hughes - http://who/enh - http://jessies.org/~enh/ Java i18n/JNI/NIO, or bionic questions? Mail me/drop by/add me as a reviewer.