all messages for Emacs-related lists mirrored at yhetil.org
 help / color / mirror / code / Atom feed
From: "Alex Bennée" <alex.bennee@linaro.org>
To: Andreas Schwab <schwab@suse.de>
Cc: Emacs Developers <emacs-devel@gnu.org>
Subject: Re: Terminal locked when spawning a new tty frame
Date: Wed, 06 Nov 2019 17:17:22 +0000	[thread overview]
Message-ID: <87eeykj55p.fsf@linaro.org> (raw)
In-Reply-To: <87r233mjy4.fsf@linaro.org>


Alex Bennée <alex.bennee@linaro.org> writes:

> Andreas Schwab <schwab@suse.de> writes:
>
>> On Okt 23 2019, Alex Bennée wrote:
>>
>>> #13 0x000055ed55d1f5f6 in recursive_edit_1 () at keyboard.c:714
>>> #14 0x000055ed55d1f915 in Frecursive_edit () at keyboard.c:786
>>> #15 0x000055ed55d8e2a3 in Ffuncall (nargs=1, args=args@entry=0x7ffd0aca1ca8) at lisp.h:2109
>>> #16 0x000055ed55dc1d51 in exec_byte_code (bytestr=<optimized out>, vector=<optimized out>, maxdepth=<optimized out>, args_template=<optimized out>, nargs=<optimized out>, args=<optimized out>) at bytecode.c:633
>>> #17 0x000055ed55d8e1ff in Ffuncall (nargs=3, args=0x7ffd0aca2060) at eval.c:2808
>>> #18 0x000055ed55d8e532 in Fapply (nargs=nargs@entry=2, args=args@entry=0x7ffd0aca20f0) at eval.c:2424
>>> #19 0x000055ed55d8e66c in apply1 (fn=<optimized out>, arg=arg@entry=0x55ed5d981de3) at lisp.h:1399
>>> #20 0x000055ed55d8e858 in call_debugger (arg=0x55ed5d981de3) at eval.c:339
>>> #21 0x000055ed55d8ef01 in maybe_call_debugger (data=0x55ed5d1a9ec3, sig=0xe520, conditions=0x7f26ae4ed72b) at lisp.h:1032
>>> #22 0x000055ed55d8ef01 in signal_or_quit (error_symbol=0xe520, data=0x55ed5d1a9ec3, keyboard_quit=<optimized out>) at eval.c:1666
>>> #23 0x000055ed55c44214 in Fsignal (error_symbol=<optimized out>, error_symbol@entry=0xe520, data=<optimized out>) at eval.c:1568
>>
>> So you have a frame inside the debugger, probably because debug-on-error
>> is non-nil.
>
> I'll check next time. I might of knocked it on by mistake. The other
> Andrés mentioned one workaround was killing an errant *Backtrace* but I
> must admit I didn't check if the debugger was active during the
> failure.

So I have a reproducer and sure enough the *Backtrace* buffer was at:

Debugger entered--Lisp error: (quit)
  irony-iotask-run(#<process Irony> #s(irony-iotask-packaged-task :task (:start (lambda (process buffer) (if (assq buffer (process-get process :unsaved-buffers)) (irony--server-send-command "reset-unsaved" (irony--get-buffer-path-for-server buffer)) (irony-iotask-set-result t))) :update irony--server-command-update :finish (lambda (process buffer) (process-put process :unsaved-buffers (assq-delete-all buffer (process-get process :unsaved-buffers))))) :args (#<process Irony> #<buffer helper.c>) :result #s(irony-iotask-result :-tag nil :-value nil :-error nil :-error-data nil) :plist nil :continuation #s(irony-iotask-packaged-task :task (:start (lambda (process buffer buf-state) (let ((elem ...) temp-file) (if (eq ... buf-state) (irony-iotask-set-result t) (setq temp-file ...) (irony-iotask-put :temp-file temp-file) (irony-iotask-put :buffer-state buf-state) (process-put process :buffer-state buf-state) (with-current-buffer buffer ... ...)))) :update irony--server-command-update :finish (lambda (&rest _args) (delete-file (irony-iotask-get :temp-file))) :on-success (lambda (process buffer &rest _args) (let* ((unsaved-buffers ...) (elem ...) (buf-state ...)) (if elem (setcdr elem buf-state) (process-put process :unsaved-buffers ...))))) :args (#<process Irony> #<buffer gdbstub.c<arm>> #s(irony--buffer-state :file "/home/alex/lsrc/qemu.git/target/arm/gdbstub.c" :exists t :modified t :tick 3269)) :result #s(irony-iotask-result :-tag nil :-value nil :-error nil :-error-data nil) :plist nil :continuation #s(irony-iotask-packaged-task :task (:start (lambda (file line column compile-options) (apply #'irony--server-send-command "complete" file line column "--" compile-options)) :update irony--server-command-update) :args ("/home/alex/lsrc/qemu.git/target/arm/gdbstub.c" 173 10 ("-x" "c")) :result #s(irony-iotask-result :-tag nil :-value nil :-error nil :-error-data nil) :plist nil :continuation #s(irony-iotask-packaged-task :task (:start (lambda (prefix style) (irony--server-send-command "candidates" prefix ...)) :update irony--server-query-update) :args ("dyn_svereg_xml" exact) :result #s(irony-iotask-result :-tag nil :-value nil :-error nil :-error-data nil) :plist nil :continuation nil)))))
  irony--run-task(#s(irony-iotask-packaged-task :task (:start (lambda (process buffer) (if (assq buffer (process-get process :unsaved-buffers)) (irony--server-send-command "reset-unsaved" (irony--get-buffer-path-for-server buffer)) (irony-iotask-set-result t))) :update irony--server-command-update :finish (lambda (process buffer) (process-put process :unsaved-buffers (assq-delete-all buffer (process-get process :unsaved-buffers))))) :args (#<process Irony> #<buffer helper.c>) :result #s(irony-iotask-result :-tag nil :-value nil :-error nil :-error-data nil) :plist nil :continuation #s(irony-iotask-packaged-task :task (:start (lambda (process buffer buf-state) (let ((elem ...) temp-file) (if (eq ... buf-state) (irony-iotask-set-result t) (setq temp-file ...) (irony-iotask-put :temp-file temp-file) (irony-iotask-put :buffer-state buf-state) (process-put process :buffer-state buf-state) (with-current-buffer buffer ... ...)))) :update irony--server-command-update :finish (lambda (&rest _args) (delete-file (irony-iotask-get :temp-file))) :on-success (lambda (process buffer &rest _args) (let* ((unsaved-buffers ...) (elem ...) (buf-state ...)) (if elem (setcdr elem buf-state) (process-put process :unsaved-buffers ...))))) :args (#<process Irony> #<buffer gdbstub.c<arm>> #s(irony--buffer-state :file "/home/alex/lsrc/qemu.git/target/arm/gdbstub.c" :exists t :modified t :tick 3269)) :result #s(irony-iotask-result :-tag nil :-value nil :-error nil :-error-data nil) :plist nil :continuation #s(irony-iotask-packaged-task :task (:start (lambda (file line column compile-options) (apply #'irony--server-send-command "complete" file line column "--" compile-options)) :update irony--server-command-update) :args ("/home/alex/lsrc/qemu.git/target/arm/gdbstub.c" 173 10 ("-x" "c")) :result #s(irony-iotask-result :-tag nil :-value nil :-error nil :-error-data nil) :plist nil :continuation #s(irony-iotask-packaged-task :task (:start (lambda (prefix style) (irony--server-send-command "candidates" prefix ...)) :update irony--server-query-update) :args ("dyn_svereg_xml" exact) :result #s(irony-iotask-result :-tag nil :-value nil :-error nil :-error-data nil) :plist nil :continuation nil)))))
  irony-completion-at-point()
  completion--capf-wrapper(irony-completion-at-point optimist)
  run-hook-wrapped(completion--capf-wrapper irony-completion-at-point optimist)
  company--capf-data-real()
  company--capf-data()
  company-capf(prefix)
  apply(company-capf prefix)
  company-call-backend-raw(prefix)
  apply(company-call-backend-raw prefix)
  company--force-sync(company-call-backend-raw (prefix) company-capf)
  company-call-backend(prefix)
  company--begin-new()
  company--perform()
  company-auto-begin()
  company-idle-begin(#<buffer gdbstub.c<arm>> #<window 806 on gdbstub.c<arm>> 3269 5417)
  apply(company-idle-begin (#<buffer gdbstub.c<arm>> #<window 806 on gdbstub.c<arm>> 3269 5417))
  timer-event-handler([t 24001 55199 331097 nil company-idle-begin (#<buffer gdbstub.c<arm>> #<window 806 on gdbstub.c<arm>> 3269 5417) nil 869000])
  read-event(nil t 3)
  sit-for(3)
  flyspell-check-word-p()
  flyspell-post-command-hook()

Killing the *Backtrace* buffer restores things to working. It doesn't
seem to be specific to the backtrace as I can C-g while switching
buffers and get:

Debugger entered--Lisp error: (quit)
  read-from-minibuffer("Switch to buffer: " nil (keymap (keymap (11 . ivy-switch-buffer-kill)) keymap (36 . ivy-magic-read-file-env) (3 keymap (19 . ivy-rotate-sort) (1 . ivy-toggle-ignore) (15 . ivy-occur)) (67108903 . ivy-avy) (33554464 . ivy-restrict-to-matches) (15 . hydra-ivy/body) (22 . ivy-scroll-up-command) (prior . ivy-scroll-down-command) (next . ivy-scroll-up-command) (7 . minibuffer-keyboard-quit) (right . ivy-forward-char) (32 . self-insert-command) (18 . ivy-reverse-i-search) (19 . ivy-next-line-or-history) (remap keymap (describe-mode . ivy-help) (kill-ring-save . ivy-kill-ring-save) (kill-whole-line . ivy-kill-whole-line) (kill-line . ivy-kill-line) (scroll-down-command . ivy-scroll-down-command) (scroll-up-command . ivy-scroll-up-command) (end-of-buffer . ivy-end-of-buffer) (beginning-of-buffer . ivy-beginning-of-buffer) (kill-word . ivy-kill-word) (forward-char . ivy-forward-char) (delete-char . ivy-delete-char) (backward-kill-word . ivy-backward-kill-word) (backward-delete-char-untabify . ivy-backward-delete-char) (delete-backward-char . ivy-backward-delete-char) (previous-line . ivy-previous-line) (next-line . ivy-next-line)) (9 . ivy-partial-or-done) (10 . ivy-alt-done) (27 keymap (1 . ivy-read-action) (15 . ivy-dispatching-call) (111 . ivy-dispatching-done) (25 . ivy-insert-current-full) (105 . ivy-insert-current) (106 . ivy-yank-word) (114 . ivy-toggle-regexp-quote) (16 . ivy-previous-line-and-call) (14 . ivy-next-line-and-call) (118 . ivy-scroll-down-command) (112 . ivy-previous-history-element) (110 . ivy-next-history-element) (10 . ivy-immediate-done) (13 . ivy-call)) (mouse-3 . ivy-mouse-dispatching-done) (mouse-1 . ivy-mouse-done) (down-mouse-1 . ignore) (13 . ivy-done)) nil ivy-history)
  ivy-read("Switch to buffer: " internal-complete-buffer :keymap (keymap (11 . ivy-switch-buffer-kill)) :preselect "*Backtrace*" :action ivy--switch-buffer-action :matcher ivy--switch-buffer-matcher :caller ivy-switch-buffer)
  ivy-switch-buffer()
  funcall-interactively(ivy-switch-buffer)
  call-interactively(ivy-switch-buffer nil nil)
  command-execute(ivy-switch-buffer)

And the same hang will be observed - although in the above case if you
complete the buffer selection the hang goes away and the new terminal
window is usable.

>
>>
>> Andreas.


--
Alex Bennée



  reply	other threads:[~2019-11-06 17:17 UTC|newest]

Thread overview: 12+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-10-16  9:56 Terminal locked when spawning a new tty frame Alex Bennée
2019-10-16 10:25 ` Andreas Schwab
2019-10-23 13:31   ` Alex Bennée
2019-10-23 15:38     ` Andreas Schwab
2019-10-23 16:43       ` Alex Bennée
2019-10-23 16:58         ` Andreas Schwab
2019-10-23 17:48           ` Alex Bennée
2019-11-06 17:17             ` Alex Bennée [this message]
2019-10-16 15:12 ` rrandresf
2019-10-16 15:48   ` Eli Zaretskii
2019-10-17  4:47     ` opening an emacs frame on another display (was: Terminal locked when spawning a new tty frame) andrés ramírez
2019-10-17  8:24       ` Eli Zaretskii

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=87eeykj55p.fsf@linaro.org \
    --to=alex.bennee@linaro.org \
    --cc=emacs-devel@gnu.org \
    --cc=schwab@suse.de \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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.