Issue31418
Created on 2017-09-11 12:49 by Oren Milman, last changed 2017-09-14 06:42 by serhiy.storchaka. This issue is now closed.
| Pull Requests | |||
|---|---|---|---|
| URL | Status | Linked | Edit |
| PR 3539 | merged | Oren Milman, 2017-09-13 10:26 | |
| PR 3556 | merged | python-dev, 2017-09-13 22:30 | |
| Messages (7) | |||
|---|---|---|---|
| msg301872 - (view) | Author: Oren Milman (Oren Milman) * | Date: 2017-09-11 12:49 | |
The following code causes an assertion failure in PyErr_WriteUnraisable() (in Python/errors.c): class BadException(Exception): __module__ = None class BadClass: def __del__(self): raise BadException foo = BadClass() del foo this is because PyErr_WriteUnraisable() assumes that __module__ is a string, and passes it to _PyUnicode_EqualToASCIIId(), which asserts it received a string. what is the wanted behavior in such a case? should we ignore the bad __module__ and print '<unknown>' as the module name in the traceback? |
|||
| msg301873 - (view) | Author: Serhiy Storchaka (serhiy.storchaka) * | Date: 2017-09-11 13:25 | |
Printing '<unknown>' LGTM. Implicit converting to str can raise a warning or exception if __module__ is a bytes object. |
|||
| msg301874 - (view) | Author: Serhiy Storchaka (serhiy.storchaka) * | Date: 2017-09-11 13:27 | |
I think this patch doesn't need a test (which would require using a subprocess). |
|||
| msg302042 - (view) | Author: Oren Milman (Oren Milman) * | Date: 2017-09-13 09:48 | |
what do you mean by 'Implicit converting to str can raise a warning or exception if __module__ is a bytes object.'? should we treat __module__ differently in case it is a bytes object? |
|||
| msg302047 - (view) | Author: Serhiy Storchaka (serhiy.storchaka) * | Date: 2017-09-13 10:02 | |
PyFile_WriteObject(moduleName, f, Py_PRINT_RAW) implicitly converts its argument to string. I mean that treating non-string moduleName the same way as string moduleName not equal to string "builtins" and calling PyFile_WriteObject() would cause other problem. Treating non-string moduleName the same way as moduleName==NULL LGTM. |
|||
| msg302126 - (view) | Author: Serhiy Storchaka (serhiy.storchaka) * | Date: 2017-09-13 22:30 | |
New changeset f6e61df01536493f1280cd07639c7ff9bffb2cdc by Serhiy Storchaka (Oren Milman) in branch 'master': bpo-31418: Fix an assertion failure in PyErr_WriteUnraisable() in case of an exception with a bad __module__ attribute. (#3539) https://github.com/python/cpython/commit/f6e61df01536493f1280cd07639c7ff9bffb2cdc |
|||
| msg302145 - (view) | Author: Serhiy Storchaka (serhiy.storchaka) * | Date: 2017-09-14 06:41 | |
New changeset 5dbb28ececdd0382d85b164aaf37bec1ae08036c by Serhiy Storchaka (Miss Islington (bot)) in branch '3.6': [3.6] bpo-31418: Fix an assertion failure in PyErr_WriteUnraisable() in case of an exception with a bad __module__ attribute. (GH-3539) (#3556) https://github.com/python/cpython/commit/5dbb28ececdd0382d85b164aaf37bec1ae08036c |
|||
| History | |||
|---|---|---|---|
| Date | User | Action | Args |
| 2017-09-14 06:42:14 | serhiy.storchaka | set | status: open -> closed resolution: fixed stage: patch review -> resolved |
| 2017-09-14 06:41:41 | serhiy.storchaka | set | messages: + msg302145 |
| 2017-09-13 22:30:16 | python-dev | set | pull_requests: + pull_request3548 |
| 2017-09-13 22:30:08 | serhiy.storchaka | set | messages: + msg302126 |
| 2017-09-13 22:27:35 | serhiy.storchaka | set | versions: + Python 3.6 |
| 2017-09-13 10:26:02 | Oren Milman | set | keywords:
+ patch stage: patch review pull_requests: + pull_request3534 |
| 2017-09-13 10:02:15 | serhiy.storchaka | set | messages: + msg302047 |
| 2017-09-13 09:48:48 | Oren Milman | set | messages: + msg302042 |
| 2017-09-11 13:27:17 | serhiy.storchaka | set | messages: + msg301874 |
| 2017-09-11 13:25:24 | serhiy.storchaka | set | nosy:
+ serhiy.storchaka messages: + msg301873 |
| 2017-09-11 12:49:19 | Oren Milman | create | |