unofficial mirror of bug-gnu-emacs@gnu.org 
 help / color / mirror / code / Atom feed
* bug#14161: assertion failed: EQ (selected_window, XFRAME (selected_frame)->selected_window)
@ 2013-04-08 17:40 Stefan Monnier
  2013-04-08 18:06 ` Stefan Monnier
  0 siblings, 1 reply; 2+ messages in thread
From: Stefan Monnier @ 2013-04-08 17:40 UTC (permalink / raw)
  To: 14161; +Cc: Dmitry Antipov

[-- Attachment #1: Type: text/plain, Size: 30 bytes --]

Making it into a bug report.


[-- Attachment #2: Type: message/rfc822, Size: 6186 bytes --]

From: Dmitry Antipov <dmantipov@yandex.ru>
To: Emacs development discussions <emacs-devel@gnu.org>
Cc: Stefan Monnier <monnier@IRO.UMontreal.CA>
Subject: Hit eassert introduced in r110971
Date: Sat, 06 Apr 2013 20:35:10 +0400
Message-ID: <51604EBE.1070306@yandex.ru>

Found 100% method to hit eassert introduced in r110971 within update_tool_bar:

1) ./src/emacs -nw -Q
2) M-x make-frame-on-display :0
3) Move mouse to new X frame and left-click;
4) Move mouse back to TTY frame and left-click;
5) Press C-g staying in TTY frame ==>

#0  0x0000003daf40eedb in raise (sig=6) at ../nptl/sysdeps/unix/sysv/linux/pt-raise.c:41
#1  0x00000000005a1cf2 in terminate_due_to_signal (sig=6, backtrace_limit=2147483647)
     at src/emacs.c:343
#2  0x000000000065d92d in die (msg=0x79db98 "assertion failed: EQ (selected_window, XFRAME (selected_frame)->selected_window)", file=
     0x79b560 "src/xdisp.c", line=11427) at src/alloc.c:6522
#3  0x000000000044c6b5 in update_tool_bar (f=f@entry=0x14a29d8, save_match_data=save_match_data@entry=0)
     at src/xdisp.c:11424
#4  0x000000000045fd3a in update_tool_bar (save_match_data=0, f=0x14a29d8) at src/xdisp.c:11094
#5  prepare_menu_bars () at src/xdisp.c:11123
#6  0x000000000046beea in redisplay_internal () at src/xdisp.c:12929
#7  0x00000000005aa3eb in read_char (commandflag=1, map=..., prev_event=..., used_mouse_menu=0x7fffb36ebbff, end_time=0x0)
     at src/keyboard.c:2417
#8  0x00000000005c0a59 in read_decoded_char (commandflag=1, map=..., prev_event=..., used_mouse_menu=0x7fffb36ebbff)
     at src/keyboard.c:8712
#9  0x00000000005c17ad in read_key_sequence (keybuf=0x7fffb36ebdc0, bufsize=30, prompt=..., dont_downcase_last=false,
     can_return_switch_frame=true, fix_current_buffer=true) at src/keyboard.c:9044
#10 0x00000000005a71ca in command_loop_1 () at src/keyboard.c:1452
#11 0x0000000000681f1b in internal_condition_case (bfun=0x5a6c44 <command_loop_1>, handlers=..., hfun=0x5a634a <cmd_error>)
     at src/eval.c:1193
#12 0x00000000005a6861 in command_loop_2 (ignore=...) at src/keyboard.c:1167
#13 0x00000000006817cb in internal_catch (tag=..., func=0x5a683e <command_loop_2>, arg=...)
     at src/eval.c:964
#14 0x00000000005a6815 in command_loop () at src/keyboard.c:1146
#15 0x00000000005a5b9a in recursive_edit_1 () at src/keyboard.c:779
#16 0x00000000005a5f77 in Frecursive_edit () at src/keyboard.c:843
#17 0x00000000005a367f in main (argc=3, argv=0x7fffb36ec488) at src/emacs.c:1531

Dmitry

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

* bug#14161: assertion failed: EQ (selected_window, XFRAME (selected_frame)->selected_window)
  2013-04-08 17:40 bug#14161: assertion failed: EQ (selected_window, XFRAME (selected_frame)->selected_window) Stefan Monnier
@ 2013-04-08 18:06 ` Stefan Monnier
  0 siblings, 0 replies; 2+ messages in thread
From: Stefan Monnier @ 2013-04-08 18:06 UTC (permalink / raw)
  To: 14161; +Cc: Dmitry Antipov

> 1) ./src/emacs -nw -Q
> 2) M-x make-frame-on-display :0
> 3) Move mouse to new X frame and left-click;
> 4) Move mouse back to TTY frame and left-click;
> 5) Press C-g staying in TTY frame ==>

> #2  0x000000000065d92d in die (msg=0x79db98 "assertion failed: EQ
> (selected_window, XFRAME (selected_frame)->selected_window)", file=
>      0x79b560 "src/xdisp.c", line=11427) at src/alloc.c:6522

I've installed the patch below which seems to fix this problem for me.


        Stefan


=== modified file 'src/window.c'
--- src/window.c	2013-04-02 01:54:56 +0000
+++ src/window.c	2013-04-08 17:58:36 +0000
@@ -485,12 +485,6 @@
   w = XWINDOW (window);
   w->frozen_window_start_p = 0;
 
-  if (NILP (norecord))
-    {
-      w->use_time = ++window_select_count;
-      record_buffer (w->contents);
-    }
-
   /* Make the selected window's buffer current.  */
   Fset_buffer (w->contents);
 
@@ -515,6 +509,15 @@
 
   select_window_1 (window, inhibit_point_swap);
 
+  /* record_buffer can run QUIT, so make sure it is run only after we have
+     re-established the invariant between selected_window and selected_frame,
+     otherwise the temporary broken invariant might "escape" (bug#14161).  */
+  if (NILP (norecord))
+    {
+      w->use_time = ++window_select_count;
+      record_buffer (w->contents);
+    }
+
   bset_last_selected_window (XBUFFER (w->contents), window);
   windows_or_buffers_changed++;
   return window;






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

end of thread, other threads:[~2013-04-08 18:06 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2013-04-08 17:40 bug#14161: assertion failed: EQ (selected_window, XFRAME (selected_frame)->selected_window) Stefan Monnier
2013-04-08 18:06 ` Stefan Monnier

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