New submission from Jonathan Stewmon: Writing to sys.stdout on OS X can fail with IOError: [Errno 4] Interrupted system call.
I have observed this while trying to write to sys.stdout when SIGCHLD is received. The script below consistently reproduces the problem with python 2.7.2 on OS X 10.9.3. import sys import os import signal import subprocess import time children = {} def claim_child(): pid, status = os.wait() p = children.pop(pid) def trap(sig, frame): claim_child() signal.signal(signal.SIGCHLD, trap) running = 0 max_procs = 70 program = [sys.executable, '-c', 'import sys, time; print sys.version; time.sleep(3)'] f = sys.stdout # crashes with: IOError: [Errno 4] Interrupted system call # f = file('/tmp/eintr.log', 'w') # works just fine while True: while len(children) < max_procs: f.write('starting program: {}\n'.format(program)) p = subprocess.Popen(program) children[p.pid] = p time.sleep(0.05) ---------- components: IO messages: 223435 nosy: jstewmon priority: normal severity: normal status: open title: sys.stdout.write on OS X is not EINTR safe versions: Python 2.7 _______________________________________ Python tracker <rep...@bugs.python.org> <http://bugs.python.org/issue22007> _______________________________________ _______________________________________________ Python-bugs-list mailing list Unsubscribe: https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com