Bug #17164
closedThreads can ignore kill/interrupt/abort
Description
Threads can opt-out of requests to shut down the thread, including 'thr.kill' and the interrupt that happens when a main thread shuts down. When the interrupt happens, 'ensure' clauses will run in the thread's stack. If one of these clauses raises an error, a higher stack frame can rescue it and then execution proceeds as normal.
My understanding is that, when the main thread exits, all other threads are supposed to exit and then the program will exit. Using this 'ensure-raise-rescue' technique, a thread can delay program shutdown indefinitely.
The attached script reproduces the problem. It is very hard to exit without using 'kill -9'.
Files
Updated by jeremyevans0 (Jeremy Evans) about 4 years ago
- Is duplicate of Bug #13882: Exception in `ensure` stops threads from exiting added
Updated by matz (Yukihiro Matsumoto) over 3 years ago
- Status changed from Open to Closed
If the programmer intentionally ignores the interrupt, it is, by definition, intentional.
So I vote for leaving this as it is now.
Matz.