Package: emacs;
Reported by: Andreas Politz <politza <at> hochschule-trier.de>
Date: Sat, 28 Sep 2013 13:08:02 UTC
Severity: normal
Found in version 24.3.50
Done: Andreas Politz <politza <at> hochschule-trier.de>
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 15477 in the body.
You can then email your comments to 15477 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#15477
; Package emacs
.
(Sat, 28 Sep 2013 13:08:02 GMT) Full text and rfc822 format available.Andreas Politz <politza <at> hochschule-trier.de>
:bug-gnu-emacs <at> gnu.org
.
(Sat, 28 Sep 2013 13:08:03 GMT) Full text and rfc822 format available.Message #5 received at submit <at> debbugs.gnu.org (full text, mbox):
From: Andreas Politz <politza <at> hochschule-trier.de> To: bug-gnu-emacs <at> gnu.org Subject: 24.3.50; select-frame in delete-frame-functions aborts Emacs Date: Sat, 28 Sep 2013 15:06:53 +0200
[Message part 1 (text/plain, inline)]
Selecting the about to be deleted frame in a delete-frame-function aborts Emacs, because this change goes undetected by the function delete_frame. The following lisp code should produce this behaviour. (add-hook 'delete-frame-functions 'select-frame) (let ((f1 (make-frame)) (f2 (make-frame))) (select-frame f2) (delete-frame f1) (delete-frame f2)) At the very top, delete_frame reads the selected frame into the variable sf, then... struct frame *f = decode_any_frame (frame); struct frame *sf = SELECTED_FRAME (); ... safe_call2 (Qrun_hook_with_args, Qdelete_frame_functions, frame) // does effectively SELECTED_FRAME = f and thus ... /* Don't let the frame remain selected. */ if (f == sf) // is false, but sf does not actually hold the // SELECTED_FRAME anymore. So, the dead frame f remains selected and this leads to an emacs_abort, the next time SELECTED_FRAME is invoked. Solution: Read SELECTED_FRAME into sf before it's first use, but after calling the hook.
[select-frame-in-delete-frame-hook.patch (text/x-diff, inline)]
=== modified file 'src/frame.c' *** src/frame.c 2013-09-20 15:34:36 +0000 --- src/frame.c 2013-09-28 12:52:08 +0000 *************** *** 1175,1181 **** delete_frame (Lisp_Object frame, Lisp_Object force) { struct frame *f = decode_any_frame (frame); ! struct frame *sf = SELECTED_FRAME (); struct kboard *kb; int minibuffer_selected, is_tooltip_frame; --- 1175,1181 ---- delete_frame (Lisp_Object frame, Lisp_Object force) { struct frame *f = decode_any_frame (frame); ! struct frame *sf; struct kboard *kb; int minibuffer_selected, is_tooltip_frame; *************** *** 1250,1256 **** There is no more chance for errors to prevent it. */ minibuffer_selected = EQ (minibuf_window, selected_window); ! /* Don't let the frame remain selected. */ if (f == sf) { --- 1250,1256 ---- There is no more chance for errors to prevent it. */ minibuffer_selected = EQ (minibuf_window, selected_window); ! sf = SELECTED_FRAME (); /* Don't let the frame remain selected. */ if (f == sf) {
[Message part 3 (text/plain, inline)]
-ap In GNU Emacs 24.3.50.1 (x86_64-unknown-linux-gnu, GTK+ Version 2.20.1) of 2013-09-28 on luca Bzr revision: 114421 eliz <at> gnu.org-20130921114819-zvk3zil4jau4ucdd Windowing system distributor `The X.Org Foundation', version 11.0.10707000 System Description: Debian GNU/Linux 6.0.7 (squeeze) Important settings: value of $LC_COLLATE: C value of $LC_MESSAGES: C value of $LANG: de_DE.UTF-8 locale-coding-system: utf-8-unix default enable-multibyte-characters: t Major mode: C/l Minor modes in effect: diff-auto-refine-mode: t workgroups-mode: t desktop-save-mode: t mimo-mode: t ispell-track-input-method: t recentf-mode: t show-paren-mode: t window-numbering-mode: t shell-dirtrack-mode: t scroll-other-window-mode: t savehist-mode: t ekey-mode: t winner-mode: t tooltip-mode: t mouse-wheel-mode: t file-name-shadow-mode: t global-font-lock-mode: t font-lock-mode: t auto-composition-mode: t auto-encryption-mode: t auto-compression-mode: t column-number-mode: t line-number-mode: t transient-mark-mode: t abbrev-mode: t Recent input: C-n C-n C-n C-n C-n C-n C-n C-x b <return> C-p C-p C-p C-n C-n M-m C-o ( s e l e c t - f r a m e SPC f 2 ) C-n C-n C-e C-p C-p C-n C-x C-s C-x b <return> C-M-a C-l C-s s f C-s C-g C-n C-n C-n C-x v = C-x 0 C-n C-x C-f C-g C-x C-f M-b C-b M-h t r u n k C-e f r a m e . c <return> C-c i C-s d e l e t e _ f r C-s <return> C-l C-l C-x n d C-n C-n C-n M-f M-f C-x v = q ; C-k SPC M-; A SPC h o o k SPC f u n c t i o n SPC m a y SPC c h a n g e SPC t h i M-h M-h t h e SPC s e l e c t e d SPC f r a m e C-/ C-/ C-/ C-/ c h a n g e SPC t h i M-b M-b M-b M-b M-b C-u M-; C-n C-n C-n C-n C-n C-n C-n C-n C-n C-n C-n C-n C-n C-n C-s f C-g C-s s f <return> C-l M-m C-s C-s C-s C-s C-s C-g M-. C-g M-> M-s o s f <return> M-g n n n n n n p p p C-x 1 C-l C-p C-p TAB C-y M-y M-y M-m s f SPC TAB M-m M-v M-v C-s k b <return> C-/ C-g C-/ C-l C-n C-c C-c C-x v = C-x C-w C-r b u g M-f M-f C-e <backspace> <backspace> p a t c h <return> C-x o M-x r e p o r t - e m <tab> b g <backspace> u g <return> Recent messages: Saving file /home/politza/src/emacs/trunk/src/frame.c... Wrote /home/politza/src/emacs/trunk/src/frame.c Compilation finished Finding changes in /home/politza/src/emacs/trunk/src/frame.c... View mode: type C-h for help, h for commands, q to quit. Finding changes in /home/politza/src/emacs/trunk/src/frame.c...done Saving file /home/politza/.emacs.d/bugs/select-frame-in-delete-frame-hook.patch... Wrote /home/politza/.emacs.d/bugs/select-frame-in-delete-frame-hook.patch other-window:o Invalid face attribute :slant nil [13 times] Load-path shadows: /home/politza/.emacs.d/elpa/yasnippet-20130907.1855/yasnippet hides /home/politza/.emacs.d/plugins/yasnippet-0.6.1c/yasnippet /home/politza/.emacs.d/plugins/tblc hides /home/politza/.emacs.d/plugins/tblc/tblc /home/politza/.emacs.d/plugins/haskell/haskell-cabal hides /home/politza/.emacs.d/plugins/haskell-mode/haskell-cabal /home/politza/.emacs.d/plugins/haskell/haskell-doc hides /home/politza/.emacs.d/plugins/haskell-mode/haskell-doc /home/politza/.emacs.d/plugins/haskell/ghc-core hides /home/politza/.emacs.d/plugins/haskell-mode/ghc-core /home/politza/.emacs.d/plugins/haskell/haskell-mode hides /home/politza/.emacs.d/plugins/haskell-mode/haskell-mode /home/politza/.emacs.d/plugins/haskell/haskell-c hides /home/politza/.emacs.d/plugins/haskell-mode/haskell-c /home/politza/.emacs.d/plugins/haskell/haskell-indentation hides /home/politza/.emacs.d/plugins/haskell-mode/haskell-indentation /home/politza/.emacs.d/plugins/haskell/haskell-site-file hides /home/politza/.emacs.d/plugins/haskell-mode/haskell-site-file /home/politza/.emacs.d/plugins/haskell/haskell-ghci hides /home/politza/.emacs.d/plugins/haskell-mode/haskell-ghci /home/politza/.emacs.d/plugins/haskell/inf-haskell hides /home/politza/.emacs.d/plugins/haskell-mode/inf-haskell /home/politza/.emacs.d/plugins/haskell/haskell-hugs hides /home/politza/.emacs.d/plugins/haskell-mode/haskell-hugs /home/politza/.emacs.d/plugins/haskell/haskell-font-lock hides /home/politza/.emacs.d/plugins/haskell-mode/haskell-font-lock /home/politza/.emacs.d/plugins/haskell/haskell-simple-indent hides /home/politza/.emacs.d/plugins/haskell-mode/haskell-simple-indent /home/politza/.emacs.d/plugins/haskell/haskell-decl-scan hides /home/politza/.emacs.d/plugins/haskell-mode/haskell-decl-scan /home/politza/.emacs.d/plugins/haskell/haskell-indent hides /home/politza/.emacs.d/plugins/haskell-mode/haskell-indent /home/politza/.emacs.d/plugins/jedi/scratch hides /home/politza/.emacs.d/plugins/ewm/scratch /home/politza/.emacs.d/elpa/company-20130923.513/.dir-locals hides /home/politza/.emacs.d/plugins/el-get/.dir-locals /home/politza/.emacs.d/elpa/popup-20130708.2245/popup hides /home/politza/.emacs.d/plugins/auto-complete/popup /home/politza/.emacs.d/elpa/auto-complete-20130724.1750/auto-complete-config hides /home/politza/.emacs.d/plugins/auto-complete/auto-complete-config /home/politza/.emacs.d/elpa/auto-complete-20130724.1750/auto-complete hides /home/politza/.emacs.d/plugins/auto-complete/auto-complete /home/politza/.emacs.d/plugins/saveplace hides /home/politza/src/emacs/trunk/lisp/saveplace /home/politza/.emacs.d/plugins/imenu hides /home/politza/src/emacs/trunk/lisp/imenu /home/politza/.emacs.d/plugins/term hides /home/politza/src/emacs/trunk/lisp/term /home/politza/.emacs.d/elpa/company-20130923.513/.dir-locals hides /home/politza/src/emacs/trunk/lisp/gnus/.dir-locals /home/politza/.emacs.d/plugins/matlab/matlab hides /usr/share/emacs-snapshot/site-lisp/emacs-goodies-el/matlab /home/politza/.emacs.d/plugins/boxquote hides /usr/share/emacs-snapshot/site-lisp/emacs-goodies-el/boxquote /home/politza/.emacs.d/plugins/bm hides /usr/share/emacs-snapshot/site-lisp/emacs-goodies-el/bm /home/politza/.emacs.d/plugins/haskell/haskell-decl-scan hides /usr/share/emacs-snapshot/site-lisp/haskell-mode/haskell-decl-scan /home/politza/.emacs.d/plugins/haskell/haskell-c hides /usr/share/emacs-snapshot/site-lisp/haskell-mode/haskell-c /home/politza/.emacs.d/plugins/haskell/haskell-ghci hides /usr/share/emacs-snapshot/site-lisp/haskell-mode/haskell-ghci /home/politza/.emacs.d/plugins/haskell/haskell-doc hides /usr/share/emacs-snapshot/site-lisp/haskell-mode/haskell-doc /home/politza/.emacs.d/plugins/haskell/haskell-indent hides /usr/share/emacs-snapshot/site-lisp/haskell-mode/haskell-indent /home/politza/.emacs.d/plugins/haskell/haskell-mode hides /usr/share/emacs-snapshot/site-lisp/haskell-mode/haskell-mode /home/politza/.emacs.d/plugins/haskell/haskell-hugs hides /usr/share/emacs-snapshot/site-lisp/haskell-mode/haskell-hugs /home/politza/.emacs.d/plugins/haskell/haskell-site-file hides /usr/share/emacs-snapshot/site-lisp/haskell-mode/haskell-site-file /home/politza/.emacs.d/plugins/haskell/haskell-cabal hides /usr/share/emacs-snapshot/site-lisp/haskell-mode/haskell-cabal /home/politza/.emacs.d/plugins/haskell/inf-haskell hides /usr/share/emacs-snapshot/site-lisp/haskell-mode/inf-haskell /home/politza/.emacs.d/plugins/haskell/haskell-font-lock hides /usr/share/emacs-snapshot/site-lisp/haskell-mode/haskell-font-lock /home/politza/.emacs.d/plugins/haskell/haskell-simple-indent hides /usr/share/emacs-snapshot/site-lisp/haskell-mode/haskell-simple-indent /home/politza/.emacs.d/plugins/haskell/haskell-indentation hides /usr/share/emacs-snapshot/site-lisp/haskell-mode/haskell-indentation Features: (shadow bbdb-message emacsbug sendmail whitespace diff-mode vc ispell reposition sort smiley gnus-cite mm-archive mail-extr gnus-bcklg gnus-async qp gnus-ml disp-table nndraft nnmh utf-7 network-stream starttls nnfolder bbdb-gnus nnnil gnus-agent gnus-srvr gnus-score score-mode nnvirtual gnus-msg gnus-art mm-uu mml2015 epg-config mm-view mml-smime smime dig mailcap nntp gnus-cache semantic/db-typecache semantic/analyze/complete semantic/tag-write etags semantic/imenu semantic/sb semantic/edit semantic/symref/list semantic/senator semantic/complete eieio-opt speedbar sb-image dframe semantic/symref semantic/wisent/python semantic/wisent/python-wy semantic/tag-file inversion semantic/db-file data-debug cedet-files semantic/bovine/c semantic/decorate/include semantic/decorate/mode semantic/decorate pulse hideif semantic/db-find semantic/db-ref semantic/bovine/c-by semantic/lex-spp semantic/bovine/gcc semantic/dep semantic/bovine semantic/analyze semantic/sort semantic/scope semantic/analyze/fcn semantic/db-mode semantic/db eieio-base semantic/idle semantic/format ezimage semantic/tag-ls semantic/find semantic/ctxt misearch multi-isearch ibuf-ext doc-view-fixed-scroll pdftk-outline jedi auto-complete popup epc ctable concurrent deferred python vc-git haskell-font-lock haskell-indent haskell-indentation haskell-mode make-mode yasnippet vc-dispatcher vc-svn vc-bzr cc-langs cc-mode cc-fonts cc-guess cc-menus cc-cmds cc-styles cc-align cc-engine cc-vars cc-defs workgroups bookmark pp dired-eshell emacs-customizations nogroup-customizations wp-customizations view-customizations tex-customizations reftex-customizations reftex-miscellaneous-configurations-customizations reftex-label-support-customizations reftex-referencing-labels-customizations reftex-defining-label-environments-customizations AUCTeX-customizations preview-customizations preview-latex-customizations preview-appearance-customizations TeX-parse-customizations TeX-file-customizations TeX-command-customizations TeX-view-customizations LaTeX-customizations LaTeX-macro-customizations LaTeX-math-customizations LaTeX-indentation-customizations table-customizations table-hooks-customizations outlines-customizations programming-customizations tools-customizations vc-customizations log-edit-customizations semantic-customizations makefile-customizations etags-customizations ediff-customizations diff-customizations diff-mode-customizations languages-customizations elpy-customizations matlab-customizations sh-customizations python-customizations rx haskell-customizations c-customizations asm-customizations multimedia-customizations image-customizations pcase help-customizations ekey-customizations info-lookup-customizations info-customizations customize-customizations custom-buffer-customizations apropos-customizations help-mode files-customizations uniquify-customizations uniquify sunrise-customizations recentf-customizations find-file-customizations backup-customizations faces-customizations highlight-symbol-customizations font-lock-customizations hi-lock-customizations facemenu-customizations external-customizations server-customizations processes-customizations shell-customizations proced-customizations gud-customizations tooltip-customizations grep-customizations compilation-customizations next-error-customizations comint-customizations SQL-customizations man-customizations environment-customizations xterm-customizations windows-customizations winner-customizations minibuffer-customizations savehist-customizations completion-spelling lib-string menu-customizations keyboard-customizations chistory-customizations initialization-customizations frames-customizations ediff-window-customizations desktop-customizations desktop frameset dired-customizations dired-x-customizations dired-x dired-details-customizations editing-customizations paragraphs-customizations matching-customizations paren-matching-customizations paren-showing-customizations isearch-customizations bookmark-customizations killing-customizations indent-customizations fill-customizations emulations-customizations editing-basics-customizations development-customizations lisp-customizations re-builder-customizations inferior-lisp-customizations ielm-customizations ert-customizations edebug-customizations bytecomp-customizations advice-customizations internal-customizations alloc-customizations extensions-customizations eldoc-customizations cust-print-customizations data-customizations save-place-customizations convenience-customizations mimo-customizations mimo diminish-customizations diminish iedit-customizations imenu-tree-customizations tags-tree-customizations company-customizations workgroups-customizations window-numbering-customizations pabbrev-customizations kmacro-customizations imenu-customizations ibuffer-customizations ibuf-macs hl-line-customizations hippie-expand-customizations file-cache-customizations ffap-customizations completion-customizations jedi-customizations iswitchb-customizations auto-complete-customizations browse-kill-ring-customizations auto-revert-customizations auto-insert-customizations Buffer-menu-customizations comm-customizations tramp-customizations browse-url-customizations applications-customizations mediawiki-customizations w3m-customizations package-customizations mail-customizations bbdb-customizations bbdb-sendmail-customizations bbdb-mua-customizations bbdb-mua bbdb-com crm bbdb smtpmail-customizations shr-customizations sendmail-customizations gnus-customizations nnmail-customizations nnmail-split-customizations gnus-summary-customizations gnus-thread-customizations gnus-summary-various-customizations gnus-summary-sort-customizations gnus-summary-marks-customizations gnus-summary-maneuvering-customizations gnus-summary-format-customizations parse-time-rfc2822 gnus-summary-exit-customizations gnus-sum gnus-group gnus-undo gnus-start gnus-spec gnus-win gnus-start-customizations gnus-server-customizations gnus-message-customizations message-customizations message-various-customizations message-sending-customizations message-buffers-customizations gnus-group-customizations gnus-group-visual-customizations gnus-nnimap-format nnimap nnmail gnus-int mail-source message rfc822 mml mml-sec mm-decode mm-bodies mm-encode mail-parse rfc2231 rfc2047 rfc2045 ietf-drums mailabbrev gmm-utils mailheader parse-time tls utf7 netrc nnoo gnus gnus-ems nnheader mail-utils gnus-group-various-customizations gnus-group-select-customizations gnus-files-customizations gnus-newsrc-customizations gnus-exit-customizations gnus-article-customizations gnus-article-hiding-customizations ispell-customizations eshell-customizations eshell-module-customizations eshell-smart-customizations eshell-hist-customizations eshell-mode-customizations edebug doc-view-customizations pdf-tools-customizations pdf-annot-customizations pdf-links-customizations pdf-isearch-customizations pdf-annot tablist tablist-filter semantic/wisent/comp semantic/wisent semantic/wisent/wisent semantic/util-modes semantic/util semantic semantic/tag semantic/lex semantic/fw mode-local cedet pdf-occur pdf-history pdf-outline pdf-links pdf-isearch pdf-misc imenu pdf-info tq pdf-render pdf-tools pdf-util gnus-range warnings doc-view jka-compr image-mode calendar-customizations org-customizations org-structure-customizations org-plain-lists-customizations org-edit-structure-customizations org-startup-customizations org-link-customizations org-latex-customizations org-appearance-customizations holidays-customizations calculator-customizations calc-customizations server recentf tree-widget .autoload paren window-numbering w3m browse-url timezone w3m-hist w3m-e23 w3m-ccl ccl w3m-fsf w3m-favicon w3m-image w3m-proc w3m-util view tramp tramp-compat tramp-loaddefs trampver shell track-last-window scroll-other-window saveplace savehist reftex reftex-vars pabbrev org ob-tangle ob-ref ob-lob ob-table org-footnote org-src ob-comint ob-keys org-pcomplete org-list org-faces org-entities noutline outline org-version ob-emacs-lisp ob org-compat org-macs ob-eval org-loaddefs format-spec find-func cal-menu calendar cal-loaddefs lib-edit lib-window lib-isearch lib-buffer reveal iswitchb lib-basic lib-lispext latex easy-mmode tex-style tex dbus xml tex-site auto-loads info-look info ibuffer hippie-exp grep compile filecache edit-minibuffer eldoc-eval pcomplete esh-var esh-io esh-cmd esh-opt esh-ext esh-proc esh-arg esh-groups eshell esh-module esh-mode esh-util ekey assoc dired-details+ dired dired-details cool-prefix-bindings winner lib-kbd comint-history comint ansi-color ring browse-kill-ring advice anticus edmacro kmacro derived cl-macs gv ffap thingatpt url-parse auth-source eieio byte-opt bytecomp byte-compile cconv eieio-core gnus-util mm-util mail-prsvr password-cache url-vars eldoc help-fns cus-edit easymenu cus-start cus-load wid-edit cl cl-loaddefs cl-lib bbdb-loaddefs cl-format-autoloads package time-date tooltip ediff-hook vc-hooks lisp-float-type mwheel x-win x-dnd tool-bar dnd fontset image regexp-opt fringe tabulated-list newcomment lisp-mode prog-mode register page menu-bar rfn-eshadow timer select scroll-bar mouse jit-lock font-lock syntax facemenu font-core frame cham georgian utf-8-lang misc-lang vietnamese tibetan thai tai-viet lao korean japanese hebrew greek romanian slovak czech european ethiopic indian cyrillic chinese case-table epa-hook jka-cmpr-hook help simple abbrev minibuffer nadvice loaddefs button faces cus-face macroexp files text-properties overlay sha1 md5 base64 format env code-pages mule custom widget hashtable-print-readable backquote make-network-process dbusbind gfilenotify dynamic-setting system-font-setting font-render-setting move-toolbar gtk x-toolkit x multi-tty emacs)
bug-gnu-emacs <at> gnu.org
:bug#15477
; Package emacs
.
(Sun, 29 Sep 2013 08:39:02 GMT) Full text and rfc822 format available.Message #8 received at 15477 <at> debbugs.gnu.org (full text, mbox):
From: martin rudalics <rudalics <at> gmx.at> To: Andreas Politz <politza <at> hochschule-trier.de> Cc: 15477 <at> debbugs.gnu.org Subject: Re: bug#15477: 24.3.50; select-frame in delete-frame-functions aborts Emacs Date: Sun, 29 Sep 2013 10:38:24 +0200
> Solution: Read SELECTED_FRAME into sf before it's first use, but after > calling the hook. Committed as revision#114479 on trunk. Please check and close the bug if everything's correct. Thanks, martin
Andreas Politz <politza <at> hochschule-trier.de>
to control <at> debbugs.gnu.org
.
(Sun, 29 Sep 2013 13:19:02 GMT) Full text and rfc822 format available.bug-gnu-emacs <at> gnu.org
:bug#15477
; Package emacs
.
(Thu, 10 Oct 2013 08:46:04 GMT) Full text and rfc822 format available.Message #13 received at 15477-done <at> debbugs.gnu.org (full text, mbox):
From: martin rudalics <rudalics <at> gmx.at> To: Andreas Politz <politza <at> hochschule-trier.de> Cc: 15477-done <at> debbugs.gnu.org Subject: Re: bug#15477: 24.3.50; select-frame in delete-frame-functions aborts Emacs Date: Thu, 10 Oct 2013 10:45:40 +0200
Bug closed. Thanks, martin
Debbugs Internal Request <help-debbugs <at> gnu.org>
to internal_control <at> debbugs.gnu.org
.
(Thu, 07 Nov 2013 12:24:05 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.