Closed rgrinberg closed 4 years ago
I see this every so often too. It doesn't happen every time I try to restart so I'm unsure what triggers it or how to reproduce it.
I've narrowed it down to these lines. Please this to ~/.doom.d/config.el
and see if it fixes the issue:
(after! persp-mode
(persp-def-buffer-save/load
:tag-symbol 'def-indirect-buffer
:predicate #'buffer-base-buffer
:save-function (lambda (buf tag vars)
(list tag (buffer-name buf) vars
(buffer-name (buffer-base-buffer buf))))
:load-function (lambda (savelist &rest _rest)
(cl-destructuring-bind (buf-name _vars base-buf-name &rest _)
(cdr savelist)
(push (cons buf-name base-buf-name)
+workspaces--indirect-buffers-to-restore)
nil))))
Thanks. I will try this out the next time I get this issue. I only observe it sporadically so it will take time before I get the opportunity to test the fix.
@hlissner could you explain what you think the issue is in a few more words? Perhaps it will help me to reproduce.
@hlissner I just tried that code snippet — eval'ed it from within a running session that was throwing the same error. After evaluating it, the error persisted.
However, the message seems to have disappeared after a restart. Will report if it persists.
@kot-behemoth since this uses the after!
macro, afair this is only executed when persp-mode
is loaded. If you execute it in a running session, it won't be executed since persp-mode
is loaded already.
@rgrinberg In a nutshell, Selecting deleted buffer
errors occur when you try to switch to a killed buffer (with switch-to-buffer
, display-buffer
or with-current-buffer
, for instance). Somewhere in this persp-def-buffer-save/load
call in ui/workspace is doing this.
To produce a more informative backtrace, could you delete all .elc files in `~/.emacs.d/.local/packages/elpa/persp-mode-/`, restart Emacs and try to produce a new backtrace?
This should de-obfuscate all the "compiled-function" entries in the backtrace.
@hlissner I'll try. Isn't this a problem in purpose however? It shouldn't be passing deleted buffers to these callbacks as far as I can tell.
I don't know what this has to do with purpose. Do you mean persp-mode? In any case it's hard to tell without a more detailed backtrace.
Indeed, I meant persp-mode
. I'll try and get a detailed stacktrace ASAP
Still seeing this error even with that code snippet added to my config.el
file. I tried getting a debug backtrace using debug-on-entry
and stepping through the commands in doom/restart-and-restore
but emacs crashed after a particular command. I'll try to note down what command that was the next time if I can reproduce it.
Update: It fails on this command * ucs-normalize-HFS-NFD-region(1 55)
@siddharthshekar It is likely hitting byte-compiled functions. Try deleting all .elc files in `~/.emacs.d/.local/packages/elpa/persp-mode-/`, then restart Emacs and produce a new backtrace, if possible.
I deleted all the .elc files in my .emacs.d just to be sure and saw the same persp-mode
error again with debug-on-entry
crashing Emacs at the same point again.
Okay. I've been following this issue for a while and I finally got a debug with Henrik's fix and the .elc files deleted. It just happens seemingly randomly so it's pretty weird and takes a while to trigger again.
I've pushed a potential fix for this issue in e32fd0c. Please update and let me know if it addresses the error.
EDIT: fixed the fix in 0cf669a (fixing intensifies).
I upgraded and ran this all day at work. Ran into it again towards the end of the day.
Edit2: I hope it's not a problem that I'm doing SPC q s
or doom/quicksave-session
to get these backtraces. If it is, let me know.
Also I removed the old fix you posted here. Don't know if I should have left that in or not.
Edit:
243d69b should resolve this issue. I've also merged the straight branch to develop, so you'll need to switch back. Let me know if that isn't the case and I will reopen this issue.
@hlissner I don't believe this is resolved and I was able to reproduce this today with the new straight updated develop branch.
I have been unable to reproduce this on develop after the straight branch merge. I did run into a problem where on restart, the naming and ordering of the workspaces was preserved, but they would all be empty. I reinstalled persp-mode
and haven't had any problems since.
Yeah I haven't been able to reproduce this since the fix, and the other fix for a different issue.
I was just able to reproduce this on commit:
21883d9700707b3a4bc4518f61e70691edc6e2de
error in process filter: read-from-minibuffer: Selecting deleted buffer
error in process filter: Selecting deleted buffer
This time, the only distinction was that it occurred when I opened Emacs from a restart.
@rgrinberg That seems like an unrelated error. Are you able to get a backtrace from it?
Is there a way to restart doom with the debugger on? I should be able to get the backtrace then.
@rgrinberg You can either use the prefix argument: SPC u SPC q r
, or kill Emacs normally, then start Emacs with emacs --debug-init --restore
I'm able to reproduce this bug the old way:
Debugger entered--Lisp error: (error "Selecting deleted buffer")
#f(compiled-function (s-f) #<bytecode 0x42660565>)((lambda (buffer) (when (funcall (with-no-warnings (quote (lambda (buffer &rest rest-args) (when ... ...)))) buffer) (let ((vars-list (with-current-buffer buffer (delete-if-not ... ... :key ...)))) (funcall (with-no-warnings (quote (closure ... ... ...))) buffer (quote def-indirect-buffer) vars-list)))))
cl--position(nil ((lambda (buffer) (when (funcall (with-no-warnings (quote (lambda ... ...))) buffer) (let ((vars-list (with-current-buffer buffer ...))) (funcall (with-no-warnings (quote ...)) buffer (quote def-indirect-buffer) vars-list)))) (lambda (buffer) (when (funcall (with-no-warnings (quote (lambda ... ...))) buffer) (let ((vars-list (with-current-buffer buffer ...))) (list (quote def-compilation-buffer) (buffer-name buffer) vars-list)))) (lambda (buffer) (when (funcall (with-no-warnings (quote (lambda ... ...))) buffer) (let ((vars-list (with-current-buffer buffer ...))) (list (quote def-eshell-buffer) (buffer-name buffer) vars-list)))) (lambda (b) (when (persp-buffer-filtered-out-p b persp-filter-save-buffers-functions) (quote skip))) persp-tramp-save-buffer (lambda (b) (when (eq (quote dired-mode) (buffer-local-value (quote major-mode) b)) (\` (def-buffer (\, (buffer-name b)) (\, (buffer-local-value ... b)) (\, (buffer-local-value ... b)))))) (lambda (b) (\` (def-buffer (\, (buffer-name b)) (\, (buffer-file-name b)) (\, (buffer-local-value (quote major-mode) b)))))) 0 nil nil)
cl-position(nil ((lambda (buffer) (when (funcall (with-no-warnings (quote (lambda ... ...))) buffer) (let ((vars-list (with-current-buffer buffer ...))) (funcall (with-no-warnings (quote ...)) buffer (quote def-indirect-buffer) vars-list)))) (lambda (buffer) (when (funcall (with-no-warnings (quote (lambda ... ...))) buffer) (let ((vars-list (with-current-buffer buffer ...))) (list (quote def-compilation-buffer) (buffer-name buffer) vars-list)))) (lambda (buffer) (when (funcall (with-no-warnings (quote (lambda ... ...))) buffer) (let ((vars-list (with-current-buffer buffer ...))) (list (quote def-eshell-buffer) (buffer-name buffer) vars-list)))) (lambda (b) (when (persp-buffer-filtered-out-p b persp-filter-save-buffers-functions) (quote skip))) persp-tramp-save-buffer (lambda (b) (when (eq (quote dired-mode) (buffer-local-value (quote major-mode) b)) (\` (def-buffer (\, (buffer-name b)) (\, (buffer-local-value ... b)) (\, (buffer-local-value ... b)))))) (lambda (b) (\` (def-buffer (\, (buffer-name b)) (\, (buffer-file-name b)) (\, (buffer-local-value (quote major-mode) b)))))) :if #f(compiled-function (sl) #<bytecode 0x42660071>) :key #f(compiled-function (s-f) #<bytecode 0x42660565>))
apply(cl-position nil ((lambda (buffer) (when (funcall (with-no-warnings (quote (lambda ... ...))) buffer) (let ((vars-list (with-current-buffer buffer ...))) (funcall (with-no-warnings (quote ...)) buffer (quote def-indirect-buffer) vars-list)))) (lambda (buffer) (when (funcall (with-no-warnings (quote (lambda ... ...))) buffer) (let ((vars-list (with-current-buffer buffer ...))) (list (quote def-compilation-buffer) (buffer-name buffer) vars-list)))) (lambda (buffer) (when (funcall (with-no-warnings (quote (lambda ... ...))) buffer) (let ((vars-list (with-current-buffer buffer ...))) (list (quote def-eshell-buffer) (buffer-name buffer) vars-list)))) (lambda (b) (when (persp-buffer-filtered-out-p b persp-filter-save-buffers-functions) (quote skip))) persp-tramp-save-buffer (lambda (b) (when (eq (quote dired-mode) (buffer-local-value (quote major-mode) b)) (\` (def-buffer (\, (buffer-name b)) (\, (buffer-local-value ... b)) (\, (buffer-local-value ... b)))))) (lambda (b) (\` (def-buffer (\, (buffer-name b)) (\, (buffer-file-name b)) (\, (buffer-local-value (quote major-mode) b)))))) (:if #f(compiled-function (sl) #<bytecode 0x42660071>) :key #f(compiled-function (s-f) #<bytecode 0x42660565>)))
cl-find(nil ((lambda (buffer) (when (funcall (with-no-warnings (quote (lambda ... ...))) buffer) (let ((vars-list (with-current-buffer buffer ...))) (funcall (with-no-warnings (quote ...)) buffer (quote def-indirect-buffer) vars-list)))) (lambda (buffer) (when (funcall (with-no-warnings (quote (lambda ... ...))) buffer) (let ((vars-list (with-current-buffer buffer ...))) (list (quote def-compilation-buffer) (buffer-name buffer) vars-list)))) (lambda (buffer) (when (funcall (with-no-warnings (quote (lambda ... ...))) buffer) (let ((vars-list (with-current-buffer buffer ...))) (list (quote def-eshell-buffer) (buffer-name buffer) vars-list)))) (lambda (b) (when (persp-buffer-filtered-out-p b persp-filter-save-buffers-functions) (quote skip))) persp-tramp-save-buffer (lambda (b) (when (eq (quote dired-mode) (buffer-local-value (quote major-mode) b)) (\` (def-buffer (\, (buffer-name b)) (\, (buffer-local-value ... b)) (\, (buffer-local-value ... b)))))) (lambda (b) (\` (def-buffer (\, (buffer-name b)) (\, (buffer-file-name b)) (\, (buffer-local-value (quote major-mode) b)))))) :if #f(compiled-function (sl) #<bytecode 0x42660071>) :key #f(compiled-function (s-f) #<bytecode 0x42660565>))
apply(cl-find nil ((lambda (buffer) (when (funcall (with-no-warnings (quote (lambda ... ...))) buffer) (let ((vars-list (with-current-buffer buffer ...))) (funcall (with-no-warnings (quote ...)) buffer (quote def-indirect-buffer) vars-list)))) (lambda (buffer) (when (funcall (with-no-warnings (quote (lambda ... ...))) buffer) (let ((vars-list (with-current-buffer buffer ...))) (list (quote def-compilation-buffer) (buffer-name buffer) vars-list)))) (lambda (buffer) (when (funcall (with-no-warnings (quote (lambda ... ...))) buffer) (let ((vars-list (with-current-buffer buffer ...))) (list (quote def-eshell-buffer) (buffer-name buffer) vars-list)))) (lambda (b) (when (persp-buffer-filtered-out-p b persp-filter-save-buffers-functions) (quote skip))) persp-tramp-save-buffer (lambda (b) (when (eq (quote dired-mode) (buffer-local-value (quote major-mode) b)) (\` (def-buffer (\, (buffer-name b)) (\, (buffer-local-value ... b)) (\, (buffer-local-value ... b)))))) (lambda (b) (\` (def-buffer (\, (buffer-name b)) (\, (buffer-file-name b)) (\, (buffer-local-value (quote major-mode) b)))))) :if #f(compiled-function (sl) #<bytecode 0x42660071>) (:key #f(compiled-function (s-f) #<bytecode 0x42660565>)))
find-if(#f(compiled-function (sl) #<bytecode 0x42660071>) ((lambda (buffer) (when (funcall (with-no-warnings (quote (lambda ... ...))) buffer) (let ((vars-list (with-current-buffer buffer ...))) (funcall (with-no-warnings (quote ...)) buffer (quote def-indirect-buffer) vars-list)))) (lambda (buffer) (when (funcall (with-no-warnings (quote (lambda ... ...))) buffer) (let ((vars-list (with-current-buffer buffer ...))) (list (quote def-compilation-buffer) (buffer-name buffer) vars-list)))) (lambda (buffer) (when (funcall (with-no-warnings (quote (lambda ... ...))) buffer) (let ((vars-list (with-current-buffer buffer ...))) (list (quote def-eshell-buffer) (buffer-name buffer) vars-list)))) (lambda (b) (when (persp-buffer-filtered-out-p b persp-filter-save-buffers-functions) (quote skip))) persp-tramp-save-buffer (lambda (b) (when (eq (quote dired-mode) (buffer-local-value (quote major-mode) b)) (\` (def-buffer (\, (buffer-name b)) (\, (buffer-local-value ... b)) (\, (buffer-local-value ... b)))))) (lambda (b) (\` (def-buffer (\, (buffer-name b)) (\, (buffer-file-name b)) (\, (buffer-local-value (quote major-mode) b)))))) :key #f(compiled-function (s-f) #<bytecode 0x42660565>))
#f(compiled-function (b) #<bytecode 0x42660571>)(#<killed buffer>)
mapcar(#f(compiled-function (b) #<bytecode 0x42660571>) (#<buffer foo.lean> #<buffer config.el<6>> #<buffer config.el<5>> #<buffer fsharp> #<buffer elixir> #<buffer packages.el<3>> #<buffer config.el<4>> #<buffer README.md> #<buffer lean-flycheck.el> #<buffer lean-settings.el> #<buffer lean-mode.el> #<buffer lean-mode> #<killed buffer> #<buffer lean<2>> #<buffer tmp> #<buffer config.el<3>> #<buffer ocaml> #<buffer packages.el<2>> #<buffer config.el<2>> #<buffer lang> #<buffer lean> #<buffer packages.el> #<buffer magit-diff: .emacs.d> #<buffer magit: .emacs.d> #<buffer agda> #<buffer config.el> #<buffer README.org>))
persp-buffers-to-savelist(#s(perspective :name "main" :buffers (#<buffer foo.lean> #<buffer config.el<6>> #<buffer config.el<5>> #<buffer fsharp> #<buffer elixir> #<buffer packages.el<3>> #<buffer config.el<4>> #<buffer README.md> #<buffer lean-flycheck.el> #<buffer lean-settings.el> #<buffer lean-mode.el> #<buffer lean-mode> #<killed buffer> #<buffer lean<2>> #<buffer tmp> #<buffer config.el<3>> #<buffer ocaml> #<buffer packages.el<2>> #<buffer config.el<2>> #<buffer lang> #<buffer lean> #<buffer packages.el> #<buffer magit-diff: .emacs.d> #<buffer magit: .emacs.d> #<buffer agda> #<buffer config.el> #<buffer README.org>) :window-conf (((min-height . 8) (min-width . 20) (min-height-ignore . 6) (min-width-ignore . 7) (min-height-safe . 2) (min-width-safe . 4) (min-pixel-height . 152) (min-pixel-width . 160) (min-pixel-height-ignore . 104) (min-pixel-width-ignore . 49) (min-pixel-height-safe . 38) (min-pixel-width-safe . 32)) hc (pixel-width . 1436) (pixel-height . 769) (total-width . 180) (total-height . 40) (normal-height . 1.0) (normal-width . 1.0) (combination-limit) (vc (pixel-width . 718) (pixel-height . 769) (total-width . 90) (total-height . 40) (normal-height . 1.0) (normal-width . 0.5) (combination-limit) (leaf (pixel-width . 718) (pixel-height . 384) (total-width . 90) (total-height . 20) (normal-height . 0.5) (normal-width . 1.0) (parameters (better-jumper-struct . #s(better-jumper-jump-list-struct :ring ... :idx -1))) (buffer "config.el<2>" (selected) (hscroll . 0) (fringes 4 4 t) (margins nil) (scroll-bars nil 0 t nil 0 t) (vscroll . 0) (dedicated) (point . 80) (start . 1))) (leaf (last . t) (pixel-width . 718) (pixel-height . 385) (total-width . 90) (total-height . 20) (normal-height . 0.5) (normal-width . 1.0) (parameters (better-jumper-struct . #s(better-jumper-jump-list-struct :ring ... :idx -1))) (buffer "foo.lean" (selected) (hscroll . 0) (fringes 4 4 t) (margins nil) (scroll-bars nil 0 t nil 0 t) (vscroll . 0) (dedicated) (point . 1) (start . 1)))) (leaf (last . t) (pixel-width . 718) (pixel-height . 769) (total-width . 90) (total-height . 40) (normal-height . 1.0) (normal-width . 0.5) (parameters (better-jumper-struct . #s(better-jumper-jump-list-struct :ring (0 65 . [... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...]) :idx -1))) (buffer "lean-mode.el" (selected . t) (hscroll . 0) (fringes 4 4 t) (margins nil) (scroll-bars nil 0 t nil 0 t) (vscroll . 0) (dedicated) (point . 1898) (start . 1804)))) :parameters ((last-project-root . "/Users/rgrinberg/.emacs.d/.local/straight/repos/lean-mode/")) :weak nil :auto nil :hidden nil))
persp-to-savelist(#s(perspective :name "main" :buffers (#<buffer foo.lean> #<buffer config.el<6>> #<buffer config.el<5>> #<buffer fsharp> #<buffer elixir> #<buffer packages.el<3>> #<buffer config.el<4>> #<buffer README.md> #<buffer lean-flycheck.el> #<buffer lean-settings.el> #<buffer lean-mode.el> #<buffer lean-mode> #<killed buffer> #<buffer lean<2>> #<buffer tmp> #<buffer config.el<3>> #<buffer ocaml> #<buffer packages.el<2>> #<buffer config.el<2>> #<buffer lang> #<buffer lean> #<buffer packages.el> #<buffer magit-diff: .emacs.d> #<buffer magit: .emacs.d> #<buffer agda> #<buffer config.el> #<buffer README.org>) :window-conf (((min-height . 8) (min-width . 20) (min-height-ignore . 6) (min-width-ignore . 7) (min-height-safe . 2) (min-width-safe . 4) (min-pixel-height . 152) (min-pixel-width . 160) (min-pixel-height-ignore . 104) (min-pixel-width-ignore . 49) (min-pixel-height-safe . 38) (min-pixel-width-safe . 32)) hc (pixel-width . 1436) (pixel-height . 769) (total-width . 180) (total-height . 40) (normal-height . 1.0) (normal-width . 1.0) (combination-limit) (vc (pixel-width . 718) (pixel-height . 769) (total-width . 90) (total-height . 40) (normal-height . 1.0) (normal-width . 0.5) (combination-limit) (leaf (pixel-width . 718) (pixel-height . 384) (total-width . 90) (total-height . 20) (normal-height . 0.5) (normal-width . 1.0) (parameters (better-jumper-struct . #s(better-jumper-jump-list-struct :ring ... :idx -1))) (buffer "config.el<2>" (selected) (hscroll . 0) (fringes 4 4 t) (margins nil) (scroll-bars nil 0 t nil 0 t) (vscroll . 0) (dedicated) (point . 80) (start . 1))) (leaf (last . t) (pixel-width . 718) (pixel-height . 385) (total-width . 90) (total-height . 20) (normal-height . 0.5) (normal-width . 1.0) (parameters (better-jumper-struct . #s(better-jumper-jump-list-struct :ring ... :idx -1))) (buffer "foo.lean" (selected) (hscroll . 0) (fringes 4 4 t) (margins nil) (scroll-bars nil 0 t nil 0 t) (vscroll . 0) (dedicated) (point . 1) (start . 1)))) (leaf (last . t) (pixel-width . 718) (pixel-height . 769) (total-width . 90) (total-height . 40) (normal-height . 1.0) (normal-width . 0.5) (parameters (better-jumper-struct . #s(better-jumper-jump-list-struct :ring (0 65 . [... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...]) :idx -1))) (buffer "lean-mode.el" (selected . t) (hscroll . 0) (fringes 4 4 t) (margins nil) (scroll-bars nil 0 t nil 0 t) (vscroll . 0) (dedicated) (point . 1898) (start . 1804)))) :parameters ((last-project-root . "/Users/rgrinberg/.emacs.d/.local/straight/repos/lean-mode/")) :weak nil :auto nil :hidden nil))
mapcar(persp-to-savelist (nil #s(perspective :name "main" :buffers (#<buffer foo.lean> #<buffer config.el<6>> #<buffer config.el<5>> #<buffer fsharp> #<buffer elixir> #<buffer packages.el<3>> #<buffer config.el<4>> #<buffer README.md> #<buffer lean-flycheck.el> #<buffer lean-settings.el> #<buffer lean-mode.el> #<buffer lean-mode> #<killed buffer> #<buffer lean<2>> #<buffer tmp> #<buffer config.el<3>> #<buffer ocaml> #<buffer packages.el<2>> #<buffer config.el<2>> #<buffer lang> #<buffer lean> #<buffer packages.el> #<buffer magit-diff: .emacs.d> #<buffer magit: .emacs.d> #<buffer agda> #<buffer config.el> #<buffer README.org>) :window-conf (((min-height . 8) (min-width . 20) (min-height-ignore . 6) (min-width-ignore . 7) (min-height-safe . 2) (min-width-safe . 4) (min-pixel-height . 152) (min-pixel-width . 160) (min-pixel-height-ignore . 104) (min-pixel-width-ignore . 49) (min-pixel-height-safe . 38) (min-pixel-width-safe . 32)) hc (pixel-width . 1436) (pixel-height . 769) (total-width . 180) (total-height . 40) (normal-height . 1.0) (normal-width . 1.0) (combination-limit) (vc (pixel-width . 718) (pixel-height . 769) (total-width . 90) (total-height . 40) (normal-height . 1.0) (normal-width . 0.5) (combination-limit) (leaf (pixel-width . 718) (pixel-height . 384) (total-width . 90) (total-height . 20) (normal-height . 0.5) (normal-width . 1.0) (parameters (better-jumper-struct . #s(better-jumper-jump-list-struct :ring ... :idx -1))) (buffer "config.el<2>" (selected) (hscroll . 0) (fringes 4 4 t) (margins nil) (scroll-bars nil 0 t nil 0 t) (vscroll . 0) (dedicated) (point . 80) (start . 1))) (leaf (last . t) (pixel-width . 718) (pixel-height . 385) (total-width . 90) (total-height . 20) (normal-height . 0.5) (normal-width . 1.0) (parameters (better-jumper-struct . #s(better-jumper-jump-list-struct :ring ... :idx -1))) (buffer "foo.lean" (selected) (hscroll . 0) (fringes 4 4 t) (margins nil) (scroll-bars nil 0 t nil 0 t) (vscroll . 0) (dedicated) (point . 1) (start . 1)))) (leaf (last . t) (pixel-width . 718) (pixel-height . 769) (total-width . 90) (total-height . 40) (normal-height . 1.0) (normal-width . 0.5) (parameters (better-jumper-struct . #s(better-jumper-jump-list-struct :ring ... :idx -1))) (buffer "lean-mode.el" (selected . t) (hscroll . 0) (fringes 4 4 t) (margins nil) (scroll-bars nil 0 t nil 0 t) (vscroll . 0) (dedicated) (point . 1898) (start . 1804)))) :parameters ((last-project-root . "/Users/rgrinberg/.emacs.d/.local/straight/repos/lean-mode/")) :weak nil :auto nil :hidden nil) #s(perspective :name ".emacs.d" :buffers (#<buffer cl-seq.el.gz> #<buffer *eshell*> #<buffer autoloads.el> #<buffer .local> #<buffer Makefile> #<buffer .emacs.d> #<buffer config.el<3>> #<buffer config.el<4>> #<buffer config.el<7>> #<buffer config.el<2>>) :window-conf (((min-height . 4) (min-width . 10) (min-height-ignore . 3) (min-width-ignore . 3) (min-height-safe . 1) (min-width-safe . 2) (min-pixel-height . 76) (min-pixel-width . 80) (min-pixel-height-ignore . 52) (min-pixel-width-ignore . 24) (min-pixel-height-safe . 19) (min-pixel-width-safe . 16)) leaf (pixel-width . 1436) (pixel-height . 769) (total-width . 180) (total-height . 40) (normal-height . 1.0) (normal-width . 1.0) (parameters (better-jumper-struct . #s(better-jumper-jump-list-struct :ring (0 63 . [... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...]) :idx -1))) (buffer "cl-seq.el.gz" (selected . t) (hscroll . 0) (fringes 4 4 t) (margins nil) (scroll-bars nil 0 t nil 0 t) (vscroll . 0) (dedicated) (point . 20856) (start . 20856))) :parameters ((last-project-root . "/Users/rgrinberg/.emacs.d/.local/straight/repos/lean-mode/")) :weak nil :auto nil :hidden nil)))
persps-to-savelist(#<hash-table equal 3/10 0x42667341>)
persp-save-state-to-file("/Users/rgrinberg/.emacs.d/.local/etc/workspaces/autosave")
(cond ((require (quote persp-mode) nil t) (if persp-mode nil (persp-mode 1)) (setq persp-auto-save-opt 0) (persp-save-state-to-file file)) ((and (require (quote frameset) nil t) (require (quote restart-emacs) nil t)) (let ((frameset-filter-alist (append (quote (...)) frameset-filter-alist)) (desktop-base-file-name (file-name-nondirectory file)) (desktop-dirname (file-name-directory file)) (desktop-restore-eager t) desktop-file-modtime) (make-directory desktop-dirname t) (let ((desktop-file-modtime (nth 5 (file-attributes ...)))) (desktop-save desktop-dirname t)))) ((error "No session backend to save session with")))
doom-save-session()
doom/quicksave-session()
doom/restart-and-restore(nil)
funcall-interactively(doom/restart-and-restore nil)
call-interactively(doom/restart-and-restore nil nil)
command-execute(doom/restart-and-restore)
So this bug is definitely not fixed btw.
I haven't seen this in ages, so it's likely to be fixed.
It's been happening to me over the last few weeks - it happened a couple times yesterday on latest. Maybe it's something config related? I will try to dig further when I get a chance.
Yeah, this is still an issue it seems.
Definitely still an issue. Makes +helm/workspace-mini
unusable since calling it results in helm-buffers-list--init: Wrong type argument: stringp, nil
.
Yeah, guys. Honestly this issue should be closed.
And you guys should open up your own issues, with your own debug logs.
What caused this could have literally nothing to do with why "+helm/workspace-mini
unusable since calling it results in helm-buffers-list--init: Wrong type argument: stringp, nil
".
It is related, I haven't mentioned that, but +helm/workspace-mini
throws the error always at the same time when selecting deleted buffer
happens.
Cool.
So now all that's needed is:
Your M-x doom/info
.
A backtrace of the error. Guide here: https://github.com/hlissner/doom-emacs/blob/develop/docs/getting_started.org#how-to-extract-a-backtrace-from-an-error
And the steps to reproduce/anything else you can give to help hunt down the problem.
Here's the backtrace that I get for +helm/workspace-mini
. At the same time when this happens, the following messages are appearing:
Error running timer: (error "Selecting deleted buffer") [2 times]
next-line: End of buffer [2 times]
Error running timer: (error "Selecting deleted buffer")
next-line: End of buffer [2 times]
Error running timer: (error "Selecting deleted buffer")
Debugger entered--Lisp error: (wrong-type-argument stringp nil)
helm-buffer--format-mode-name(nil)
helm-buffers-list--init()
apply(helm-buffers-list--init nil)
helm-apply-functions-from-source(((name . "Buffers") (init . helm-buffers-list--init) (candidates nil) (keymap keymap (11 . helm-buffer-run-kill-buffers) (8 . helm-buffer-run-query-replace) (6 . helm-buffers-run-occur) (1 . helm-toggle-all-marks) (67108911 . helm-toggle-buffers-details) (67108910 . helm-buffers-toggle-show-hidden-buffers) (S-return . helm-buffer-switch-other-window) (C-return) (29) (67108925 . helm-buffer-diff-persistent) (3 keymap (20 . helm-buffers-switch-to-buffer-new-tab) (97) (100) (61 . helm-buffer-run-ediff) (15 . helm-buffer-switch-other-frame) (111 . helm-buffer-switch-other-window)) (24 keymap (11 . helm-buffer-run-kill-buffers) (15) (111) (115) (19) (4 . helm-buffers-run-browse-project)) (19 . helm-buffer-run-save-some-buffers) (27 keymap (14 . helm-buffer-run-rename-buffer) (8 . helm-buffer-run-query-replace-regexp) (85) (13) (67108896) (97) (109) (82) (37) (67108901) (68) (71) (61 . helm-buffer-run-ediff-merge) (103 keymap (115 . helm-buffer-run-zgrep))) keymap (17 . keyboard-quit) (1 . helm-toggle-all-marks) (C-return . helm-select-action) (tab) (f13 lambda nil (interactive) (helm-select-nth-action 12)) (f12 lambda nil (interactive) (helm-select-nth-action 11)) (f11 lambda nil (interactive) (helm-select-nth-action 10)) (f10 lambda nil (interactive) (helm-select-nth-action 9)) (f9 lambda nil (interactive) (helm-select-nth-action 8)) (f8 lambda nil (interactive) (helm-select-nth-action 7)) (f7 lambda nil (interactive) (helm-select-nth-action 6)) (f6 lambda nil (interactive) (helm-select-nth-action 5)) (f5 lambda nil (interactive) (helm-select-nth-action 4)) (f4 lambda nil (interactive) (helm-select-nth-action 3)) (f3 lambda nil (interactive) (helm-select-nth-action 2)) (f2 lambda nil (interactive) (helm-select-nth-action 1)) (menu-bar keymap (help-menu keymap (describe keymap (describe-mode . helm-help)))) (help keymap (109 . helm-help)) (23 . #f(compiled-function () (interactive nil) #<bytecode 0x158348e231c9>)) (f1 lambda nil (interactive) (helm-select-nth-action 0)) (8 keymap (104 . undefined) (8 . undefined) (99 . helm-customize-group) (4 . helm-enable-or-switch-to-debug)) (20 . helm-toggle-resplit-and-swap-windows) (C-tab . undefined) (67108897 . helm-toggle-suspend-update) (3 keymap (57 . helm-execute-selection-action-at-nth-+9) (56 . helm-execute-selection-action-at-nth-+8) (55 . helm-execute-selection-action-at-nth-+7) (54 . helm-execute-selection-action-at-nth-+6) (53 . helm-execute-selection-action-at-nth-+5) (52 . helm-execute-selection-action-at-nth-+4) (51 . helm-execute-selection-action-at-nth-+3) (50 . helm-execute-selection-action-at-nth-+2) (49 . helm-execute-selection-action-at-nth-+1) (63 . helm-help) (110 . #f(compiled-function () (interactive nil) #<bytecode 0x158348e22609>)) (108 . helm-display-line-numbers-mode) (62 . helm-toggle-truncate-line) (21 . helm-refresh) (6 . helm-follow-mode) (9 . helm-copy-to-buffer) (11 . helm-kill-selection-and-quit) (25 . helm-yank-selection) (37 . helm-exchange-minibuffer-and-header-line) (95 . helm-toggle-full-frame) (45 . helm-swap-windows)) (67108987 . helm-enlarge-window) (67108989 . helm-narrow-window) (19 . helm-minibuffer-history) (24 keymap (57 . helm-execute-selection-action-at-nth-+9) (56 . helm-execute-selection-action-at-nth-+8) (55 . helm-execute-selection-action-at-nth-+7) (54 . helm-execute-selection-action-at-nth-+6) (53 . helm-execute-selection-action-at-nth-+5) (52 . helm-execute-selection-action-at-nth-+4) (51 . helm-execute-selection-action-at-nth-+3) (50 . helm-execute-selection-action-at-nth-+2) (49 . helm-execute-selection-action-at-nth-+1) (104 keymap (77 . helm-help)) (2 . helm-resume-list-buffers-after-quit) (98 . helm-resume-previous-session-after-quit) (6 . helm-quit-and-find-file)) (11) (67108896 . helm-toggle-visible-mark-forward) (0) ...) (action . helm-type-buffer-actions) (persistent-action . helm-buffers-list-persistent-action) (persistent-help . "Show this buffer") (help-message . helm-buffer-help-message) (requires-pattern . 0) (filtered-candidate-transformer helm-skip-boring-buffers helm-buffers-sort-transformer helm-highlight-buffers) (volatile . t) (match . helm-buffers-match-function) (redisplay . identity) (nohighlight . t) (mode-line "Buffer(s)" nil) (header-line . "C-j: Show this buffer (keeping session)") (resume lambda nil (setq helm-buffers-in-project-p nil)) (group . helm-buffers) (migemo . nomultimatch) (buffer-list . helm-buffer-list)) helm-buffers-list--init)
helm-compute-attr-in-sources(init (((name . "Buffers") (init . helm-buffers-list--init) (candidates nil) (keymap keymap ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... keymap ... ... ... ... ... ... ... ... ...) (action . helm-type-buffer-actions) (persistent-action . helm-buffers-list-persistent-action) (persistent-help . "Show this buffer") (help-message . helm-buffer-help-message) (requires-pattern . 0) (filtered-candidate-transformer helm-skip-boring-buffers helm-buffers-sort-transformer helm-highlight-buffers) (volatile . t) (match . helm-buffers-match-function) (redisplay . identity) (nohighlight . t) (mode-line "Buffer(s)" nil) (header-line . "C-j: Show this buffer (kee...") (resume lambda nil ...) (group . helm-buffers) (migemo . nomultimatch) (buffer-list . helm-buffer-list)) ((name . "Recentf") (init lambda nil ... ...) (candidates lambda nil recentf-list) (keymap keymap ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... keymap ... ... ... ... ... ...) (action ... ... ... ... ... ... ... ... ... ...) (persistent-action . helm-ff-kill-or-find-buffer-fname) (persistent-help . "Show this file") (help-message . helm-generic-file-help-message) (requires-pattern . 0) (candidate-transformer helm-skip-boring-files helm-w32-pathname-transformer) (filtered-candidate-transformer helm-highlight-files helm-fuzzy-matching-sort-fn-preserve-ties-order helm-fuzzy-highlight-matches) (action-transformer helm-transform-file-load-el helm-transform-file-browse-url helm-transform-file-cache) (pattern-transformer . helm-recentf-pattern-transformer) (match helm-mm-exact-match helm-mm-match helm-fuzzy-match helm-mm-3-migemo-match) (fuzzy-match . t) (redisplay . identity) (mode-line "File(s)" nil) (header-line . "C-j: Show this file (keepi...") (multimatch . t) (match-part lambda ... ...) (group . helm-files) (migemo . t)) ((name . "Create buffer") (candidates "dummy") (keymap keymap ... keymap ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...) (action ... ... ...) (requires-pattern . 0) (filtered-candidate-transformer ... helm-fuzzy-highlight-matches) (volatile . t) (match . identity) (redisplay . identity) (header-line . "C-j: Create buffer (C-u ch...") (group . helm) (accept-empty . t))))
helm-initial-setup(nil (((name . "Buffers") (init . helm-buffers-list--init) (candidates nil) (keymap keymap ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... keymap ... ... ... ... ... ... ... ... ...) (action . helm-type-buffer-actions) (persistent-action . helm-buffers-list-persistent-action) (persistent-help . "Show this buffer") (help-message . helm-buffer-help-message) (requires-pattern . 0) (filtered-candidate-transformer helm-skip-boring-buffers helm-buffers-sort-transformer helm-highlight-buffers) (volatile . t) (match . helm-buffers-match-function) (redisplay . identity) (nohighlight . t) (mode-line "Buffer(s)" nil) (header-line . "C-j: Show this buffer (kee...") (resume lambda nil ...) (group . helm-buffers) (migemo . nomultimatch) (buffer-list . helm-buffer-list)) ((name . "Recentf") (init lambda nil ... ...) (candidates lambda nil recentf-list) (keymap keymap ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... keymap ... ... ... ... ... ...) (action ... ... ... ... ... ... ... ... ... ...) (persistent-action . helm-ff-kill-or-find-buffer-fname) (persistent-help . "Show this file") (help-message . helm-generic-file-help-message) (requires-pattern . 0) (candidate-transformer helm-skip-boring-files helm-w32-pathname-transformer) (filtered-candidate-transformer helm-highlight-files helm-fuzzy-matching-sort-fn-preserve-ties-order helm-fuzzy-highlight-matches) (action-transformer helm-transform-file-load-el helm-transform-file-browse-url helm-transform-file-cache) (pattern-transformer . helm-recentf-pattern-transformer) (match helm-mm-exact-match helm-mm-match helm-fuzzy-match helm-mm-3-migemo-match) (fuzzy-match . t) (redisplay . identity) (mode-line "File(s)" nil) (header-line . "C-j: Show this file (keepi...") (multimatch . t) (match-part lambda ... ...) (group . helm-files) (migemo . t)) ((name . "Create buffer") (candidates "dummy") (keymap keymap ... keymap ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...) (action ... ... ...) (requires-pattern . 0) (filtered-candidate-transformer ... helm-fuzzy-highlight-matches) (volatile . t) (match . identity) (redisplay . identity) (header-line . "C-j: Create buffer (C-u ch...") (group . helm) (accept-empty . t))))
helm-initialize(nil nil nil (helm-source-buffers-list helm-source-recentf helm-source-buffer-not-found))
helm-internal((helm-source-buffers-list helm-source-recentf helm-source-buffer-not-found) nil nil nil nil "*helm mini*" nil nil nil)
apply(helm-internal ((helm-source-buffers-list helm-source-recentf helm-source-buffer-not-found) nil nil nil nil "*helm mini*" nil nil nil))
helm((helm-source-buffers-list helm-source-recentf helm-source-buffer-not-found) nil nil nil nil "*helm mini*" nil nil nil)
apply(helm ((helm-source-buffers-list helm-source-recentf helm-source-buffer-not-found) nil nil nil nil "*helm mini*" nil nil nil))
helm(:sources (helm-source-buffers-list helm-source-recentf helm-source-buffer-not-found) :buffer "*helm mini*" :ff-transformer-show-only-basename nil :truncate-lines t :left-margin-width 0)
helm-mini()
(progn (fset 'buffer-list vnew) (helm-mini))
(unwind-protect (progn (fset 'buffer-list vnew) (helm-mini)) (fset 'buffer-list old))
(let* ((vnew #'(lambda (&optional frame) (persp-buffer-list-restricted frame))) (old (symbol-function 'buffer-list))) (unwind-protect (progn (fset 'buffer-list vnew) (helm-mini)) (fset 'buffer-list old)))
(let ((*persp-restrict-buffers-to* 0) (persp-restrict-buffers-to-if-foreign-buffer nil)) (let* ((vnew #'(lambda (&optional frame) (persp-buffer-list-restricted frame))) (old (symbol-function 'buffer-list))) (unwind-protect (progn (fset 'buffer-list vnew) (helm-mini)) (fset 'buffer-list old))))
(with-no-warnings (let ((*persp-restrict-buffers-to* 0) (persp-restrict-buffers-to-if-foreign-buffer nil)) (let* ((vnew #'(lambda (&optional frame) (persp-buffer-list-restricted frame))) (old (symbol-function 'buffer-list))) (unwind-protect (progn (fset 'buffer-list vnew) (helm-mini)) (fset 'buffer-list old)))))
+helm/workspace-mini()
funcall-interactively(+helm/workspace-mini)
call-interactively(+helm/workspace-mini nil nil)
command-execute(+helm/workspace-mini)
A few additional observations. When the problem occurs, (persp-buffer-list-restricted)
returns:
(...normal buffers here... #<killed buffer>)
running (persp-filter-out-bad-buffers)
fixes the problem.
As of 7d60318 this issue should hopefully be resolved. Let me know if it resurfaces and I'll reopen it. Thanks for bringing it to my attention!
This is triggered every time I do
SPC q r
. I'm not sure if this a purpose or doom bug: