GNU bug report logs - #21083
24.5; Infinite loop in called-interactively-p

Previous Next

Package: emacs;

Reported by: Dmitri Paduchikh <dpaduchikh <at> gmail.com>

Date: Sat, 18 Jul 2015 03:49:02 UTC

Severity: normal

Found in version 24.5

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 21083 in the body.
You can then email your comments to 21083 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


Report forwarded to bug-gnu-emacs <at> gnu.org:
bug#21083; Package emacs. (Sat, 18 Jul 2015 03:49:02 GMT) Full text and rfc822 format available.

Acknowledgement sent to Dmitri Paduchikh <dpaduchikh <at> gmail.com>:
New bug report received and forwarded. Copy sent to bug-gnu-emacs <at> gnu.org. (Sat, 18 Jul 2015 03:49:03 GMT) Full text and rfc822 format available.

Message #5 received at submit <at> debbugs.gnu.org (full text, mbox):

From: Dmitri Paduchikh <dpaduchikh <at> gmail.com>
To: bug-gnu-emacs <at> gnu.org
Subject: 24.5; Infinite loop in called-interactively-p
Date: Sat, 18 Jul 2015 08:48:31 +0500
[Message part 1 (text/plain, inline)]
Hello,

I have prepared a simple example to reproduce the problem. In the
attachment is a small elisp file testfile.el. Save it and execute:

emacs -q -l testfile.el

In the started Emacs open some shell script and press TAB. Observe
infinite loop running inside advice--called-interactively-skip. I have
pressed TAB on an empty line, though probably any other will work as
well.

Debugger entered--Lisp error: (quit)
  funcall((closure ((i . 11809182) (frame2) (frame1) (origi . 3) t) nil
(setq frame1 frame2) (setq frame2 (backtrace-frame i (function
called-interactively-p))) (setq i (1+ i))))
  (progn (funcall get-next-frame) (not (and (eq (nth 1 frame2) (quote apply)) (eq (nth 3 frame2) inneradvice))))
  (while (progn (funcall get-next-frame) (not (and (eq (nth 1 frame2) (quote apply)) (eq (nth 3 frame2) inneradvice)))))
  (if (and (eq (nth 1 frame2) (quote apply)) (progn (funcall get-next-frame)
(advice--p (indirect-function (nth 1 frame2))))) (funcall get-next-frame)
(while (progn (funcall get-next-frame) (not (and (eq (nth 1 frame2) (quote
apply)) (eq (nth 3 frame2) inneradvice))))) (funcall get-next-frame)
(funcall get-next-frame))
  (let ((inneradvice (nth 1 frame1))) (if (and (eq (nth 1 frame2) (quote
apply)) (progn (funcall get-next-frame) (advice--p (indirect-function (nth 1
frame2))))) (funcall get-next-frame) (while (progn (funcall get-next-frame)
(not (and (eq (nth 1 frame2) (quote apply)) (eq (nth 3 frame2)
inneradvice))))) (funcall get-next-frame) (funcall get-next-frame)))
  (while (advice--p (nth 1 frame1)) (let ((inneradvice (nth 1 frame1))) (if
(and (eq (nth 1 frame2) (quote apply)) (progn (funcall get-next-frame)
(advice--p (indirect-function (nth 1 frame2))))) (funcall get-next-frame)
(while (progn (funcall get-next-frame) (not (and (eq ... ...) (eq ...
inneradvice))))) (funcall get-next-frame) (funcall get-next-frame))))
  (progn (funcall get-next-frame) (while (advice--p (nth 1 frame1)) (let
((inneradvice (nth 1 frame1))) (if (and (eq (nth 1 frame2) (quote apply))
(progn (funcall get-next-frame) (advice--p (indirect-function ...))))
(funcall get-next-frame) (while (progn (funcall get-next-frame) (not (and
... ...)))) (funcall get-next-frame) (funcall get-next-frame)))) (- i origi
1))
  (if (and (eq (nth 1 frame2) (quote apply)) (progn (funcall get-next-frame)
(advice--p (indirect-function (nth 1 frame2))))) (progn (funcall
get-next-frame) (while (advice--p (nth 1 frame1)) (let ((inneradvice (nth 1
frame1))) (if (and (eq (nth 1 frame2) (quote apply)) (progn (funcall
get-next-frame) (advice--p ...))) (funcall get-next-frame) (while (progn
(funcall get-next-frame) (not ...))) (funcall get-next-frame) (funcall
get-next-frame)))) (- i origi 1)))
  (let* ((i origi) (get-next-frame (function (lambda nil (setq frame1
frame2) (setq frame2 (backtrace-frame i (function called-interactively-p)))
(setq i (1+ i)))))) (if (and (eq (nth 1 frame2) (quote apply)) (progn
(funcall get-next-frame) (advice--p (indirect-function (nth 1 frame2)))))
(progn (funcall get-next-frame) (while (advice--p (nth 1 frame1)) (let
((inneradvice (nth 1 frame1))) (if (and (eq ... ...) (progn ... ...))
(funcall get-next-frame) (while (progn ... ...)) (funcall get-next-frame)
(funcall get-next-frame)))) (- i origi 1))))
  advice--called-interactively-skip(3 (t ad-Advice-backward-sexp #[256
"\211\204.\300\262.\301.[!\207" [1 forward-sexp] 3 2389807 "^p"] 1) (t
apply ad-Advice-backward-sexp #[256 "\211\204.\300\262.\301.[!\207" [1
forward-sexp] 3 2389807 "^p"] 1))
  run-hook-with-args-until-success(advice--called-interactively-skip 3 (t
ad-Advice-backward-sexp #[256 "\211\204.\300\262.\301.[!\207" [1
forward-sexp] 3 2389807 "^p"] 1) (t apply ad-Advice-backward-sexp #[256
"\211\204.\300\262.\301.[!\207" [1 forward-sexp] 3 2389807 "^p"] 1))
  called-interactively-p(interactive)
  ad-Advice-backward-sexp(#[256 "\211\204.\300\262.\301.[!\207" [1 forward-sexp] 3 2389807 "^p"] 1)
  apply(ad-Advice-backward-sexp #[256 "\211\204.\300\262.\301.[!\207" [1 forward-sexp] 3 2389807 "^p"] 1)
  #[128 "\300\301\302.#\207" [apply ad-Advice-backward-sexp #[256
"\211\204.\300\262.\301.[!\207" [1 forward-sexp] 3 2389807 "^p"] nil] 5
nil "^p"](1)
  #[0 "\300\301!\210\302\207" [#[128 "\300\301\302.#\207" [apply
ad-Advice-backward-sexp #[256 "\211\204.\300\262.\301.[!\207" [1
forward-sexp] 3 2389807 "^p"] nil] 5 nil "^p"] 1 nil] 2 "\n\n(fn)"]()
  funcall(#[0 "\300\301!\210\302\207" [#[128 "\300\301\302.#\207" [apply
ad-Advice-backward-sexp #[256 "\211\204.\300\262.\301.[!\207" [1
forward-sexp] 3 2389807 "^p"] nil] 5 nil "^p"] 1 nil] 2 "\n\n(fn)"])
  #[0 "\304\242;\205..\306\304\242.\"AC\304\307\240\210`\300 \306.
\"A\211\204X.\310.G!\203$.\311\312\313\314\315\316\317\301!\320\"\321\322%D\323\312\313\324\325\316\317.!\326\"\327\330%\311EDC\217\210.`=\203$.\331\332\333`D\"\210\202$.\303.!\247\204t.\302.!\247\204l.\334\335\336C\"\210\211.B\262.\202$..\203\212.\303.!\302.@!W\203\212..A\262.\202t..\204\266.\304\242\203\242.\302.!\247\203\242.\211.B\262.\202$.\331\332\302.!\206\253.\333`.E.b\210\"\210\202$..\211\203\313.\303.!\302..@!U\203\313..A\262..\203\336.\302.!\247\203#...B\262.\202#.\302.!\247\204\361.\331\332\307`..E\"\210\202#.\337.!\204\377...B\262.\202#.\211\203
.\337.@!\203
.\331\332\302.!\206..\333`..E..b\210\"\210\202#.\211\262.\210.\266\203\2051.\304\307\240\210\202..\207"
[#[0 "\304 \305`[!\210n\203*.o\204*.\306`S!\307\232\203*.\310\311
8\204*.\312.\313\314!\210)\315\202\225.`.W\203K.\316 \203=.\314u\210
\202\225.\317 \203F.\315\202\225. \202\225.\320\n\304
\321#\203^.\322\224b\210\323\322!\202\225.\324
\211\325\232\203j.\326\202\223.\211\327\232\203t.\330\202\223.\211\203\222.\331\332.\"\203\222.\333.\"\203\222.\212\334.!)\204\222.\335\202\223.\211\262.\207"
[forward-sexp-function smie-backward-token-function
sh-smie--sh-operators-back-re smie-grammar line-beginning-position
forward-comment syntax-after (15) 3 syntax-ppss nil forward-sexp -1 ";"
sh-smie--looking-back-at-continuation-p sh-smie--newline-semi-p looking-back
greedy 1 match-string-no-properties sh-smie--default-backward-token ")"
"case-)" "(" "case-(" string-match "\\`[a-z]" assoc sh-smie--sh-keyword-p "
word "] 5 "\n\n(fn)"] #[128 "\300\301\302.#\207" [apply
ad-Advice-backward-sexp #[256 "\211\204.\300\262.\301.[!\207" [1
forward-sexp] 3 2389807 "^p"] nil] 5 nil "^p"] #<subr car> #[257
"\211A@\207" [] 2 1636664] (halfsexp) smie-grammar assoc nil zerop err
funcall make-byte-code 0 "\300\301!\210\302\207" vconcat vector [1 nil] 2
"\n\n(fn)" scan-error 257
"\301.8`.X\203..\302.8\202..\211\300b\210\303\304\305.\306.\211`.W\203%.\307\202&.\310\\\"E\"\207"
[2 3 throw return t buffer-substring-no-properties -1 1] 12 "\n\n(fn ERR)"
throw return t signal cl-assertion-failed (numberp (funcall op-forw
toklevels)) smie--associative-p] 14 "\n\n(fn)"]()
  funcall(#[0 "\304\242;\205..\306\304\242.\"AC\304\307\240\210`\300 \306.
\"A\211\204X.\310.G!\203$.\311\312\313\314\315\316\317\301!\320\"\321\322%D\323\312\313\324\325\316\317.!\326\"\327\330%\311EDC\217\210.`=\203$.\331\332\333`D\"\210\202$.\303.!\247\204t.\302.!\247\204l.\334\335\336C\"\210\211.B\262.\202$..\203\212.\303.!\302.@!W\203\212..A\262.\202t..\204\266.\304\242\203\242.\302.!\247\203\242.\211.B\262.\202$.\331\332\302.!\206\253.\333`.E.b\210\"\210\202$..\211\203\313.\303.!\302..@!U\203\313..A\262..\203\336.\302.!\247\203#...B\262.\202#.\302.!\247\204\361.\331\332\307`..E\"\210\202#.\337.!\204\377...B\262.\202#.\211\203
.\337.@!\203
.\331\332\302.!\206..\333`..E..b\210\"\210\202#.\211\262.\210.\266\203\2051.\304\307\240\210\202..\207"
[#[0 "\304 \305`[!\210n\203*.o\204*.\306`S!\307\232\203*.\310\311
8\204*.\312.\313\314!\210)\315\202\225.`.W\203K.\316 \203=.\314u\210
\202\225.\317 \203F.\315\202\225. \202\225.\320\n\304
\321#\203^.\322\224b\210\323\322!\202\225.\324
\211\325\232\203j.\326\202\223.\211\327\232\203t.\330\202\223.\211\203\222.\331\332.\"\203\222.\333.\"\203\222.\212\334.!)\204\222.\335\202\223.\211\262.\207"
[forward-sexp-function smie-backward-token-function
sh-smie--sh-operators-back-re smie-grammar line-beginning-position
forward-comment syntax-after (15) 3 syntax-ppss nil forward-sexp -1 ";"
sh-smie--looking-back-at-continuation-p sh-smie--newline-semi-p looking-back
greedy 1 match-string-no-properties sh-smie--default-backward-token ")"
"case-)" "(" "case-(" string-match "\\`[a-z]" assoc sh-smie--sh-keyword-p "
word "] 5 "\n\n(fn)"] #[128 "\300\301\302.#\207" [apply
ad-Advice-backward-sexp #[256 "\211\204.\300\262.\301.[!\207" [1
forward-sexp] 3 2389807 "^p"] nil] 5 nil "^p"] #<subr car> #[257
"\211A@\207" [] 2 1636664] (halfsexp) smie-grammar assoc nil zerop err
funcall make-byte-code 0 "\300\301!\210\302\207" vconcat vector [1 nil] 2
"\n\n(fn)" scan-error 257
"\301.8`.X\203..\302.8\202..\211\300b\210\303\304\305.\306.\211`.W\203%.\307\202&.\310\\\"E\"\207"
[2 3 throw return t buffer-substring-no-properties -1 1] 12 "\n\n(fn ERR)"
throw return t signal cl-assertion-failed (numberp (funcall op-forw
toklevels)) smie--associative-p] 14 "\n\n(fn)"])
  smie-next-sexp(#[0 "\304
\305`[!\210n\203*.o\204*.\306`S!\307\232\203*.\310\311
8\204*.\312.\313\314!\210)\315\202\225.`.W\203K.\316 \203=.\314u\210
\202\225.\317 \203F.\315\202\225. \202\225.\320\n\304
\321#\203^.\322\224b\210\323\322!\202\225.\324
\211\325\232\203j.\326\202\223.\211\327\232\203t.\330\202\223.\211\203\222.\331\332.\"\203\222.\333.\"\203\222.\212\334.!)\204\222.\335\202\223.\211\262.\207"
[forward-sexp-function smie-backward-token-function
sh-smie--sh-operators-back-re smie-grammar line-beginning-position
forward-comment syntax-after (15) 3 syntax-ppss nil forward-sexp -1 ";"
sh-smie--looking-back-at-continuation-p sh-smie--newline-semi-p looking-back
greedy 1 match-string-no-properties sh-smie--default-backward-token ")"
"case-)" "(" "case-(" string-match "\\`[a-z]" assoc sh-smie--sh-keyword-p "
word "] 5 "\n\n(fn)"] #[128 "\300\301\302.#\207" [apply
ad-Advice-backward-sexp #[256 "\211\204.\300\262.\301.[!\207" [1
forward-sexp] 3 2389807 "^p"] nil] 5 nil "^p"] #<subr car> #[257
"\211A@\207" [] 2 1636664] halfsexp)
  smie-backward-sexp(halfsexp)
  smie-forward-sexp-command(-1)
  #[256
"\211\204.\301\262.\203...!\207\302`.\"\206..\303.!b\210\211\304W\205#.\305
\207" [forward-sexp-function 1 scan-sexps buffer-end 0
backward-prefix-chars] 4 2389495 "^p"](-1)
  ad-Advice-forward-sexp(#[256
"\211\204.\301\262.\203...!\207\302`.\"\206..\303.!b\210\211\304W\205#.\305
\207" [forward-sexp-function 1 scan-sexps buffer-end 0
backward-prefix-chars] 4 2389495 "^p"] -1)
  apply(ad-Advice-forward-sexp #[256
"\211\204.\301\262.\203...!\207\302`.\"\206..\303.!b\210\211\304W\205#.\305
\207" [forward-sexp-function 1 scan-sexps buffer-end 0
backward-prefix-chars] 4 2389495 "^p"] -1)
  forward-sexp(-1)
  #[256 "\211\204.\300\262.\301.[!\207" [1 forward-sexp] 3 2389807 "^p"](1)
  ad-Advice-backward-sexp(#[256 "\211\204.\300\262.\301.[!\207" [1 forward-sexp] 3 2389807 "^p"] 1)
  apply(ad-Advice-backward-sexp #[256 "\211\204.\300\262.\301.[!\207" [1 forward-sexp] 3 2389807 "^p"] 1)
  #[128 "\300\301\302.#\207" [apply ad-Advice-backward-sexp #[256
"\211\204.\300\262.\301.[!\207" [1 forward-sexp] 3 2389807 "^p"] nil] 5
nil "^p"](1)
  #[0 "\300\301!\210\302\207" [#[128 "\300\301\302.#\207" [apply
ad-Advice-backward-sexp #[256 "\211\204.\300\262.\301.[!\207" [1
forward-sexp] 3 2389807 "^p"] nil] 5 nil "^p"] 1 nil] 2 "\n\n(fn)"]()
  funcall(#[0 "\300\301!\210\302\207" [#[128 "\300\301\302.#\207" [apply
ad-Advice-backward-sexp #[256 "\211\204.\300\262.\301.[!\207" [1
forward-sexp] 3 2389807 "^p"] nil] 5 nil "^p"] 1 nil] 2 "\n\n(fn)"])
  #[0 "\304\242;\205..\306\304\242.\"AC\304\307\240\210`\300 \306.
\"A\211\204X.\310.G!\203$.\311\312\313\314\315\316\317\301!\320\"\321\322%D\323\312\313\324\325\316\317.!\326\"\327\330%\311EDC\217\210.`=\203$.\331\332\333`D\"\210\202$.\303.!\247\204t.\302.!\247\204l.\334\335\336C\"\210\211.B\262.\202$..\203\212.\303.!\302.@!W\203\212..A\262.\202t..\204\266.\304\242\203\242.\302.!\247\203\242.\211.B\262.\202$.\331\332\302.!\206\253.\333`.E.b\210\"\210\202$..\211\203\313.\303.!\302..@!U\203\313..A\262..\203\336.\302.!\247\203#...B\262.\202#.\302.!\247\204\361.\331\332\307`..E\"\210\202#.\337.!\204\377...B\262.\202#.\211\203
.\337.@!\203
.\331\332\302.!\206..\333`..E..b\210\"\210\202#.\211\262.\210.\266\203\2051.\304\307\240\210\202..\207"
[#[0 "\304 \305`[!\210n\203*.o\204*.\306`S!\307\232\203*.\310\311
8\204*.\312.\313\314!\210)\315\202\225.`.W\203K.\316 \203=.\314u\210
\202\225.\317 \203F.\315\202\225. \202\225.\320\n\304
\321#\203^.\322\224b\210\323\322!\202\225.\324
\211\325\232\203j.\326\202\223.\211\327\232\203t.\330\202\223.\211\203\222.\331\332.\"\203\222.\333.\"\203\222.\212\334.!)\204\222.\335\202\223.\211\262.\207"
[forward-sexp-function smie-backward-token-function
sh-smie--sh-operators-back-re smie-grammar line-beginning-position
forward-comment syntax-after (15) 3 syntax-ppss nil forward-sexp -1 ";"
sh-smie--looking-back-at-continuation-p sh-smie--newline-semi-p looking-back
greedy 1 match-string-no-properties sh-smie--default-backward-token ")"
"case-)" "(" "case-(" string-match "\\`[a-z]" assoc sh-smie--sh-keyword-p "
word "] 5 "\n\n(fn)"] #[128 "\300\301\302.#\207" [apply
ad-Advice-backward-sexp #[256 "\211\204.\300\262.\301.[!\207" [1
forward-sexp] 3 2389807 "^p"] nil] 5 nil "^p"] #<subr car> #[257
"\211A@\207" [] 2 1636664] (nil) smie-grammar assoc nil zerop err funcall
make-byte-code 0 "\300\301!\210\302\207" vconcat vector [1 nil] 2 "\n\n(fn)"
scan-error 257
"\301.8`.X\203..\302.8\202..\211\300b\210\303\304\305.\306.\211`.W\203%.\307\202&.\310\\\"E\"\207"
[2 3 throw return t buffer-substring-no-properties -1 1] 12 "\n\n(fn ERR)"
throw return t signal cl-assertion-failed (numberp (funcall op-forw
toklevels)) smie--associative-p] 14 "\n\n(fn)"]()
  funcall(#[0 "\304\242;\205..\306\304\242.\"AC\304\307\240\210`\300 \306.
\"A\211\204X.\310.G!\203$.\311\312\313\314\315\316\317\301!\320\"\321\322%D\323\312\313\324\325\316\317.!\326\"\327\330%\311EDC\217\210.`=\203$.\331\332\333`D\"\210\202$.\303.!\247\204t.\302.!\247\204l.\334\335\336C\"\210\211.B\262.\202$..\203\212.\303.!\302.@!W\203\212..A\262.\202t..\204\266.\304\242\203\242.\302.!\247\203\242.\211.B\262.\202$.\331\332\302.!\206\253.\333`.E.b\210\"\210\202$..\211\203\313.\303.!\302..@!U\203\313..A\262..\203\336.\302.!\247\203#...B\262.\202#.\302.!\247\204\361.\331\332\307`..E\"\210\202#.\337.!\204\377...B\262.\202#.\211\203
.\337.@!\203
.\331\332\302.!\206..\333`..E..b\210\"\210\202#.\211\262.\210.\266\203\2051.\304\307\240\210\202..\207"
[#[0 "\304 \305`[!\210n\203*.o\204*.\306`S!\307\232\203*.\310\311
8\204*.\312.\313\314!\210)\315\202\225.`.W\203K.\316 \203=.\314u\210
\202\225.\317 \203F.\315\202\225. \202\225.\320\n\304
\321#\203^.\322\224b\210\323\322!\202\225.\324
\211\325\232\203j.\326\202\223.\211\327\232\203t.\330\202\223.\211\203\222.\331\332.\"\203\222.\333.\"\203\222.\212\334.!)\204\222.\335\202\223.\211\262.\207"
[forward-sexp-function smie-backward-token-function
sh-smie--sh-operators-back-re smie-grammar line-beginning-position
forward-comment syntax-after (15) 3 syntax-ppss nil forward-sexp -1 ";"
sh-smie--looking-back-at-continuation-p sh-smie--newline-semi-p looking-back
greedy 1 match-string-no-properties sh-smie--default-backward-token ")"
"case-)" "(" "case-(" string-match "\\`[a-z]" assoc sh-smie--sh-keyword-p "
word "] 5 "\n\n(fn)"] #[128 "\300\301\302.#\207" [apply
ad-Advice-backward-sexp #[256 "\211\204.\300\262.\301.[!\207" [1
forward-sexp] 3 2389807 "^p"] nil] 5 nil "^p"] #<subr car> #[257
"\211A@\207" [] 2 1636664] (nil) smie-grammar assoc nil zerop err funcall
make-byte-code 0 "\300\301!\210\302\207" vconcat vector [1 nil] 2 "\n\n(fn)"
scan-error 257
"\301.8`.X\203..\302.8\202..\211\300b\210\303\304\305.\306.\211`.W\203%.\307\202&.\310\\\"E\"\207"
[2 3 throw return t buffer-substring-no-properties -1 1] 12 "\n\n(fn ERR)"
throw return t signal cl-assertion-failed (numberp (funcall op-forw
toklevels)) smie--associative-p] 14 "\n\n(fn)"])
  smie-next-sexp(#[0 "\304
\305`[!\210n\203*.o\204*.\306`S!\307\232\203*.\310\311
8\204*.\312.\313\314!\210)\315\202\225.`.W\203K.\316 \203=.\314u\210
\202\225.\317 \203F.\315\202\225. \202\225.\320\n\304
\321#\203^.\322\224b\210\323\322!\202\225.\324
\211\325\232\203j.\326\202\223.\211\327\232\203t.\330\202\223.\211\203\222.\331\332.\"\203\222.\333.\"\203\222.\212\334.!)\204\222.\335\202\223.\211\262.\207"
[forward-sexp-function smie-backward-token-function
sh-smie--sh-operators-back-re smie-grammar line-beginning-position
forward-comment syntax-after (15) 3 syntax-ppss nil forward-sexp -1 ";"
sh-smie--looking-back-at-continuation-p sh-smie--newline-semi-p looking-back
greedy 1 match-string-no-properties sh-smie--default-backward-token ")"
"case-)" "(" "case-(" string-match "\\`[a-z]" assoc sh-smie--sh-keyword-p "
word "] 5 "\n\n(fn)"] #[128 "\300\301\302.#\207" [apply
ad-Advice-backward-sexp #[256 "\211\204.\300\262.\301.[!\207" [1
forward-sexp] 3 2389807 "^p"] nil] 5 nil "^p"] #<subr car> #[257
"\211A@\207" [] 2 1636664] ";")
  smie-backward-sexp(";")
  smie-indent-keyword()
  run-hook-with-args-until-success(smie-indent-keyword)
  smie-indent-calculate()
  smie-indent-virtual()
  smie-indent-after-keyword()
  run-hook-with-args-until-success(smie-indent-after-keyword)
  smie-indent-calculate()
  #[0 "\212\301y\210\302\303w\210`\300\242Y\203..\300\303\240\210\304
\206..\301)\207" [(941) 0 " " nil smie-indent-calculate] 2 "\n\n(fn)"]()
  funcall(#[0
"\212\301y\210\302\303w\210`\300\242Y\203..\300\303\240\210\304
\206..\301)\207" [(941) 0 " " nil smie-indent-calculate] 2 "\n\n(fn)"])
  smie-indent-line()
  #[256 "\304 \203\f.\305\306 \307 \"\207\310=\204#. \204'.i\311
V\204#.\n=\203'.\312.!\207\313 `\311  \210 \314=\203G..`=\203G..\313
=\203G.\315 \202r..\205r.\212\316y\210\317 \210\320 )\311
.Z\212\321y\210\322.!?\205o.`.W\205o.\323`..#)\266\202\207"
[indent-line-function tab-always-indent this-command last-command
use-region-p indent-region region-beginning region-end indent-to-left-margin
current-indentation insert-tab buffer-chars-modified-tick complete
completion-at-point 0 forward-sexp point-marker 1 zerop indent-rigidly] 10
2133678 "P"](nil)
  ad-Advice-indent-for-tab-command(#[256 "\304 \203\f.\305\306 \307
\"\207\310=\204#. \204'.i\311 V\204#.\n=\203'.\312.!\207\313 `\311 
\210 \314=\203G..`=\203G..\313 =\203G.\315 \202r..\205r.\212\316y\210\317
\210\320 )\311 .Z\212\321y\210\322.!?\205o.`.W\205o.\323`..#)\266\202\207"
[indent-line-function tab-always-indent this-command last-command
use-region-p indent-region region-beginning region-end indent-to-left-margin
current-indentation insert-tab buffer-chars-modified-tick complete
completion-at-point 0 forward-sexp point-marker 1 zerop indent-rigidly] 10
2133678 "P"] nil)
  apply(ad-Advice-indent-for-tab-command #[256 "\304 \203\f.\305\306 \307
\"\207\310=\204#. \204'.i\311 V\204#.\n=\203'.\312.!\207\313 `\311 
\210 \314=\203G..`=\203G..\313 =\203G.\315 \202r..\205r.\212\316y\210\317
\210\320 )\311 .Z\212\321y\210\322.!?\205o.`.W\205o.\323`..#)\266\202\207"
[indent-line-function tab-always-indent this-command last-command
use-region-p indent-region region-beginning region-end indent-to-left-margin
current-indentation insert-tab buffer-chars-modified-tick complete
completion-at-point 0 forward-sexp point-marker 1 zerop indent-rigidly] 10
2133678 "P"] nil)
  indent-for-tab-command(nil)
  call-interactively(indent-for-tab-command nil nil)
  command-execute(indent-for-tab-command)

[testfile.el (application/emacs-lisp, attachment)]

Reply sent to Stefan Monnier <monnier <at> iro.umontreal.ca>:
You have taken responsibility. (Tue, 21 Jul 2015 23:11:02 GMT) Full text and rfc822 format available.

Notification sent to Dmitri Paduchikh <dpaduchikh <at> gmail.com>:
bug acknowledged by developer. (Tue, 21 Jul 2015 23:11:02 GMT) Full text and rfc822 format available.

Message #10 received at 21083-done <at> debbugs.gnu.org (full text, mbox):

From: Stefan Monnier <monnier <at> iro.umontreal.ca>
To: Dmitri Paduchikh <dpaduchikh <at> gmail.com>
Cc: 21083-done <at> debbugs.gnu.org
Subject: Re: bug#21083: 24.5; Infinite loop in called-interactively-p
Date: Tue, 21 Jul 2015 19:10:07 -0400
> I have prepared a simple example to reproduce the problem. In the
> attachment is a small elisp file testfile.el. Save it and execute:

Thanks, that made it easy.

I installed the patch below which should fix the inf-loop.


        Stefan


diff --git a/lisp/emacs-lisp/nadvice.el b/lisp/emacs-lisp/nadvice.el
index a6db5e9..5a59a98 100644
--- a/lisp/emacs-lisp/nadvice.el
+++ b/lisp/emacs-lisp/nadvice.el
@@ -522,8 +522,9 @@ of the piece of advice."
             (while
                 (progn
                   (funcall get-next-frame)
-                  (not (and (eq (nth 1 frame2) 'apply)
-                            (eq (nth 3 frame2) inneradvice)))))
+                  (and frame2
+                       (not (and (eq (nth 1 frame2) 'apply)
+                                 (eq (nth 3 frame2) inneradvice))))))
             (funcall get-next-frame)
             (funcall get-next-frame))))
       (- i origi 1))))




bug archived. Request was from Debbugs Internal Request <help-debbugs <at> gnu.org> to internal_control <at> debbugs.gnu.org. (Wed, 19 Aug 2015 11:24:03 GMT) Full text and rfc822 format available.

This bug report was last modified 9 years and 310 days ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.