From 37c3187f8fe88d43624d95b4323c11f7f73f77ca Mon Sep 17 00:00:00 2001 From: Nathaniel Nicandro Date: Sat, 28 Jan 2023 17:38:38 -0600 Subject: [PATCH] jupyter-kernel-process: Handle fatal signals of a kernel process more cleanly In the process sentinel, only consider the process dying as unexpected when the process object still has a :kernel property. --- jupyter-kernel-process.el | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/jupyter-kernel-process.el b/jupyter-kernel-process.el index a5c4214..9410a59 100644 --- a/jupyter-kernel-process.el +++ b/jupyter-kernel-process.el @@ -362,17 +362,18 @@ See also https://jupyter-client.readthedocs.io/en/stable/kernels.html#kernel-spe (lambda (process _) (pcase (process-status process) ('signal - ;; If a kernel dies unexpectedly, run the shutdown - ;; procedure on it. - (jupyter-shutdown (process-get process :kernel)))))))) + (let ((kernel (process-get process :kernel))) + (when kernel + (warn "Kernel died unexpectedly") + (jupyter-shutdown kernel))))))))) (cl-call-next-method)) (cl-defmethod jupyter-shutdown ((kernel jupyter-kernel-process)) "Shutdown KERNEL by killing its process unconditionally." (let ((process (jupyter-process kernel))) (when process - (delete-process process) - (setf (process-get process :kernel) nil)) + (setf (process-get process :kernel) nil) + (delete-process process)) (cl-call-next-method))) ;; TODO