-
-
Notifications
You must be signed in to change notification settings - Fork 397
Description
The pre_handler_hook in dispatch_shell sets the SIGINT handler to raise a KeyboardInterrupt if the kernel receives a SIGINT: https://github.com/ipython/ipykernel/blob/master/ipykernel/kernelbase.py#L346
However, the try/except surrounding the pre_handler_hook, and the try/except immediately afterwards on line 349 will not catch a KeyboardInterrupt. KeyboardInterrupt is a subclass of BaseException, but not Exception.
The result is that if a user cancels a running command, and the SIGINT arrives after the pre_handler_hook, but before the try/except in _run_cell in interactiveshell.py: https://github.com/ipython/ipython/blob/master/IPython/core/interactiveshell.py#L2974 , the exception is not caught and the kernel crashes.
Can we update dispatch_shell to catch BaseException?