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
