bug-gnulib
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [PATCH 2/3] getdtablesize: Extend RLIMIT_NOFILE fallback case to And


From: enh
Subject: Re: [PATCH 2/3] getdtablesize: Extend RLIMIT_NOFILE fallback case to Android
Date: Mon, 23 Feb 2015 21:56:34 -0800

oops. fixed in AOSP by https://android-review.googlesource.com/#/c/134752/.

On Mon, Feb 23, 2015 at 9:44 AM, Kevin Cernekee <address@hidden> wrote:
> On Sun, Feb 22, 2015 at 7:11 PM, Paul Eggert <address@hidden> 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.



reply via email to

[Prev in Thread] Current Thread [Next in Thread]