* Crash force-deleting the only frame @ 2006-10-31 15:33 Juanma Barranquero 2006-10-31 22:41 ` Eli Zaretskii 2006-11-01 2:14 ` Richard Stallman 0 siblings, 2 replies; 15+ messages in thread From: Juanma Barranquero @ 2006-10-31 15:33 UTC (permalink / raw) I'm getting crashes when deleting by force the only frame. It is repeatable, but I've been unable to find the logic. Windows port, with GCC 3.4.5 (mingw special): C:\> emacs.exe -q --no-site-file => M-: (delete-frame (selected-frame) t) [ENTER] Emacs exits normally (as expected). C:\> emacs.exe -q --no-site-file --eval "(progn (sit-for 2) (delete-frame (selected-frame) t))" => Crash dialog and message: "This application has requested the Runtime to terminate it in an unusual way. Please contact the application's support team for more information." -- /L/e/k/t/u ^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: Crash force-deleting the only frame 2006-10-31 15:33 Crash force-deleting the only frame Juanma Barranquero @ 2006-10-31 22:41 ` Eli Zaretskii 2006-11-01 0:14 ` Juanma Barranquero 2006-11-01 2:14 ` Richard Stallman 1 sibling, 1 reply; 15+ messages in thread From: Eli Zaretskii @ 2006-10-31 22:41 UTC (permalink / raw) Cc: emacs-devel > Date: Tue, 31 Oct 2006 16:33:18 +0100 > From: "Juanma Barranquero" <lekktu@gmail.com> > > C:\> emacs.exe -q --no-site-file --eval "(progn (sit-for 2) > (delete-frame (selected-frame) t))" > > => Crash dialog and message: > > "This application has requested the Runtime to terminate it in an unusual way. > Please contact the application's support team for more information." Can you run under a debugger and see where it is crashing? ^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: Crash force-deleting the only frame 2006-10-31 22:41 ` Eli Zaretskii @ 2006-11-01 0:14 ` Juanma Barranquero 0 siblings, 0 replies; 15+ messages in thread From: Juanma Barranquero @ 2006-11-01 0:14 UTC (permalink / raw) On 10/31/06, Eli Zaretskii <eliz@gnu.org> wrote: > Can you run under a debugger and see where it is crashing? I can try, but I know exactly nothing about gdb. -- /L/e/k/t/u ^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: Crash force-deleting the only frame 2006-10-31 15:33 Crash force-deleting the only frame Juanma Barranquero 2006-10-31 22:41 ` Eli Zaretskii @ 2006-11-01 2:14 ` Richard Stallman 2006-11-01 2:37 ` Michael Welsh Duggan 1 sibling, 1 reply; 15+ messages in thread From: Richard Stallman @ 2006-11-01 2:14 UTC (permalink / raw) Cc: emacs-devel I'm getting crashes when deleting by force the only frame. It is repeatable, but I've been unable to find the logic. Windows port, with GCC 3.4.5 (mingw special): C:\> emacs.exe -q --no-site-file => M-: (delete-frame (selected-frame) t) [ENTER] It does not fail for me on GNU/Linux. ^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: Crash force-deleting the only frame 2006-11-01 2:14 ` Richard Stallman @ 2006-11-01 2:37 ` Michael Welsh Duggan 2006-11-01 15:27 ` Chong Yidong 0 siblings, 1 reply; 15+ messages in thread From: Michael Welsh Duggan @ 2006-11-01 2:37 UTC (permalink / raw) Cc: Juanma Barranquero, emacs-devel Richard Stallman <rms@gnu.org> writes: > I'm getting crashes when deleting by force the only frame. It is > repeatable, but I've been unable to find the logic. > > Windows port, with GCC 3.4.5 (mingw special): > > C:\> emacs.exe -q --no-site-file > > => M-: (delete-frame (selected-frame) t) [ENTER] > > It does not fail for me on GNU/Linux. It does for me. Current directory is /usr/local/src/emacs/ GNU gdb 6.4.90-debian Copyright (C) 2006 Free Software Foundation, Inc. GDB is free software, covered by the GNU General Public License, and you are welcome to change it and/or distribute copies of it under certain conditions. Type "show copying" to see the conditions. There is absolutely no warranty for GDB. Type "show warranty" for details. This GDB was configured as "i486-linux-gnu"...Using host libthread_db library "/lib/libthread_db.so.1". (gdb) run -q --no-site-file --eval "(progn (sit-for 2) (delete-frame (selected-frame) t))" Starting program: /usr/local/bin/emacs -q --no-site-file --eval "(progn (sit-for 2) (delete-frame (selected-frame) t))" [Thread debugging using libthread_db enabled] [New Thread -1213809840 (LWP 5792)] Program received signal SIGABRT, Aborted. [Switching to Thread -1213809840 (LWP 5792)] 0xb7a9ec51 in kill () from /lib/libc.so.6 (gdb) bt #0 0xb7a9ec51 in kill () from /lib/libc.so.6 #1 0x0811ef19 in abort () at emacs.c:464 #2 0x080a6284 in window_loop (type=GET_BUFFER_WINDOW, obj=137962820, mini=1, frames=137931001) at window.c:2113 #3 0x080a694b in Fget_buffer_window (buffer=137962820, frame=137931001) at window.c:2363 #4 0x081408c8 in Fset_buffer_modified_p (flag=137930953) at buffer.c:1092 #5 0x081a7927 in Ffuncall (nargs=2, args=0xbfd4b7d0) at eval.c:2997 #6 0x081df242 in Fbyte_code (bytestr=137057075, vector=137057092, maxdepth=96) at bytecode.c:679 #7 0x081a80f6 in funcall_lambda (fun=137057044, nargs=1, arg_vector=0xbfd4baf4) at eval.c:3184 #8 0x081a7bb6 in Ffuncall (nargs=2, args=0xbfd4baf0) at eval.c:3043 #9 0x081df242 in Fbyte_code (bytestr=137048131, vector=137048148, maxdepth=56) at bytecode.c:679 #10 0x081a80f6 in funcall_lambda (fun=137048108, nargs=0, arg_vector=0xbfd4be04) at eval.c:3184 #11 0x081a7bb6 in Ffuncall (nargs=1, args=0xbfd4be00) at eval.c:3043 #12 0x081df242 in Fbyte_code (bytestr=137045051, vector=137045068, maxdepth=48) at bytecode.c:679 #13 0x081a80f6 in funcall_lambda (fun=137045028, nargs=0, arg_vector=0xbfd4c080) at eval.c:3184 #14 0x081a7dd0 in apply_lambda (fun=137045028, args=137930953, eval_flag=1) at eval.c:3108 #15 0x081a6d04 in Feval (form=139733861) at eval.c:2370 #16 0x081226c6 in top_level_2 () at keyboard.c:1335 #17 0x081a554e in internal_condition_case (bfun=0x81226b3 <top_level_2>, handlers=137975657, hfun=0x81222f6 <cmd_error>) at eval.c:1481 #18 0x081226fa in top_level_1 () at keyboard.c:1343 #19 0x081a5009 in internal_catch (tag=137971865, func=0x81226c8 <top_level_1>, arg=137930953) at eval.c:1222 #20 0x08122633 in command_loop () at keyboard.c:1300 #21 0x08122074 in recursive_edit_1 () at keyboard.c:1003 #22 0x081221b6 in Frecursive_edit () at keyboard.c:1064 #23 0x08120a71 in main (argc=5, argv=0xbfd4c8f4) at emacs.c:1794 (gdb) -- Michael Welsh Duggan (md5i@cs.cmu.edu) ^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: Crash force-deleting the only frame 2006-11-01 2:37 ` Michael Welsh Duggan @ 2006-11-01 15:27 ` Chong Yidong 2006-11-01 15:32 ` Juanma Barranquero 0 siblings, 1 reply; 15+ messages in thread From: Chong Yidong @ 2006-11-01 15:27 UTC (permalink / raw) Cc: Juanma Barranquero, rms, emacs-devel Michael Welsh Duggan <md5i@cs.cmu.edu> writes: >> It does not fail for me on GNU/Linux. > > It does for me. > > (gdb) run -q --no-site-file --eval "(progn (sit-for 2) (delete-frame > (selected-frame) t))" I can reproduce it too. The sit-for isn't necessary; all you need is emacs --eval "(delete-frame (selected-frame) t)" I'll look into the problem. ^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: Crash force-deleting the only frame 2006-11-01 15:27 ` Chong Yidong @ 2006-11-01 15:32 ` Juanma Barranquero 2006-11-01 16:19 ` Chong Yidong 0 siblings, 1 reply; 15+ messages in thread From: Juanma Barranquero @ 2006-11-01 15:32 UTC (permalink / raw) Cc: emacs-devel, rms, Michael Welsh Duggan On 11/1/06, Chong Yidong <cyd@stupidchicken.com> wrote: > The sit-for isn't necessary; I know. I added it to be sure the frame was fully created and displayed before trying to delete it. > I'll look into the problem. Thanks. /L/e/k/t/u ^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: Crash force-deleting the only frame 2006-11-01 15:32 ` Juanma Barranquero @ 2006-11-01 16:19 ` Chong Yidong 2006-11-01 16:33 ` Andreas Schwab ` (3 more replies) 0 siblings, 4 replies; 15+ messages in thread From: Chong Yidong @ 2006-11-01 16:19 UTC (permalink / raw) Cc: Michael Welsh Duggan, rms, emacs-devel "Juanma Barranquero" <lekktu@gmail.com> writes: > On 11/1/06, Chong Yidong <cyd@stupidchicken.com> wrote: > >> The sit-for isn't necessary; >> >> emacs --eval "(delete-frame (selected-frame) t)" > > I know. I added it to be sure the frame was fully created and > displayed before trying to delete it. Okay, I looked at this, and now I'm not sure there's any bug. If you specify an --eval command-line arg that deletes the only frame, what else could Emacs possibly do other than abort execution? "Fatal error (6)Aborted" is an abort; it's not really a crash. ^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: Crash force-deleting the only frame 2006-11-01 16:19 ` Chong Yidong @ 2006-11-01 16:33 ` Andreas Schwab 2006-11-01 22:56 ` Chong Yidong 2006-11-01 16:35 ` Lennart Borgman ` (2 subsequent siblings) 3 siblings, 1 reply; 15+ messages in thread From: Andreas Schwab @ 2006-11-01 16:33 UTC (permalink / raw) Cc: Juanma Barranquero, emacs-devel, rms, Michael Welsh Duggan Chong Yidong <cyd@stupidchicken.com> writes: > Okay, I looked at this, and now I'm not sure there's any bug. If you > specify an --eval command-line arg that deletes the only frame, what > else could Emacs possibly do other than abort execution? IMHO there are two options: - refuse to delete the frame despite FORCE, - exit gracefully. > "Fatal error (6)Aborted" is an abort; it's not really a crash. An abort is still a crash (and you'll get a core dump when enabled). Andreas. -- Andreas Schwab, SuSE Labs, schwab@suse.de SuSE Linux Products GmbH, Maxfeldstraße 5, 90409 Nürnberg, Germany PGP key fingerprint = 58CA 54C7 6D53 942B 1756 01D3 44D5 214B 8276 4ED5 "And now for something completely different." ^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: Crash force-deleting the only frame 2006-11-01 16:33 ` Andreas Schwab @ 2006-11-01 22:56 ` Chong Yidong 2006-11-01 23:01 ` David Kastrup 0 siblings, 1 reply; 15+ messages in thread From: Chong Yidong @ 2006-11-01 22:56 UTC (permalink / raw) Cc: Juanma Barranquero, emacs-devel, rms, Michael Welsh Duggan Andreas Schwab <schwab@suse.de> writes: >> Okay, I looked at this, and now I'm not sure there's any bug. If you >> specify an --eval command-line arg that deletes the only frame, what >> else could Emacs possibly do other than abort execution? > > IMHO there are two options: > > - refuse to delete the frame despite FORCE, > - exit gracefully. The latter is not difficult to arrange: *** emacs/lisp/startup.el.~1.419.~ 2006-09-26 13:10:39.000000000 -0400 --- emacs/lisp/startup.el 2006-11-01 17:55:11.000000000 -0500 *************** *** 1877,1883 **** (setq line 0) (unless (< column 1) (move-to-column (1- column))) ! (setq column 0)))))))) ;; If 3 or more files visited, and not all visible, ;; show user what they all are. But leave the last one current. --- 1877,1884 ---- (setq line 0) (unless (< column 1) (move-to-column (1- column))) ! (setq column 0)))))) ! (unless (frame-live-p (selected-frame)) (kill-emacs nil)))) ;; If 3 or more files visited, and not all visible, ;; show user what they all are. But leave the last one current. ^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: Crash force-deleting the only frame 2006-11-01 22:56 ` Chong Yidong @ 2006-11-01 23:01 ` David Kastrup 2006-11-02 0:13 ` Chong Yidong 0 siblings, 1 reply; 15+ messages in thread From: David Kastrup @ 2006-11-01 23:01 UTC (permalink / raw) Cc: Andreas Schwab, emacs-devel, rms, Michael Welsh Duggan, Juanma Barranquero Chong Yidong <cyd@stupidchicken.com> writes: > Andreas Schwab <schwab@suse.de> writes: > >>> Okay, I looked at this, and now I'm not sure there's any bug. If you >>> specify an --eval command-line arg that deletes the only frame, what >>> else could Emacs possibly do other than abort execution? >> >> IMHO there are two options: >> >> - refuse to delete the frame despite FORCE, >> - exit gracefully. 3: stay around in case gnuclient will open another window. But I don't think that emacsclient has this functionality, and we'd probably need the multi-tty branch. > The latter is not difficult to arrange: > > *** emacs/lisp/startup.el.~1.419.~ 2006-09-26 13:10:39.000000000 -0400 > --- emacs/lisp/startup.el 2006-11-01 17:55:11.000000000 -0500 > *************** > *** 1877,1883 **** > (setq line 0) > (unless (< column 1) > (move-to-column (1- column))) > ! (setq column 0)))))))) > > ;; If 3 or more files visited, and not all visible, > ;; show user what they all are. But leave the last one current. > --- 1877,1884 ---- > (setq line 0) > (unless (< column 1) > (move-to-column (1- column))) > ! (setq column 0)))))) > ! (unless (frame-live-p (selected-frame)) (kill-emacs nil)))) Does this not do to much when we delete the last frame on the current display/terminal, but there are still frames on other displays? -- David Kastrup, Kriemhildstr. 15, 44793 Bochum ^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: Crash force-deleting the only frame 2006-11-01 23:01 ` David Kastrup @ 2006-11-02 0:13 ` Chong Yidong 0 siblings, 0 replies; 15+ messages in thread From: Chong Yidong @ 2006-11-02 0:13 UTC (permalink / raw) Cc: Andreas Schwab, emacs-devel, rms, Michael Welsh Duggan, Juanma Barranquero David Kastrup <dak@gnu.org> writes: >> *** emacs/lisp/startup.el.~1.419.~ 2006-09-26 13:10:39.000000000 -0400 >> --- emacs/lisp/startup.el 2006-11-01 17:55:11.000000000 -0500 >> *************** >> *** 1877,1883 **** >> (setq line 0) >> (unless (< column 1) >> (move-to-column (1- column))) >> ! (setq column 0)))))))) >> >> ;; If 3 or more files visited, and not all visible, >> ;; show user what they all are. But leave the last one current. >> --- 1877,1884 ---- >> (setq line 0) >> (unless (< column 1) >> (move-to-column (1- column))) >> ! (setq column 0)))))) >> ! (unless (frame-live-p (selected-frame)) (kill-emacs nil)))) > > Does this not do to much when we delete the last frame on the current > display/terminal, but there are still frames on other displays? I think there is no need to kill Emacs in that situation. The above code is based on similar code in command_loop_1, if (! FRAME_LIVE_P (XFRAME (selected_frame))) Fkill_emacs (Qnil); which is how Emacs exits cleanly when you do "M-: (delete-frame nil t)" ^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: Crash force-deleting the only frame 2006-11-01 16:19 ` Chong Yidong 2006-11-01 16:33 ` Andreas Schwab @ 2006-11-01 16:35 ` Lennart Borgman 2006-11-01 17:20 ` Juanma Barranquero 2006-11-02 4:43 ` Richard Stallman 3 siblings, 0 replies; 15+ messages in thread From: Lennart Borgman @ 2006-11-01 16:35 UTC (permalink / raw) Cc: Juanma Barranquero, emacs-devel, rms, Michael Welsh Duggan Chong Yidong wrote: > "Juanma Barranquero" <lekktu@gmail.com> writes: > > >> On 11/1/06, Chong Yidong <cyd@stupidchicken.com> wrote: >> >> >>> The sit-for isn't necessary; >>> >>> emacs --eval "(delete-frame (selected-frame) t)" >>> >> I know. I added it to be sure the frame was fully created and >> displayed before trying to delete it. >> > > Okay, I looked at this, and now I'm not sure there's any bug. If you > specify an --eval command-line arg that deletes the only frame, what > else could Emacs possibly do other than abort execution? "Fatal error > (6)Aborted" is an abort; it's not really a crash. > It could behave the same way it does as when you execute this code in the scratch buffer (after just starting with emacs -Q). ^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: Crash force-deleting the only frame 2006-11-01 16:19 ` Chong Yidong 2006-11-01 16:33 ` Andreas Schwab 2006-11-01 16:35 ` Lennart Borgman @ 2006-11-01 17:20 ` Juanma Barranquero 2006-11-02 4:43 ` Richard Stallman 3 siblings, 0 replies; 15+ messages in thread From: Juanma Barranquero @ 2006-11-01 17:20 UTC (permalink / raw) Cc: emacs-devel On 11/1/06, Chong Yidong <cyd@stupidchicken.com> wrote: > Okay, I looked at this, and now I'm not sure there's any bug. If you > specify an --eval command-line arg that deletes the only frame, what > else could Emacs possibly do other than abort execution? "Fatal error > (6)Aborted" is an abort; it's not really a crash. There are two behaviors: in one, killing the only frame exits Emacs. The other one produces an abort. For example, with a one-line .emacs.el containing just (ido-mode) I get a crash with "M-: (delete-frame nil t)" when there's a .ido.last file, a normal exit where there is none. So, something's happening. /L/e/k/t/u ^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: Crash force-deleting the only frame 2006-11-01 16:19 ` Chong Yidong ` (2 preceding siblings ...) 2006-11-01 17:20 ` Juanma Barranquero @ 2006-11-02 4:43 ` Richard Stallman 3 siblings, 0 replies; 15+ messages in thread From: Richard Stallman @ 2006-11-02 4:43 UTC (permalink / raw) Cc: lekktu, md5i, emacs-devel Okay, I looked at this, and now I'm not sure there's any bug. If you specify an --eval command-line arg that deletes the only frame, what else could Emacs possibly do other than abort execution? "Fatal error (6)Aborted" is an abort; it's not really a crash. It could call Fkill_emacs. That would be the clean way to terminate. ^ permalink raw reply [flat|nested] 15+ messages in thread
end of thread, other threads:[~2006-11-02 4:43 UTC | newest] Thread overview: 15+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2006-10-31 15:33 Crash force-deleting the only frame Juanma Barranquero 2006-10-31 22:41 ` Eli Zaretskii 2006-11-01 0:14 ` Juanma Barranquero 2006-11-01 2:14 ` Richard Stallman 2006-11-01 2:37 ` Michael Welsh Duggan 2006-11-01 15:27 ` Chong Yidong 2006-11-01 15:32 ` Juanma Barranquero 2006-11-01 16:19 ` Chong Yidong 2006-11-01 16:33 ` Andreas Schwab 2006-11-01 22:56 ` Chong Yidong 2006-11-01 23:01 ` David Kastrup 2006-11-02 0:13 ` Chong Yidong 2006-11-01 16:35 ` Lennart Borgman 2006-11-01 17:20 ` Juanma Barranquero 2006-11-02 4:43 ` Richard Stallman
Code repositories for project(s) associated with this public inbox https://git.savannah.gnu.org/cgit/emacs.git This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).