Message186628
After a closer look at recent checkins, I found this checking for the trash can mechanism: 5a2ef447b80d (ticket #13992).
This appears to be the cause:
1.20 #define Py_TRASHCAN_SAFE_BEGIN(op) \
1.21 - if (_PyTrash_delete_nesting < PyTrash_UNWIND_LEVEL) { \
1.22 - ++_PyTrash_delete_nesting;
1.23 - /* The body of the deallocator is here. */
1.24 + do { \
1.25 + PyThreadState *_tstate = PyThreadState_GET(); \
1.26 + if (_tstate->trash_delete_nesting < PyTrash_UNWIND_LEVEL) { \
1.27 + ++_tstate->trash_delete_nesting;
1.28 + /* The body of the deallocator is here. */
At the time the Py_AtExit functions are called, the thread state
is NULL, so the if (_tstate->...) segfaults. |
|
Date |
User |
Action |
Args |
2013-04-12 13:45:37 | lemburg | set | recipients:
+ lemburg, pitrou |
2013-04-12 13:45:37 | lemburg | set | messageid: <1365774337.76.0.849848106249.issue17703@psf.upfronthosting.co.za> |
2013-04-12 13:45:37 | lemburg | link | issue17703 messages |
2013-04-12 13:45:37 | lemburg | create | |
|