all messages for Emacs-related lists mirrored at yhetil.org
 help / color / mirror / code / Atom feed
* bug#16003: 24.3.50; "Stack overflow in equal" in advice--member-p
@ 2013-11-29 18:03 Dmitry Gutov
  2013-11-29 18:20 ` Jambunathan K
                   ` (2 more replies)
  0 siblings, 3 replies; 5+ messages in thread
From: Dmitry Gutov @ 2013-11-29 18:03 UTC (permalink / raw)
  To: 16003

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@linux-m68k.org-20131129112504-5izsans1kw88maan
Windowing system distributor `The X.Org Foundation', version 11.0.11403000
System Description:	Ubuntu 13.10





^ permalink raw reply	[flat|nested] 5+ messages in thread

* bug#16003: 24.3.50; "Stack overflow in equal" in advice--member-p
  2013-11-29 18:03 bug#16003: 24.3.50; "Stack overflow in equal" in advice--member-p Dmitry Gutov
@ 2013-11-29 18:20 ` Jambunathan K
  2013-11-29 19:09 ` Stefan Monnier
  2013-11-29 19:50 ` Stefan Monnier
  2 siblings, 0 replies; 5+ messages in thread
From: Jambunathan K @ 2013-11-29 18:20 UTC (permalink / raw)
  To: Dmitry Gutov; +Cc: 16003

Dmitry Gutov <dgutov@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.








^ permalink raw reply	[flat|nested] 5+ messages in thread

* bug#16003: 24.3.50; "Stack overflow in equal" in advice--member-p
  2013-11-29 18:03 bug#16003: 24.3.50; "Stack overflow in equal" in advice--member-p Dmitry Gutov
  2013-11-29 18:20 ` Jambunathan K
@ 2013-11-29 19:09 ` Stefan Monnier
  2013-11-29 19:50 ` Stefan Monnier
  2 siblings, 0 replies; 5+ messages in thread
From: Stefan Monnier @ 2013-11-29 19:09 UTC (permalink / raw)
  To: Dmitry Gutov; +Cc: 16003

> 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)
 






^ permalink raw reply	[flat|nested] 5+ messages in thread

* bug#16003: 24.3.50; "Stack overflow in equal" in advice--member-p
  2013-11-29 18:03 bug#16003: 24.3.50; "Stack overflow in equal" in advice--member-p Dmitry Gutov
  2013-11-29 18:20 ` Jambunathan K
  2013-11-29 19:09 ` Stefan Monnier
@ 2013-11-29 19:50 ` Stefan Monnier
  2013-11-29 21:09   ` Dmitry Gutov
  2 siblings, 1 reply; 5+ messages in thread
From: Stefan Monnier @ 2013-11-29 19:50 UTC (permalink / raw)
  To: Dmitry Gutov; +Cc: 16003

> 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





^ permalink raw reply	[flat|nested] 5+ messages in thread

* bug#16003: 24.3.50; "Stack overflow in equal" in advice--member-p
  2013-11-29 19:50 ` Stefan Monnier
@ 2013-11-29 21:09   ` Dmitry Gutov
  0 siblings, 0 replies; 5+ messages in thread
From: Dmitry Gutov @ 2013-11-29 21:09 UTC (permalink / raw)
  To: Stefan Monnier; +Cc: 16003

On 29.11.2013 21:50, Stefan Monnier wrote:
> I installed a patch in Fequal which should fix such problems.

Thanks!






^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2013-11-29 21:09 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2013-11-29 18:03 bug#16003: 24.3.50; "Stack overflow in equal" in advice--member-p Dmitry Gutov
2013-11-29 18:20 ` Jambunathan K
2013-11-29 19:09 ` Stefan Monnier
2013-11-29 19:50 ` Stefan Monnier
2013-11-29 21:09   ` Dmitry Gutov

Code repositories for project(s) associated with this external index

	https://git.savannah.gnu.org/cgit/emacs.git
	https://git.savannah.gnu.org/cgit/emacs/org-mode.git

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.