[Python-checkins] [3.6] bpo-31418: Fix an assertion failure in PyErr_WriteUnraisable() in case of an exception with a bad __module__ attribute. (GH-3539) (#3556)

Serhiy Storchaka webhook-mailer at python.org
Thu Sep 14 02:41:41 EDT 2017


https://github.com/python/cpython/commit/5dbb28ececdd0382d85b164aaf37bec1ae08036c
commit: 5dbb28ececdd0382d85b164aaf37bec1ae08036c
branch: 3.6
author: Miss Islington (bot) <31488909+miss-islington at users.noreply.github.com>
committer: Serhiy Storchaka <storchaka at gmail.com>
date: 2017-09-14T09:41:39+03:00
summary:

[3.6] bpo-31418: Fix an assertion failure in PyErr_WriteUnraisable() in case of an exception with a bad __module__ attribute. (GH-3539) (#3556)

(cherry picked from commit f6e61df01536493f1280cd07639c7ff9bffb2cdc)

files:
A Misc/NEWS.d/next/Core and Builtins/2017-09-13-13-03-52.bpo-31418.rS-FlC.rst
M Python/errors.c

diff --git a/Misc/NEWS.d/next/Core and Builtins/2017-09-13-13-03-52.bpo-31418.rS-FlC.rst b/Misc/NEWS.d/next/Core and Builtins/2017-09-13-13-03-52.bpo-31418.rS-FlC.rst
new file mode 100644
index 00000000000..6d6cbd81142
--- /dev/null
+++ b/Misc/NEWS.d/next/Core and Builtins/2017-09-13-13-03-52.bpo-31418.rS-FlC.rst	
@@ -0,0 +1,2 @@
+Fix an assertion failure in `PyErr_WriteUnraisable()` in case of an
+exception with a bad ``__module__`` attribute. Patch by Oren Milman.
diff --git a/Python/errors.c b/Python/errors.c
index 60958438152..2f39f9d473d 100644
--- a/Python/errors.c
+++ b/Python/errors.c
@@ -978,7 +978,7 @@ PyErr_WriteUnraisable(PyObject *obj)
     }
 
     moduleName = _PyObject_GetAttrId(t, &PyId___module__);
-    if (moduleName == NULL) {
+    if (moduleName == NULL || !PyUnicode_Check(moduleName)) {
         PyErr_Clear();
         if (PyFile_WriteString("<unknown>", f) < 0)
             goto done;



More information about the Python-checkins mailing list