Message366007
I removed _pending_calls.finishing for multiple reasons:
* _PyEval_AddPendingCall() used the C API whereas the caller may not hold the GIL.
* bpo-40082: trip_signal() can be called from a thread which has no Python thread state. On Windows, CTRL+C calls trip_signal() in a new thread a each call.
I rewrote trip_signal() to only use the PyInterpreterState ("interp") and avoid PyThreadState ("tstate") in PR 19441 to fix bpo-40082.
trip_signal() should read and set atomtic variables: don't modify globals without a lock. _PyEval_AddPendingCall() is not fully async-signal safe yet :-/ Using a lock is unsafe in a signal handler. |
|
Date |
User |
Action |
Args |
2020-04-08 21:18:03 | vstinner | set | recipients:
+ vstinner, eric.snow |
2020-04-08 21:18:03 | vstinner | set | messageid: <1586380683.2.0.159862469845.issue37127@roundup.psfhosted.org> |
2020-04-08 21:18:03 | vstinner | link | issue37127 messages |
2020-04-08 21:18:03 | vstinner | create | |
|