Package: emacs;
Reported by: Dmitry Gutov <dgutov <at> yandex.ru>
Date: Fri, 29 Nov 2013 18:04:01 UTC
Severity: normal
Found in version 24.3.50
Done: Stefan Monnier <monnier <at> iro.umontreal.ca>
Bug is archived. No further changes may be made.
To add a comment to this bug, you must first unarchive it, by sending
a message to control AT debbugs.gnu.org, with unarchive 16003 in the body.
You can then email your comments to 16003 AT debbugs.gnu.org in the normal way.
Toggle the display of automated, internal messages from the tracker.
View this report as an mbox folder, status mbox, maintainer mbox
bug-gnu-emacs <at> gnu.org
:bug#16003
; Package emacs
.
(Fri, 29 Nov 2013 18:04:02 GMT) Full text and rfc822 format available.Dmitry Gutov <dgutov <at> yandex.ru>
:bug-gnu-emacs <at> gnu.org
.
(Fri, 29 Nov 2013 18:04:02 GMT) Full text and rfc822 format available.Message #5 received at submit <at> debbugs.gnu.org (full text, mbox):
From: Dmitry Gutov <dgutov <at> yandex.ru> To: bug-gnu-emacs <at> gnu.org Subject: 24.3.50; "Stack overflow in equal" in advice--member-p Date: Fri, 29 Nov 2013 20:03:16 +0200
I've been getting this kind of errors lately. Unfortunately, I've been unable to reproduce it from `emacs -Q' so far, but here are two backtraces, one from `vc-dir-mode', and another from `diff-hl-dired-mode'. The problem also usually goes away after restart. Debugger entered--Lisp error: (error "Stack overflow in equal") advice--member-p((closure ((fun closure #1 (p _msg) (let* ((v p) (new (advice--remove-function (process-sentinel v) fun))) (if (eq new (process-sentinel v)) nil (set-process-sentinel v new))) (vc--process-sentinel p code)) (proc . #<process bzr>) (code . #[0 "\302\301\303\300\304\300!\"\"\207" ["/home/gutov/emacs-bzr/trunk/" #[513 "r\300q\210\303.\300\"\210\211?\205%.\304 \305\"\211\203 .\306\307\310.\"\311\"\202#.\312\211.\262.)\207" [#<buffer trunk/*vc-dir*> vc-ewoc mode-line-process vc-dir-update ewoc-collect vc-dir-fileinfo->needs-update vc-dir-refresh-files mapcar vc-dir-fileinfo->name up-to-date nil] 7 "\n\n(fn ENTRIES &optional MORE-TO-COME)"] vc-bzr-after-dir-status file-relative-name vc-bzr-root] 6 "\n\n(fn)"]) vc-sentinel-movepoint vc-log-fileset t) (p _msg) (let* ((v p) (new (advice--remove-function (process-sentinel v) fun))) (if (eq new (process-sentinel v)) nil (set-process-sentinel v new))) (vc--process-sentinel p code)) nil #[128 "\300\302.\"\300\301.\"\210\207" [apply (closure ((fun closure #3 (p _msg) (let* ((v p) (new ...)) (if (eq new ...) nil (set-process-sentinel v new))) (vc--process-sentinel p code)) (proc . #<process bzr>) (code closure ((status . #<process bzr>) (squeezed "status" "--no-classify" "-v" "-S" "./") (full-command . "bzr status --no-classify -v -S ./") (files "./") (flags "status" "--no-classify" "-v" "-S" "./") (file-or-list . "/home/gutov/emacs-bzr/trunk/") (command . "bzr") (okstatus . async) (buffer . #<buffer *VC-Bzr* tmp status>) w32-quote-process-args vc-sentinel-movepoint vc-log-fileset t) nil (run-hook-with-args (quote vc-post-command-functions) command file-or-list flags)) vc-sentinel-movepoint vc-log-fileset t) (p _msg) (let* ((v p) (new (advice--remove-function (process-sentinel v) fun))) (if (eq new (process-sentinel v)) nil (set-process-sentinel v new))) (vc--process-sentinel p code)) ignore nil] 5 #("Advised function" 0 16 (dynamic-docstring-function advice--make-docstring)) nil]) advice--add-function(:after ((closure ((v . #<process bzr>) (fun closure (#3 (proc . #<process bzr>) (code . #[0 "\302\301\303\300\304\300!\"\"\207" ["/home/gutov/emacs-bzr/trunk/" #[513 "r\300q\210\303.\300\"\210\211?\205%.\304 \305\"\211\203 .\306\307\310.\"\311\"\202#.\312\211.\262.)\207" [#<buffer trunk/*vc-dir*> vc-ewoc mode-line-process vc-dir-update ewoc-collect vc-dir-fileinfo->needs-update vc-dir-refresh-files mapcar vc-dir-fileinfo->name up-to-date nil] 7 "\n\n(fn ENTRIES &optional MORE-TO-COME)"] vc-bzr-after-dir-status file-relative-name vc-bzr-root] 6 "\n\n(fn)"]) vc-sentinel-movepoint vc-log-fileset t) (p _msg) (let* ((v p) (new (advice--remove-function ... fun))) (if (eq new (process-sentinel v)) nil (set-process-sentinel v new))) (vc--process-sentinel p code)) (proc . #<process bzr>) (code . #[0 "\302\301\303\300\304\300!\"\"\207" ["/home/gutov/emacs-bzr/trunk/" #[513 "r\300q\210\303.\300\"\210\211?\205%.\304 \305\"\211\203 .\306\307\310.\"\311\"\202#.\312\211.\262.)\207" [#<buffer trunk/*vc-dir*> vc-ewoc mode-line-process vc-dir-update ewoc-collect vc-dir-fileinfo->needs-update vc-dir-refresh-files mapcar vc-dir-fileinfo->name up-to-date nil] 7 "\n\n(fn ENTRIES &optional MORE-TO-COME)"] vc-bzr-after-dir-status file-relative-name vc-bzr-root] 6 "\n\n(fn)"]) vc-sentinel-movepoint vc-log-fileset t) nil (process-sentinel v)) closure ((v . #<process bzr>) (fun closure (#2 (proc . #<process bzr>) (code . #[0 "\302\301\303\300\304\300!\"\"\207" ["/home/gutov/emacs-bzr/trunk/" #[513 "r\300q\210\303.\300\"\210\211?\205%.\304 \305\"\211\203 .\306\307\310.\"\311\"\202#.\312\211.\262.)\207" [#<buffer trunk/*vc-dir*> vc-ewoc mode-line-process vc-dir-update ewoc-collect vc-dir-fileinfo->needs-update vc-dir-refresh-files mapcar vc-dir-fileinfo->name up-to-date nil] 7 "\n\n(fn ENTRIES &optional MORE-TO-COME)"] vc-bzr-after-dir-status file-relative-name vc-bzr-root] 6 "\n\n(fn)"]) vc-sentinel-movepoint vc-log-fileset t) (p _msg) (let* ((v p) (new (advice--remove-function (process-sentinel v) fun))) (if (eq new (process-sentinel v)) nil (set-process-sentinel v new))) (vc--process-sentinel p code)) (proc . #<process bzr>) (code . #[0 "\302\301\303\300\304\300!\"\"\207" ["/home/gutov/emacs-bzr/trunk/" #[513 "r\300q\210\303.\300\"\210\211?\205%.\304 \305\"\211\203 .\306\307\310.\"\311\"\202#.\312\211.\262.)\207" [#<buffer trunk/*vc-dir*> vc-ewoc mode-line-process vc-dir-update ewoc-collect vc-dir-fileinfo->needs-update vc-dir-refresh-files mapcar vc-dir-fileinfo->name up-to-date nil] 7 "\n\n(fn ENTRIES &optional MORE-TO-COME)"] vc-bzr-after-dir-status file-relative-name vc-bzr-root] 6 "\n\n(fn)"]) vc-sentinel-movepoint vc-log-fileset t) (gv--val) (set-process-sentinel v gv--val)) (closure ((fun closure #1 (p _msg) (let* ((v p) (new (advice--remove-function (process-sentinel v) fun))) (if (eq new (process-sentinel v)) nil (set-process-sentinel v new))) (vc--process-sentinel p code)) (proc . #<process bzr>) (code . #[0 "\302\301\303\300\304\300!\"\"\207" ["/home/gutov/emacs-bzr/trunk/" #[513 "r\300q\210\303.\300\"\210\211?\205%.\304 \305\"\211\203 .\306\307\310.\"\311\"\202#.\312\211.\262.)\207" [#<buffer trunk/*vc-dir*> vc-ewoc mode-line-process vc-dir-update ewoc-collect vc-dir-fileinfo->needs-update vc-dir-refresh-files mapcar vc-dir-fileinfo->name up-to-date nil] 7 "\n\n(fn ENTRIES &optional MORE-TO-COME)"] vc-bzr-after-dir-status file-relative-name vc-bzr-root] 6 "\n\n(fn)"]) vc-sentinel-movepoint vc-log-fileset t) (p _msg) (let* ((v p) (new (advice--remove-function (process-sentinel v) fun))) (if (eq new (process-sentinel v)) nil (set-process-sentinel v new))) (vc--process-sentinel p code)) nil) (let (fun) (setq fun (function (lambda (p _msg) (let* ((v p) (new (advice--remove-function ... fun))) (if (eq new (process-sentinel v)) nil (set-process-sentinel v new))) (vc--process-sentinel p code)))) (advice--add-function :after (let* ((v proc)) (cons (function (lambda nil (process-sentinel v))) (function (lambda (gv--val) (set-process-sentinel v gv--val))))) fun nil)) (cond ((or (null proc) (eq (process-status proc) (quote exit))) (if proc (progn (accept-process-output proc))) (if (functionp code) (funcall code) (eval code))) ((eq (process-status proc) (quote run)) (vc-set-mode-line-busy-indicator) (let (fun) (setq fun (function (lambda (p _msg) (let* (... ...) (if ... nil ...)) (vc--process-sentinel p code)))) (advice--add-function :after (let* ((v proc)) (cons (function (lambda nil ...)) (function (lambda ... ...)))) fun nil))) (t (error "Unexpected process state"))) (let ((proc (get-buffer-process (current-buffer)))) (cond ((or (null proc) (eq (process-status proc) (quote exit))) (if proc (progn (accept-process-output proc))) (if (functionp code) (funcall code) (eval code))) ((eq (process-status proc) (quote run)) (vc-set-mode-line-busy-indicator) (let (fun) (setq fun (function (lambda (p _msg) (let* ... ...) (vc--process-sentinel p code)))) (advice--add-function :after (let* ((v proc)) (cons (function ...) (function ...))) fun nil))) (t (error "Unexpected process state")))) vc-exec-after(#[0 "\302\301\303\300\304\300!\"\"\207" ["/home/gutov/emacs-bzr/trunk/" #[513 "r\300q\210\303.\300\"\210\211?\205%.\304 \305\"\211\203 .\306\307\310.\"\311\"\202#.\312\211.\262.)\207" [#<buffer trunk/*vc-dir*> vc-ewoc mode-line-process vc-dir-update ewoc-collect vc-dir-fileinfo->needs-update vc-dir-refresh-files mapcar vc-dir-fileinfo->name up-to-date nil] 7 "\n\n(fn ENTRIES &optional MORE-TO-COME)"] vc-bzr-after-dir-status file-relative-name vc-bzr-root] 6 "\n\n(fn)"]) vc-bzr-dir-status("/home/gutov/emacs-bzr/trunk/" #[513 "r\300q\210\303.\300\"\210\211?\205%.\304 \305\"\211\203 .\306\307\310.\"\311\"\202#.\312\211.\262.)\207" [#<buffer trunk/*vc-dir*> vc-ewoc mode-line-process vc-dir-update ewoc-collect vc-dir-fileinfo->needs-update vc-dir-refresh-files mapcar vc-dir-fileinfo->name up-to-date nil] 7 "\n\n(fn ENTRIES &optional MORE-TO-COME)"]) apply(vc-bzr-dir-status ("/home/gutov/emacs-bzr/trunk/" #[513 "r\300q\210\303.\300\"\210\211?\205%.\304 \305\"\211\203 .\306\307\310.\"\311\"\202#.\312\211.\262.)\207" [#<buffer trunk/*vc-dir*> vc-ewoc mode-line-process vc-dir-update ewoc-collect vc-dir-fileinfo->needs-update vc-dir-refresh-files mapcar vc-dir-fileinfo->name up-to-date nil] 7 "\n\n(fn ENTRIES &optional MORE-TO-COME)"])) vc-call-backend(Bzr dir-status "/home/gutov/emacs-bzr/trunk/" #[513 "r\300q\210\303.\300\"\210\211?\205%.\304 \305\"\211\203 .\306\307\310.\"\311\"\202#.\312\211.\262.)\207" [#<buffer trunk/*vc-dir*> vc-ewoc mode-line-process vc-dir-update ewoc-collect vc-dir-fileinfo->needs-update vc-dir-refresh-files mapcar vc-dir-fileinfo->name up-to-date nil] 7 "\n\n(fn ENTRIES &optional MORE-TO-COME)"]) vc-dir-refresh() vc-dir-mode() (let ((use-vc-backend backend)) (vc-dir-mode)) (if (derived-mode-p (quote vc-dir-mode)) nil (let ((use-vc-backend backend)) (vc-dir-mode))) (let* ((file (or buffer-file-name default-directory)) (backend (vc-responsible-backend file)) (dir (vc-call-backend backend (quote root) file))) (let (pop-up-windows) (pop-to-buffer (vc-dir-prepare-status-buffer "*vc-dir*" dir backend))) (if (derived-mode-p (quote vc-dir-mode)) nil (let ((use-vc-backend backend)) (vc-dir-mode)))) vc-dir-quick() ... And the second one: Debugger entered--Lisp error: (error "Stack overflow in equal") advice--member-p((closure ((fun closure #1 (p _msg) (let* ((v p) (new (advice--remove-function (process-sentinel v) fun))) (if (eq new (process-sentinel v)) nil (set-process-sentinel v new))) (vc--process-sentinel p code)) (proc . #<process git>) (code closure ((update-function closure ((files-alist) (dirs-alist) (buffer . #<buffer definitions>) (def-dir . "~/.emacs.d/elpa/yasnippet-20131127.2134/snippets/ruby-mode/definitions/") (backend . Git) t) (entries &optional _more-to-come) (save-current-buffer (set-buffer buffer) (let (...) (while --dolist-tail-- ...)) (if (get-buffer-process diff-hl-dired-process-buffer) nil (diff-hl-dired-highlight-items ...)))) (files) (stage . update-index) cl-struct-vc-git-extra-fileinfo-tags t) nil (vc-git-after-dir-status-stage stage files update-function)) vc-sentinel-movepoint vc-log-fileset t) (p _msg) (let* ((v p) (new (advice--remove-function (process-sentinel v) fun))) (if (eq new (process-sentinel v)) nil (set-process-sentinel v new))) (vc--process-sentinel p code)) nil #[128 "\300\302.\"\300\301.\"\210\207" [apply (closure ((fun closure #3 (p _msg) (let* ((v p) (new ...)) (if (eq new ...) nil (set-process-sentinel v new))) (vc--process-sentinel p code)) (proc . #<process git>) (code closure ((status . #<process git>) (squeezed "--no-pager" "update-index" "--refresh") (full-command . "git --no-pager update-index --refresh .") (files) (flags "--no-pager" "update-index" "--refresh") (file-or-list) (command . "git") (okstatus . async) (buffer . #<buffer *diff-hl-dired* tmp status-194855>) w32-quote-process-args vc-sentinel-movepoint vc-log-fileset t) nil (run-hook-with-args (quote vc-post-command-functions) command file-or-list flags)) vc-sentinel-movepoint vc-log-fileset t) (p _msg) (let* ((v p) (new (advice--remove-function (process-sentinel v) fun))) (if (eq new (process-sentinel v)) nil (set-process-sentinel v new))) (vc--process-sentinel p code)) ignore nil] 5 #("Advised function" 0 16 (dynamic-docstring-function advice--make-docstring)) nil]) advice--add-function(:after ((closure ((v . #<process git>) (fun closure (#3 (proc . #<process git>) (code closure ((update-function closure ... ... ...) (files) (stage . update-index) cl-struct-vc-git-extra-fileinfo-tags t) nil (vc-git-after-dir-status-stage stage files update-function)) vc-sentinel-movepoint vc-log-fileset t) (p _msg) (let* ((v p) (new (advice--remove-function ... fun))) (if (eq new (process-sentinel v)) nil (set-process-sentinel v new))) (vc--process-sentinel p code)) (proc . #<process git>) (code closure ((update-function closure ((files-alist) (dirs-alist) (buffer . #<buffer definitions>) (def-dir . "~/.emacs.d/elpa/yasnippet-20131127.2134/snippets/ruby-mode/definitions/") (backend . Git) t) (entries &optional _more-to-come) (save-current-buffer (set-buffer buffer) (let ... ...) (if ... nil ...))) (files) (stage . update-index) cl-struct-vc-git-extra-fileinfo-tags t) nil (vc-git-after-dir-status-stage stage files update-function)) vc-sentinel-movepoint vc-log-fileset t) nil (process-sentinel v)) closure ((v . #<process git>) (fun closure (#2 (proc . #<process git>) (code closure ((update-function closure (... ... ... ... ... t) (entries &optional _more-to-come) (save-current-buffer ... ... ...)) (files) (stage . update-index) cl-struct-vc-git-extra-fileinfo-tags t) nil (vc-git-after-dir-status-stage stage files update-function)) vc-sentinel-movepoint vc-log-fileset t) (p _msg) (let* ((v p) (new (advice--remove-function (process-sentinel v) fun))) (if (eq new (process-sentinel v)) nil (set-process-sentinel v new))) (vc--process-sentinel p code)) (proc . #<process git>) (code closure ((update-function closure ((files-alist) (dirs-alist) (buffer . #<buffer definitions>) (def-dir . "~/.emacs.d/elpa/yasnippet-20131127.2134/snippets/ruby-mode/definitions/") (backend . Git) t) (entries &optional _more-to-come) (save-current-buffer (set-buffer buffer) (let (...) (while --dolist-tail-- ...)) (if (get-buffer-process diff-hl-dired-process-buffer) nil (diff-hl-dired-highlight-items ...)))) (files) (stage . update-index) cl-struct-vc-git-extra-fileinfo-tags t) nil (vc-git-after-dir-status-stage stage files update-function)) vc-sentinel-movepoint vc-log-fileset t) (gv--val) (set-process-sentinel v gv--val)) (closure ((fun closure #1 (p _msg) (let* ((v p) (new (advice--remove-function (process-sentinel v) fun))) (if (eq new (process-sentinel v)) nil (set-process-sentinel v new))) (vc--process-sentinel p code)) (proc . #<process git>) (code closure ((update-function closure ((files-alist) (dirs-alist) (buffer . #<buffer definitions>) (def-dir . "~/.emacs.d/elpa/yasnippet-20131127.2134/snippets/ruby-mode/definitions/") (backend . Git) t) (entries &optional _more-to-come) (save-current-buffer (set-buffer buffer) (let (...) (while --dolist-tail-- ...)) (if (get-buffer-process diff-hl-dired-process-buffer) nil (diff-hl-dired-highlight-items ...)))) (files) (stage . update-index) cl-struct-vc-git-extra-fileinfo-tags t) nil (vc-git-after-dir-status-stage stage files update-function)) vc-sentinel-movepoint vc-log-fileset t) (p _msg) (let* ((v p) (new (advice--remove-function (process-sentinel v) fun))) (if (eq new (process-sentinel v)) nil (set-process-sentinel v new))) (vc--process-sentinel p code)) nil) (let (fun) (setq fun (function (lambda (p _msg) (let* ((v p) (new (advice--remove-function ... fun))) (if (eq new (process-sentinel v)) nil (set-process-sentinel v new))) (vc--process-sentinel p code)))) (advice--add-function :after (let* ((v proc)) (cons (function (lambda nil (process-sentinel v))) (function (lambda (gv--val) (set-process-sentinel v gv--val))))) fun nil)) (cond ((or (null proc) (eq (process-status proc) (quote exit))) (if proc (progn (accept-process-output proc))) (if (functionp code) (funcall code) (eval code))) ((eq (process-status proc) (quote run)) (vc-set-mode-line-busy-indicator) (let (fun) (setq fun (function (lambda (p _msg) (let* (... ...) (if ... nil ...)) (vc--process-sentinel p code)))) (advice--add-function :after (let* ((v proc)) (cons (function (lambda nil ...)) (function (lambda ... ...)))) fun nil))) (t (error "Unexpected process state"))) (let ((proc (get-buffer-process (current-buffer)))) (cond ((or (null proc) (eq (process-status proc) (quote exit))) (if proc (progn (accept-process-output proc))) (if (functionp code) (funcall code) (eval code))) ((eq (process-status proc) (quote run)) (vc-set-mode-line-busy-indicator) (let (fun) (setq fun (function (lambda (p _msg) (let* ... ...) (vc--process-sentinel p code)))) (advice--add-function :after (let* ((v proc)) (cons (function ...) (function ...))) fun nil))) (t (error "Unexpected process state")))) vc-exec-after((closure ((update-function closure ((files-alist) (dirs-alist) (buffer . #<buffer definitions>) (def-dir . "~/.emacs.d/elpa/yasnippet-20131127.2134/snippets/ruby-mode/definitions/") (backend . Git) t) (entries &optional _more-to-come) (save-current-buffer (set-buffer buffer) (let ((--dolist-tail-- entries)) (while --dolist-tail-- (let (...) (progn ...) (setq --dolist-tail-- ...)))) (if (get-buffer-process diff-hl-dired-process-buffer) nil (diff-hl-dired-highlight-items (append dirs-alist files-alist))))) (files) (stage . update-index) cl-struct-vc-git-extra-fileinfo-tags t) nil (vc-git-after-dir-status-stage stage files update-function))) vc-git-dir-status-goto-stage(update-index nil (closure ((files-alist) (dirs-alist) (buffer . #<buffer definitions>) (def-dir . "~/.emacs.d/elpa/yasnippet-20131127.2134/snippets/ruby-mode/definitions/") (backend . Git) t) (entries &optional _more-to-come) (save-current-buffer (set-buffer buffer) (let ((--dolist-tail-- entries)) (while --dolist-tail-- (let ((entry (car --dolist-tail--))) (progn (let* (... ... ...) (let ... ...))) (setq --dolist-tail-- (cdr --dolist-tail--))))) (if (get-buffer-process diff-hl-dired-process-buffer) nil (diff-hl-dired-highlight-items (append dirs-alist files-alist)))))) vc-git-dir-status("~/.emacs.d/elpa/yasnippet-20131127.2134/snippets/ruby-mode/definitions/" (closure ((files-alist) (dirs-alist) (buffer . #<buffer definitions>) (def-dir . "~/.emacs.d/elpa/yasnippet-20131127.2134/snippets/ruby-mode/definitions/") (backend . Git) t) (entries &optional _more-to-come) (save-current-buffer (set-buffer buffer) (let ((--dolist-tail-- entries)) (while --dolist-tail-- (let ((entry (car --dolist-tail--))) (progn (let* (... ... ...) (let ... ...))) (setq --dolist-tail-- (cdr --dolist-tail--))))) (if (get-buffer-process diff-hl-dired-process-buffer) nil (diff-hl-dired-highlight-items (append dirs-alist files-alist)))))) apply(vc-git-dir-status ("~/.emacs.d/elpa/yasnippet-20131127.2134/snippets/ruby-mode/definitions/" (closure ((files-alist) (dirs-alist) (buffer . #<buffer definitions>) (def-dir . "~/.emacs.d/elpa/yasnippet-20131127.2134/snippets/ruby-mode/definitions/") (backend . Git) t) (entries &optional _more-to-come) (save-current-buffer (set-buffer buffer) (let ((--dolist-tail-- entries)) (while --dolist-tail-- (let ((entry ...)) (progn (let* ... ...)) (setq --dolist-tail-- (cdr --dolist-tail--))))) (if (get-buffer-process diff-hl-dired-process-buffer) nil (diff-hl-dired-highlight-items (append dirs-alist files-alist))))))) vc-call-backend(Git dir-status "~/.emacs.d/elpa/yasnippet-20131127.2134/snippets/ruby-mode/definitions/" (closure ((files-alist) (dirs-alist) (buffer . #<buffer definitions>) (def-dir . "~/.emacs.d/elpa/yasnippet-20131127.2134/snippets/ruby-mode/definitions/") (backend . Git) t) (entries &optional _more-to-come) (save-current-buffer (set-buffer buffer) (let ((--dolist-tail-- entries)) (while --dolist-tail-- (let ((entry (car --dolist-tail--))) (progn (let* (... ... ...) (let ... ...))) (setq --dolist-tail-- (cdr --dolist-tail--))))) (if (get-buffer-process diff-hl-dired-process-buffer) nil (diff-hl-dired-highlight-items (append dirs-alist files-alist)))))) (save-current-buffer (set-buffer diff-hl-dired-process-buffer) (setq default-directory (expand-file-name def-dir)) (erase-buffer) (vc-call-backend backend (quote dir-status) def-dir (function (lambda (entries &optional _more-to-come) (save-current-buffer (set-buffer buffer) (let ((--dolist-tail-- entries)) (while --dolist-tail-- (let ... ... ...))) (if (get-buffer-process diff-hl-dired-process-buffer) nil (diff-hl-dired-highlight-items (append dirs-alist files-alist)))))))) (progn (diff-hl-dired-clear) (if (buffer-live-p diff-hl-dired-process-buffer) (let ((proc (get-buffer-process diff-hl-dired-process-buffer))) (if proc (progn (kill-process proc)))) (setq diff-hl-dired-process-buffer (generate-new-buffer " *diff-hl-dired* tmp status"))) (save-current-buffer (set-buffer diff-hl-dired-process-buffer) (setq default-directory (expand-file-name def-dir)) (erase-buffer) (vc-call-backend backend (quote dir-status) def-dir (function (lambda (entries &optional _more-to-come) (save-current-buffer (set-buffer buffer) (let (...) (while --dolist-tail-- ...)) (if (get-buffer-process diff-hl-dired-process-buffer) nil (diff-hl-dired-highlight-items ...)))))))) (if backend (progn (diff-hl-dired-clear) (if (buffer-live-p diff-hl-dired-process-buffer) (let ((proc (get-buffer-process diff-hl-dired-process-buffer))) (if proc (progn (kill-process proc)))) (setq diff-hl-dired-process-buffer (generate-new-buffer " *diff-hl-dired* tmp status"))) (save-current-buffer (set-buffer diff-hl-dired-process-buffer) (setq default-directory (expand-file-name def-dir)) (erase-buffer) (vc-call-backend backend (quote dir-status) def-dir (function (lambda (entries &optional _more-to-come) (save-current-buffer (set-buffer buffer) (let ... ...) (if ... nil ...)))))))) (let ((backend (condition-case nil (progn (vc-responsible-backend default-directory)) (error nil))) (def-dir default-directory) (buffer (current-buffer)) dirs-alist files-alist) (if backend (progn (diff-hl-dired-clear) (if (buffer-live-p diff-hl-dired-process-buffer) (let ((proc (get-buffer-process diff-hl-dired-process-buffer))) (if proc (progn (kill-process proc)))) (setq diff-hl-dired-process-buffer (generate-new-buffer " *diff-hl-dired* tmp status"))) (save-current-buffer (set-buffer diff-hl-dired-process-buffer) (setq default-directory (expand-file-name def-dir)) (erase-buffer) (vc-call-backend backend (quote dir-status) def-dir (function (lambda (entries &optional _more-to-come) (save-current-buffer ... ... ...)))))))) diff-hl-dired-update() run-hooks(dired-after-readin-hook) dired-revert(t nil) revert-buffer(t) ... In GNU Emacs 24.3.50.3 (x86_64-unknown-linux-gnu, GTK+ Version 3.8.6) of 2013-11-29 on axl Bzr revision: 115285 schwab <at> linux-m68k.org-20131129112504-5izsans1kw88maan Windowing system distributor `The X.Org Foundation', version 11.0.11403000 System Description: Ubuntu 13.10
bug-gnu-emacs <at> gnu.org
:bug#16003
; Package emacs
.
(Fri, 29 Nov 2013 19:10:02 GMT) Full text and rfc822 format available.Message #8 received at 16003 <at> debbugs.gnu.org (full text, mbox):
From: Stefan Monnier <monnier <at> iro.umontreal.ca> To: Dmitry Gutov <dgutov <at> yandex.ru> Cc: 16003 <at> debbugs.gnu.org Subject: Re: bug#16003: 24.3.50; "Stack overflow in equal" in advice--member-p Date: Fri, 29 Nov 2013 14:09:02 -0500
> I've been getting this kind of errors lately. Unfortunately, I've been > unable to reproduce it from `emacs -Q' so far, but here are two > backtraces, one from `vc-dir-mode', and another from > `diff-hl-dired-mode'. The patch below should avoid the problem. But we really should try and improve `equal' not to fail this way. Stefan === modified file 'lisp/vc/vc-dispatcher.el' --- lisp/vc/vc-dispatcher.el 2013-11-28 01:49:25 +0000 +++ lisp/vc/vc-dispatcher.el 2013-11-29 19:03:35 +0000 @@ -239,10 +239,12 @@ ;; If a process is running, add CODE to the sentinel ((eq (process-status proc) 'run) (vc-set-mode-line-busy-indicator) - (letrec ((fun (lambda (p _msg) - (remove-function (process-sentinel p) fun) + (let* ((funsym (make-symbol "fun")) + (fun (lambda (p _msg) + (remove-function (process-sentinel p) funsym) (vc--process-sentinel p code)))) - (add-function :after (process-sentinel proc) fun))) + (fset funsym fun) + (add-function :after (process-sentinel proc) funsym))) (t (error "Unexpected process state")))) nil)
bug-gnu-emacs <at> gnu.org
:bug#16003
; Package emacs
.
(Fri, 29 Nov 2013 19:51:02 GMT) Full text and rfc822 format available.Message #11 received at 16003 <at> debbugs.gnu.org (full text, mbox):
From: Jambunathan K <kjambunathan <at> gmail.com> To: Dmitry Gutov <dgutov <at> yandex.ru> Cc: 16003 <at> debbugs.gnu.org Subject: Re: bug#16003: 24.3.50; "Stack overflow in equal" in advice--member-p Date: Fri, 29 Nov 2013 23:50:25 +0530
Dmitry Gutov <dgutov <at> yandex.ru> writes: > Debugger entered--Lisp error: (error "Stack overflow in equal") It would be good audit the usage of `equal' and replace it with `eq'. The sexps are they nested and circular in nature.
bug-gnu-emacs <at> gnu.org
:bug#16003
; Package emacs
.
(Fri, 29 Nov 2013 19:52:02 GMT) Full text and rfc822 format available.Message #14 received at 16003 <at> debbugs.gnu.org (full text, mbox):
From: Stefan Monnier <monnier <at> iro.umontreal.ca> To: Dmitry Gutov <dgutov <at> yandex.ru> Cc: 16003 <at> debbugs.gnu.org Subject: Re: bug#16003: 24.3.50; "Stack overflow in equal" in advice--member-p Date: Fri, 29 Nov 2013 14:50:58 -0500
> I've been getting this kind of errors lately. Unfortunately, I've been > unable to reproduce it from `emacs -Q' so far, but here are two > backtraces, one from `vc-dir-mode', and another from > `diff-hl-dired-mode'. I installed a patch in Fequal which should fix such problems. Stefan
Stefan Monnier <monnier <at> iro.umontreal.ca>
to control <at> debbugs.gnu.org
.
(Fri, 29 Nov 2013 20:37:02 GMT) Full text and rfc822 format available.bug-gnu-emacs <at> gnu.org
:bug#16003
; Package emacs
.
(Fri, 29 Nov 2013 21:10:01 GMT) Full text and rfc822 format available.Message #19 received at 16003 <at> debbugs.gnu.org (full text, mbox):
From: Dmitry Gutov <dgutov <at> yandex.ru> To: Stefan Monnier <monnier <at> iro.umontreal.ca> Cc: 16003 <at> debbugs.gnu.org Subject: Re: bug#16003: 24.3.50; "Stack overflow in equal" in advice--member-p Date: Fri, 29 Nov 2013 23:09:19 +0200
On 29.11.2013 21:50, Stefan Monnier wrote: > I installed a patch in Fequal which should fix such problems. Thanks!
Debbugs Internal Request <help-debbugs <at> gnu.org>
to internal_control <at> debbugs.gnu.org
.
(Sat, 28 Dec 2013 12:24:03 GMT) Full text and rfc822 format available.
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.