New submission from STINNER Victor <[email protected]>:

On a non-Windows OS where _posixsubprocess is missing (subprocess uses the pure 
Python implementation), if the child fails with a Python exception and the 
exception message contains a surrogate character, message.encode() fails 
silently (exception while processing exceptions are just ignored).

Surrogates should be passed to the parent process: surrogatepass can be used 
for that. Attached patch implements this idea with an unit test.

--

_posixsubprocess is not concerned because it writes an empty message for 
OSError (the parent process calls os.strerror() to get the message) or 
"Exception occurred in preexec_fn." (pure ASCII string) for RuntimeError.

On Windows, _subprocess.CreateProcess() calls PyErr_SetFromWindowsErr() on 
failure without the filename. So there is no surrogates here.

----------
components: Library (Lib)
files: subprocess_errmsg.patch
keywords: patch
messages: 103694
nosy: haypo
severity: normal
status: open
title: subprocess: surrogates of the error message (Python implementation on 
non-Windows)
versions: Python 3.1, Python 3.2
Added file: http://bugs.python.org/file17005/subprocess_errmsg.patch

_______________________________________
Python tracker <[email protected]>
<http://bugs.python.org/issue8467>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe: 
http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com

Reply via email to