On OpenBSD, terminating IDLE with ctrl-c from the command line caused a
stuck subprocess MainThread because only the SocketThread was exiting.
M NEWS.txt
M idlever.py
M run.py
diff --git a/Lib/idlelib/run.py b/Lib/idlelib/run.py
index 98b8c13..90a4692 100644
--- a/Lib/idlelib/run.py
+++ b/Lib/idlelib/run.py
@@ -215,6 +215,7 @@
Interrupt the MainThread and exit server if link is dropped.
"""
+ global quitting
try:
raise
except SystemExit:
@@ -233,7 +234,8 @@
traceback.print_exc(file=erf)
print>>erf, '\n*** Unrecoverable, server exiting!'
print>>erf, '-'*40
- exit()
+ quitting = True
+ thread.interrupt_main()
class MyHandler(rpc.RPCHandler):