mainThe GNU Bourne-Again SHell - Support: sr #103583, Bash redirection undo file...

 
 

sr #103583: Bash redirection undo file descriptors not closed before forking off processes.

Submitter:  None
Submitted:  Thu 18 Nov 2004 10:44:50 AM UTC
   
 
Category:  None Priority:  5 - Normal
Severity:  3 - Normal Status:  Done
Privacy:  Public Assigned to:  None
Originator Email:  -email is unavailable- Open/Closed:  Open
Operating System:  None
* Mandatory Fields

Add a New Comment Rich Markup
   

Wed 25 Mar 2015 02:54:16 PM UTC, comment #1: 

Not reproducible,

dualbus@yaqui ~ % bash fds.sh
total 0
lr-x------ 1 dualbus dualbus 64 Mar 25 08:53 0 -> /dev/null
l-wx------ 1 dualbus dualbus 64 Mar 25 08:53 1 -> /dev/null
l-wx------ 1 dualbus dualbus 64 Mar 25 08:53 2 -> /dev/null
c is 3

Eduardo Bustamante <dualbus>
Thu 18 Nov 2004 10:44:50 AM UTC, original submission:  

With some elaborate redirections, it appears that some file descriptors are not being closed prior to spawning off processes. After running the attached script, one can observe the FDs of the sleep process by typing:

$ ls -l /proc/`pidof sleep`/fd/

This gives:
total 4
lr-x------    1 b        b              64 Nov 18 18:32 0 -> /dev/null
l-wx------    1 b        b              64 Nov 18 18:32 1 -> /dev/null
l-wx------    1 b        b              64 Nov 18 18:32 10 -> pipe:[245971]
l-wx------    1 b        b              64 Nov 18 18:32 2 -> /dev/null

As you can see, there is an extra FD 10 there which is inherited by sleep. The other end of that pipe is attached to the script. Hence the script will hang until the sleep process terminates (or whatever other long-lived process or daemon is spawned by this script).

Looking at bash's source, it appears related to the add_undo_redirect function and its actions. (Should the FD have the close-on-exec flag set?)

The same script operates correctly under zsh and dash.

(The reasons for the crazy redirections is to obtain the exit status of "Stuff" portably. In bash, PIPESTATUS would suffice but is not portable.)

Thanks,
Bernard.

Anonymous

 

(Note: upload size limit is set to 16384 kB, after insertion of the required escape characters.)

Attach Files:
   
   
Comment:
   

Attached Files
file #3901:  fds.sh added by None (167B - text/x-sh - Example script to demonstrate bug.)

 

Depends on the following items: None found

Items that depend on this one: None found

 

Carbon-Copy List
  • -email is unavailable- added by chet (Updated the item)
  • -email is unavailable- added by dualbus (Posted a comment)
  •  

    There are 0 votes so far. Votes easily highlight which items people would like to see resolved in priority, independently of the priority of the item set by tracker managers.

    Only logged-in users can vote.

     

    Follow 2 latest changes.

    Date Changed by Updated Field Previous Value => Replaced by
    2015-11-12 chet StatusNone Done
    2004-11-18 None Attached File- Added fds.sh, #80

    Back to the top

    Powered by Savane 3.13-758e.
    Corresponding source code