Message270728
Reproducible on Python 3.6a4ish on Ubuntu. I believe this needs forking multiprocessing.
do_raise is called with 2 NULLs as arguments, it should raise
PyErr_SetString(PyExc_RuntimeError,
"No active exception to reraise");
What happens is that PyThreadState is initialized to *all* NULL pointers on the new thread on multiprocessing, however `type` is expected to point to `Py_None` when no exception has been raised:
PyThreadState *tstate = PyThreadState_GET();
PyObject *tb;
type = tstate->exc_type;
value = tstate->exc_value;
tb = tstate->exc_traceback;
if (type == Py_None) {
PyErr_SetString(PyExc_RuntimeError,
"No active exception to reraise");
return 0;
}
I am not sure where the thread state should have been initialized though |
|
Date |
User |
Action |
Args |
2016-07-18 08:51:34 | ztane | set | recipients:
+ ztane, Romuald, xiang.zhang |
2016-07-18 08:51:34 | ztane | set | messageid: <1468831894.85.0.234383584557.issue27558@psf.upfronthosting.co.za> |
2016-07-18 08:51:34 | ztane | link | issue27558 messages |
2016-07-18 08:51:34 | ztane | create | |
|