(defun my-reject-kill-buffer () (message "Do not kill %s" (current-buffer)) nil) (defun my-trigger-bug () (let* ((base-buffer (generate-new-buffer "base")) (indirect-buffer (make-indirect-buffer base-buffer (generate-new-buffer-name "indirect")))) ;; base-buffer: no restriction on killing that buffer. (with-current-buffer base-buffer (insert "base buffer content") (setq-local kill-buffer-query-functions nil)) ;; indirect-buffer: reject any kill-buffer requests (with-current-buffer indirect-buffer (insert "indirect buffer content") (setq-local kill-buffer-query-functions (list 'my-reject-kill-buffer))) ;; Killing base-buffer (with-current-buffer base-buffer (kill-buffer)) ;; This raises the segfault (emacs 29, emacs 30.0.50). (switch-to-buffer indirect-buffer))) (my-trigger-bug)