
On 2017-06-28 07:40, Erik Bray wrote:
Hi folks,
Since the java.lang.Thread.stop() "debacle", it has been obvious that stopping code to run other code has been dangerous. KeyboardInterrupt (any interrupt really) is dangerous. Now, we can probably code a solution, but how about we remove the danger: I suggest we remove interrupts from Python, and make them act more like java.lang.Thread.interrupt(); setting a thread local bit to indicate an interrupt has occurred. Then we can write explicit code to check for that bit, and raise an exception in a safe place if we wish. This can be done with Python code, or convenient places in Python's C source itself. I imagine it would be easier to whitelist where interrupts can raise exceptions, rather than blacklisting where they should not. In the meantime, my solution is to spawn new threads to do the work, while the main thread has the sole purpose to sleep, and set the "please stop" flag upon interrupt.