classification
Title: Bad file descriptor error occurs if random library is imported before closing FDs
Type: behavior Stage:
Components: Library (Lib) Versions: Python 3.4
process
Status: closed Resolution: duplicate
Dependencies: Superseder: urandom persistent fd - not re-openned after fd close
View: 21207
Assigned To: Nosy List: vstinner, waynesong
Priority: normal Keywords:

Created on 2015-01-05 21:12 by waynesong, last changed 2015-01-05 21:27 by vstinner. This issue is now closed.

Messages (2)
msg233478 - (view) Author: Wayne Song (waynesong) Date: 2015-01-05 21:12
The following script:

import os
import resource
import random

print("1")

for fd in range(resource.getrlimit(resource.RLIMIT_NOFILE)[0]):
    try:
        if fd not in range(0, 3):
            os.close(fd)
    except os.error:
        pass

print("2")
print(os.urandom(32))
print("3")

Crashes with the following output:

1
2
Traceback (most recent call last):
  File "test.py", line 17, in <module>
    print(os.urandom(32))
OSError: [Errno 9] Bad file descriptor

On an Ubuntu 14.04 install (in VirtualBox).  It seems to run correctly on Mac OS X.  The script runs fine if I don't import random at the top.
msg233479 - (view) Author: STINNER Victor (vstinner) * (Python committer) Date: 2015-01-05 21:27
This issue is a duplicate of the issue #21207 which was already fixed in Python 3.4.1.
History
Date User Action Args
2015-01-05 21:27:53vstinnersetstatus: open -> closed

nosy: + vstinner
messages: + msg233479

superseder: urandom persistent fd - not re-openned after fd close
resolution: duplicate
2015-01-05 21:12:41waynesongcreate