Fixes issue #26083: Workaround a subprocess bug that raised an incorrect
"ValueError: insecure string pickle" exception instead of the actual exception on some platforms such as Mac OS X when an exception raised in the forked child process prior to the exec() was large enough that it overflowed the internal errpipe_read pipe buffer.
This commit is contained in:
parent
167c336725
commit
0d207fd8cf
|
@ -1313,8 +1313,12 @@ class Popen(object):
|
|||
os.close(errpipe_write)
|
||||
|
||||
# Wait for exec to fail or succeed; possibly raising exception
|
||||
# Exception limited to 1M
|
||||
data = _eintr_retry_call(os.read, errpipe_read, 1048576)
|
||||
pickle_bits = [data]
|
||||
while data:
|
||||
pickle_bits.append(data)
|
||||
data = _eintr_retry_call(os.read, errpipe_read, 1048576)
|
||||
data = "".join(pickle_bits)
|
||||
finally:
|
||||
if p2cread is not None and p2cwrite is not None:
|
||||
_close_in_parent(p2cread)
|
||||
|
|
|
@ -39,6 +39,12 @@ Core and Builtins
|
|||
Library
|
||||
-------
|
||||
|
||||
- Issue #26083: Workaround a subprocess bug that raises an incorrect
|
||||
"ValueError: insecure string pickle" exception instead of the actual
|
||||
exception on some platforms such as Mac OS X when an exception raised
|
||||
in the forked child process prior to the exec() was large enough that
|
||||
it overflowed the internal errpipe_read pipe buffer.
|
||||
|
||||
- Issue #24103: Fixed possible use after free in ElementTree.iterparse().
|
||||
|
||||
- Issue #20954: _args_from_interpreter_flags used by multiprocessing and some
|
||||
|
|
Loading…
Reference in New Issue