Subject: Re: bug#25029: shuf generates “Bad file descriptor” error on nfs but only when run as a background process

From: Eric Blake <[email-masked]>
Date: Mon, 28 Nov 2016 10:37:16 -0600

On 11/25/2016 05:59 PM, Pádraig Brady wrote:
> On 25/11/16 22:24, Alex Ryan wrote:
>> I am not certain about this but I *think* this might be a bug in shuf.
>>
>> full description of how to reproduce is here
>> http://stackoverflow.com/questions/40730239/shuf-generates-bad-file-descriptor-error-on-nfs-but-only-when-run-as-a-backgro
> 
> The minimum reproducer is:
> 
>   $ shuf 0>&-
>   shuf: read error: Bad file descriptor
> 
> The reason is that the specified file is reopened to stdin,
> which is a general technique used by single file filters.
> I.E. this isn't specific to shuf:
> 
>   $ tac 0>&-
>   tac: standard input: read error: Bad file descriptor

Technically, POSIX states that ANY attempt to execute a program with fd
0, 1, or 2 closed is undefined behavior, so the bug is yours for not
providing an explicit stdin in the first place.  But I agree that it is
a nice quality-of-implementation thing for coreutils to have
reasonably-sane behavior in the fact of closed fds, even if POSIX does
not require us to.

-- 
Eric Blake   eblake redhat com    +1-919-301-3266
Libvirt virtualization library http://libvirt.org