unofficial mirror of bug-gnu-emacs@gnu.org 
 help / color / mirror / code / Atom feed
* bug#12310: crash in remember_mouse_glyph
@ 2012-08-30  5:27 Werner LEMBERG
  2012-08-30  8:02 ` martin rudalics
  0 siblings, 1 reply; 11+ messages in thread
From: Werner LEMBERG @ 2012-08-30  5:27 UTC (permalink / raw)
  To: 12310


[rev 109796]

This crash, which happens rather frequently, is something introduced
quite recently.  My last bzr build (in June, IIRC), using the same
GNU/Linux environment (gcc 4.6.2, KDE 4.8, Qt 4.8), didn't show this.

It seems that the crash happens if I look at e-mails with CJK
characters (using Mew), then composing a simple e-mail, then trying to
send the e-mail.  I have no exact recipe to reproduce, sorry.

I still have the emacs process in gdb, so please advise how to
proceed.


    Werner

======================================================================

#0  0x08078108 in remember_mouse_glyph (f=0x86cdb08, gx=749, gy=521, rect=0x841c54c) at xdisp.c:2250
#1  0x080f8808 in note_mouse_movement (frame=0x86cdb08, event=0xbfffdfa8) at xterm.c:3860
#2  0x08100f4c in handle_one_xevent (dpyinfo=0x891eb50, eventptr=0xbfffe1dc, finish=0x841c564, hold_quit=
    0xbfffe664) at xterm.c:6801
#3  0x08101fc9 in event_handler_gdk (gxev=0xbfffe1dc, ev=0x8586c58, data=0x0) at xterm.c:5855





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

* bug#12310: crash in remember_mouse_glyph
  2012-08-30  5:27 bug#12310: crash in remember_mouse_glyph Werner LEMBERG
@ 2012-08-30  8:02 ` martin rudalics
  2012-08-30  8:16   ` Werner LEMBERG
  0 siblings, 1 reply; 11+ messages in thread
From: martin rudalics @ 2012-08-30  8:02 UTC (permalink / raw)
  To: Werner LEMBERG; +Cc: 12310

> I still have the emacs process in gdb, so please advise how to
> proceed.
> 
> 
>     Werner
> 
> ======================================================================
> 
> #0  0x08078108 in remember_mouse_glyph (f=0x86cdb08, gx=749, gy=521, rect=0x841c54c) at xdisp.c:2250
> #1  0x080f8808 in note_mouse_movement (frame=0x86cdb08, event=0xbfffdfa8) at xterm.c:3860
> #2  0x08100f4c in handle_one_xevent (dpyinfo=0x891eb50, eventptr=0xbfffe1dc, finish=0x841c564, hold_quit=
>     0xbfffe664) at xterm.c:6801
> #3  0x08101fc9 in event_handler_gdk (gxev=0xbfffe1dc, ev=0x8586c58, data=0x0) at xterm.c:5855

Looks precisely like bug#12251.  Hopefully, Eli can tell you how to proceed.
Please keep it in gdb.

martin






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

* bug#12310: crash in remember_mouse_glyph
  2012-08-30  8:02 ` martin rudalics
@ 2012-08-30  8:16   ` Werner LEMBERG
  2012-08-30  8:32     ` martin rudalics
  0 siblings, 1 reply; 11+ messages in thread
From: Werner LEMBERG @ 2012-08-30  8:16 UTC (permalink / raw)
  To: rudalics; +Cc: 12310


> Looks precisely like bug#12251.  Hopefully, Eli can tell you how to
> proceed.  Please keep it in gdb.

Indeed.  I've forgotten to describe the symptoms if not running under
gdb, and they are the same (visible bell while moving the mouse or
pressing any key, but no reaction otherwise; I had to kill Emacs, or
it crashed after some time).


    Werner





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

* bug#12310: crash in remember_mouse_glyph
  2012-08-30  8:16   ` Werner LEMBERG
@ 2012-08-30  8:32     ` martin rudalics
  2012-08-30  9:28       ` Werner LEMBERG
  0 siblings, 1 reply; 11+ messages in thread
From: martin rudalics @ 2012-08-30  8:32 UTC (permalink / raw)
  To: Werner LEMBERG; +Cc: 12310

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

> Indeed.  I've forgotten to describe the symptoms if not running under
> gdb, and they are the same (visible bell while moving the mouse or
> pressing any key, but no reaction otherwise; I had to kill Emacs, or
> it crashed after some time).

Meanwhile could you try the patch I earlier sent to Sam.  I'll attach it.
Basically, it should help to find the bug earlier.

martin


[-- Attachment #2: windowp.diff --]
[-- Type: text/plain, Size: 16070 bytes --]

bzr diff
=== modified file 'src/buffer.c'
--- src/buffer.c	2012-08-24 04:37:57 +0000
+++ src/buffer.c	2012-08-25 13:16:19 +0000
@@ -1351,7 +1351,7 @@
 A non-nil FLAG means mark the buffer modified.  */)
   (Lisp_Object flag)
 {
-  Lisp_Object fn, buffer, window;
+  Lisp_Object fn, buffer;
 
 #ifdef CLASH_DETECTION
   /* If buffer becoming modified, lock the file.
@@ -1401,8 +1401,7 @@
      buffers without "modifying" buffers, or redisplay should be
      smarter about updating the `*' in mode lines.  --gerd  */
   XSETBUFFER (buffer, current_buffer);
-  window = Fget_buffer_window (buffer, Qt);
-  if (WINDOWP (window))
+  if (!NILP (Fget_buffer_window (buffer, Qt)))
     {
       ++update_mode_lines;
       current_buffer->prevent_redisplay_optimizations_p = 1;
@@ -3195,7 +3194,7 @@
 	      Lisp_Object window;
 
 	      window = Foverlay_get (overlay, Qwindow);
-	      if (WINDOWP (window) && XWINDOW (window) != w)
+	      if (WINDOW_LIVE_P (window) && XWINDOW (window) != w)
 		continue;
 	    }
 
@@ -3337,7 +3336,7 @@
       if (endpos != pos && startpos != pos)
 	continue;
       window = Foverlay_get (overlay, Qwindow);
-      if (WINDOWP (window) && XWINDOW (window) != w)
+      if (WINDOW_LIVE_P (window) && XWINDOW (window) != w)
 	continue;
       if (startpos == pos
 	  && (str = Foverlay_get (overlay, Qbefore_string), STRINGP (str)))
@@ -3365,7 +3364,7 @@
       if (endpos != pos && startpos != pos)
 	continue;
       window = Foverlay_get (overlay, Qwindow);
-      if (WINDOWP (window) && XWINDOW (window) != w)
+      if (WINDOW_LIVE_P (window) && XWINDOW (window) != w)
 	continue;
       if (startpos == pos
 	  && (str = Foverlay_get (overlay, Qbefore_string), STRINGP (str)))

=== modified file 'src/editfns.c'
--- src/editfns.c	2012-08-21 23:39:56 +0000
+++ src/editfns.c	2012-08-25 12:34:37 +0000
@@ -360,7 +360,7 @@
 
   if (NILP (object))
     XSETBUFFER (object, current_buffer);
-  else if (WINDOWP (object))
+  else if (WINDOW_LIVE_P (object))
     object = XWINDOW (object)->buffer;
 
   if (!BUFFERP (object))

=== modified file 'src/frame.c'
--- src/frame.c	2012-08-22 16:05:04 +0000
+++ src/frame.c	2012-08-25 13:14:31 +0000
@@ -951,7 +951,7 @@
 		    || FRAME_ICONIFIED_P (XFRAME (f)))
 		  return f;
 	      }
-	    else if (WINDOWP (minibuf))
+	    else if (WINDOW_LIVE_P (minibuf))
 	      {
 		if (EQ (FRAME_MINIBUF_WINDOW (XFRAME (f)), minibuf)
 		    || EQ (WINDOW_FRAME (XWINDOW (minibuf)), f)
@@ -1010,7 +1010,7 @@
 	      if (! FRAME_MINIBUF_ONLY_P (XFRAME (f)))
 		prev = f;
 	    }
-	  else if (WINDOWP (minibuf))
+	  else if (WINDOW_LIVE_P (minibuf))
 	    {
 	      if (EQ (FRAME_MINIBUF_WINDOW (XFRAME (f)), minibuf)
 		  || EQ (WINDOW_FRAME (XWINDOW (minibuf)), f)
@@ -2150,7 +2150,7 @@
 	set_term_frame_name (f, val);
     }
 
-  if (EQ (prop, Qminibuffer) && WINDOWP (val))
+  if (EQ (prop, Qminibuffer) && WINDOW_LIVE_P (val))
     {
       if (! MINI_WINDOW_P (XWINDOW (val)))
 	error ("Surrogate minibuffer windows must be minibuffer windows");

=== modified file 'src/keyboard.c'
--- src/keyboard.c	2012-08-23 08:33:56 +0000
+++ src/keyboard.c	2012-08-25 12:34:33 +0000
@@ -3521,7 +3521,7 @@
   frame = event->frame_or_window;
   if (CONSP (frame))
     frame = XCAR (frame);
-  else if (WINDOWP (frame))
+  else if (WINDOW_LIVE_P (frame))
     frame = WINDOW_FRAME (XWINDOW (frame));
 
   /* There are still some events that don't set this field.
@@ -3738,7 +3738,7 @@
   event.kind = HELP_EVENT;
   event.frame_or_window = frame;
   event.arg = object;
-  event.x = WINDOWP (window) ? window : frame;
+  event.x = WINDOW_LIVE_P (window) ? window : frame;
   event.y = help;
   event.code = pos;
   kbd_buffer_store_event (&event);
@@ -4064,7 +4064,7 @@
 	  clear_event (event);
 
 	  kbd_fetch_ptr = event + 1;
-	  if (!WINDOWP (window))
+	  if (!WINDOW_LIVE_P (window))
 	    window = Qnil;
 	  obj = Fcons (Qhelp_echo,
 		       list5 (frame, help, window, object, position));
@@ -4109,7 +4109,7 @@
 	  frame = event->frame_or_window;
 	  if (CONSP (frame))
 	    frame = XCAR (frame);
-	  else if (WINDOWP (frame))
+	  else if (WINDOW_LIVE_P (frame))
 	    frame = WINDOW_FRAME (XWINDOW (frame));
 
 	  focus = FRAME_FOCUS_FRAME (XFRAME (frame));
@@ -5192,7 +5192,7 @@
     ? window_from_coordinates (f, XINT (x), XINT (y), &part, 0)
     : Qnil;
 
-  if (WINDOWP (window))
+  if (WINDOW_LIVE_P (window))
     {
       /* It's a click in window WINDOW at frame coordinates (X,Y)  */
       struct window *w = XWINDOW (window);
@@ -5621,7 +5621,7 @@
 	  struct frame *f;
 	  int fuzz;
 
-	  if (WINDOWP (event->frame_or_window))
+	  if (WINDOW_LIVE_P (event->frame_or_window))
 	    f = XFRAME (XWINDOW (event->frame_or_window)->frame);
 	  else if (FRAMEP (event->frame_or_window))
 	    f = XFRAME (event->frame_or_window);
@@ -5789,7 +5789,7 @@
 	  int symbol_num;
 	  int is_double;
 
-	  if (WINDOWP (event->frame_or_window))
+	  if (WINDOW_LIVE_P (event->frame_or_window))
 	    fr = XFRAME (XWINDOW (event->frame_or_window)->frame);
 	  else if (FRAMEP (event->frame_or_window))
 	    fr = XFRAME (event->frame_or_window);
@@ -9555,7 +9555,7 @@
 		     read using the keymaps in the buffer clicked on,
 		     not the current buffer.  If we're at the
 		     beginning of a key sequence, switch buffers.  */
-		  if (WINDOWP (window)
+		  if (WINDOW_LIVE_P (window)
 		      && BUFFERP (XWINDOW (window)->buffer)
 		      && XBUFFER (XWINDOW (window)->buffer) != current_buffer)
 		    {
@@ -11249,7 +11249,7 @@
   if (NILP (frame_or_window))
     frame_or_window = selected_window;
 
-  if (WINDOWP (frame_or_window))
+  if (WINDOW_LIVE_P (frame_or_window))
     {
       struct window *w = decode_live_window (frame_or_window);
 

=== modified file 'src/keymap.c'
--- src/keymap.c	2012-08-18 06:06:39 +0000
+++ src/keymap.c	2012-08-25 12:41:07 +0000
@@ -1559,7 +1559,7 @@
 
       window = POSN_WINDOW (position);
 
-      if (WINDOWP (window)
+      if (WINDOW_LIVE_P (window)
 	  && BUFFERP (XWINDOW (window)->buffer)
 	  && XBUFFER (XWINDOW (window)->buffer) != current_buffer)
 	{

=== modified file 'src/textprop.c'
--- src/textprop.c	2012-08-17 21:12:11 +0000
+++ src/textprop.c	2012-08-25 13:05:53 +0000
@@ -584,7 +584,7 @@
   if (NILP (object))
     XSETBUFFER (object, current_buffer);
 
-  if (WINDOWP (object))
+  if (WINDOW_LIVE_P (object))
     {
       w = XWINDOW (object);
       object = w->buffer;

=== modified file 'src/w32inevt.c'
--- src/w32inevt.c	2012-07-30 17:07:33 +0000
+++ src/w32inevt.c	2012-08-25 13:06:20 +0000
@@ -650,7 +650,7 @@
 		 selected now, and the last mouse movement event was
 		 not in it.  A minibuffer window will be selected iff
 		 it is active.  */
-	      if (WINDOWP (mouse_window)
+	      if (WINDOW_LIVE_P (mouse_window)
 		  && !EQ (mouse_window, last_mouse_window)
 		  && !EQ (mouse_window, selected_window))
 		{

=== modified file 'src/w32term.c'
--- src/w32term.c	2012-08-18 01:42:52 +0000
+++ src/w32term.c	2012-08-25 13:10:02 +0000
@@ -3927,7 +3927,7 @@
 w32_scroll_bar_handle_click (struct scroll_bar *bar, W32Msg *msg,
 			     struct input_event *emacs_event)
 {
-  if (! WINDOWP (bar->window))
+  if (! WINDOW_LIVE_P (bar->window))
     abort ();
 
   emacs_event->kind = SCROLL_BAR_CLICK_EVENT;
@@ -4420,7 +4420,7 @@
 		     selected now and last mouse movement event was
 		     not in it.  Minibuffer window will be selected
 		     only when it is active.  */
-		  if (WINDOWP (window)
+		  if (WINDOW_LIVE_P (window)
 		      && !EQ (window, last_window)
 		      && !EQ (window, selected_window)
 		      /* For click-to-focus window managers

=== modified file 'src/window.c'
--- src/window.c	2012-08-21 09:27:07 +0000
+++ src/window.c	2012-08-25 12:52:42 +0000
@@ -1969,7 +1969,7 @@
      So don't clobber point in that buffer.  */
   if (! EQ (buf, XWINDOW (selected_window)->buffer)
       /* This line helps to fix Horsley's testbug.el bug.  */
-      && !(WINDOWP (BVAR (b, last_selected_window))
+      && !(WINDOW_LIVE_P (BVAR (b, last_selected_window))
 	   && w != XWINDOW (BVAR (b, last_selected_window))
 	   && EQ (buf, XWINDOW (BVAR (b, last_selected_window))->buffer)))
     temp_set_point_both (b,
@@ -1980,7 +1980,7 @@
 					 marker_byte_position (w->pointm),
 					 BUF_ZV_BYTE (b)));
 
-  if (WINDOWP (BVAR (b, last_selected_window))
+  if (WINDOW_LIVE_P (BVAR (b, last_selected_window))
       && w == XWINDOW (BVAR (b, last_selected_window)))
     bset_last_selected_window (b, Qnil);
 }
@@ -2205,7 +2205,7 @@
     candidate_p = 0;
   else if (MINI_WINDOW_P (w)
            && (EQ (minibuf, Qlambda)
-	       || (WINDOWP (minibuf) && !EQ (minibuf, window))))
+	       || (WINDOW_LIVE_P (minibuf) && !EQ (minibuf, window))))
     {
       /* If MINIBUF is `lambda' don't consider any mini-windows.
          If it is a window, consider only that one.  */
@@ -2215,7 +2215,7 @@
     candidate_p = 1;
   else if (NILP (all_frames))
     {
-      eassert (WINDOWP (owindow));
+      eassert (WINDOW_LIVE_P (owindow));
       candidate_p = EQ (w->frame, XWINDOW (owindow)->frame);
     }
   else if (EQ (all_frames, Qvisible))
@@ -2244,7 +2244,7 @@
 	&& (FRAME_TERMINAL (XFRAME (w->frame))
 	    == FRAME_TERMINAL (XFRAME (selected_frame)));
     }
-  else if (WINDOWP (all_frames))
+  else if (WINDOW_LIVE_P (all_frames))
     candidate_p = (EQ (FRAME_MINIBUF_WINDOW (f), all_frames)
 		   || EQ (XWINDOW (all_frames)->frame, w->frame)
 		   || EQ (XWINDOW (all_frames)->frame, FRAME_FOCUS_FRAME (f)));
@@ -2348,7 +2348,7 @@
 	{
 	  if (EQ (XCAR (list), window))
 	    {
-	      if (WINDOWP (candidate))
+	      if (WINDOW_LIVE_P (candidate))
 		break;
 	    }
 	  else if (candidate_window_p (XCAR (list), window, minibuf,
@@ -2356,7 +2356,7 @@
 	    candidate = XCAR (list);
 	}
 
-      if (WINDOWP (candidate))
+      if (WINDOW_LIVE_P (candidate))
 	window = candidate;
     }
 
@@ -2580,7 +2580,7 @@
      or Qt otherwise.  */
 
   /* Pick a window to start with.  */
-  if (WINDOWP (obj))
+  if (WINDOW_LIVE_P (obj))
     window = obj;
   else if (f)
     window = FRAME_SELECTED_WINDOW (f);
@@ -3321,7 +3321,7 @@
       return Qt;
     }
 
-  if (WINDOWP (object))
+  if (WINDOW_LIVE_P (object))
     {
       struct window *w = XWINDOW (object);
       mark_window_display_accurate (object, 0);
@@ -5562,7 +5562,7 @@
 	   the current-selected-window.  So we have to be careful which
 	   point of the current-buffer we copy into old_point.  */
 	if (EQ (XWINDOW (data->current_window)->buffer, new_current_buffer)
-	    && WINDOWP (selected_window)
+	    && WINDOW_LIVE_P (selected_window)
 	    && EQ (XWINDOW (selected_window)->buffer, new_current_buffer)
 	    && !EQ (selected_window, data->current_window))
 	  old_point = XMARKER (XWINDOW (data->current_window)->pointm)->charpos;
@@ -6495,7 +6495,7 @@
 		void *user_data)
 {
   /* delete_frame may set FRAME_ROOT_WINDOW (f) to Qnil.  */
-  if (WINDOWP (FRAME_ROOT_WINDOW (f)))
+  if (WINDOW_VALID_P (FRAME_ROOT_WINDOW (f)))
     foreach_window_1 (XWINDOW (FRAME_ROOT_WINDOW (f)), fn, user_data);
 }
 
@@ -6534,7 +6534,7 @@
 freeze_window_start (struct window *w, void *freeze_p)
 {
   if (MINI_WINDOW_P (w)
-      || (WINDOWP (selected_window) /* Can be nil in corner cases.  */
+      || (WINDOW_LIVE_P (selected_window) /* Can be nil in corner cases.  */
          && (w == XWINDOW (selected_window)
              || (MINI_WINDOW_P (XWINDOW (selected_window))
                  && ! NILP (Vminibuf_scroll_window)

=== modified file 'src/xdisp.c'
--- src/xdisp.c	2012-08-21 23:39:56 +0000
+++ src/xdisp.c	2012-08-25 13:16:16 +0000
@@ -2714,7 +2714,7 @@
 	  /* Or show the region if we are in the mini-buffer and W is
 	     the window the mini-buffer refers to.  */
 	  || (MINI_WINDOW_P (XWINDOW (selected_window))
-	      && WINDOWP (minibuf_selected_window)
+	      && WINDOW_LIVE_P (minibuf_selected_window)
 	      && w == XWINDOW (minibuf_selected_window))))
     {
       ptrdiff_t markpos = marker_position (BVAR (current_buffer, mark));
@@ -10082,7 +10082,7 @@
   Vdeactivate_mark = AREF (vector, 1);
   windows_or_buffers_changed = XFASTINT (AREF (vector, 2));
 
-  if (WINDOWP (AREF (vector, 3)))
+  if (WINDOW_LIVE_P (AREF (vector, 3)))
     {
       struct window *w;
       Lisp_Object buffer, charpos, bytepos;
@@ -10251,7 +10251,7 @@
 resize_echo_area_exactly (void)
 {
   if (BUFFERP (echo_area_buffer[0])
-      && WINDOWP (echo_area_window))
+      && WINDOW_LIVE_P (echo_area_window))
     {
       struct window *w = XWINDOW (echo_area_window);
       int resized_p;
@@ -13057,7 +13057,8 @@
 
   /* do_pending_window_change could change the selected_window due to
      frame resizing which makes the selected window too small.  */
-  if (WINDOWP (selected_window) && (w = XWINDOW (selected_window)) != sw)
+  if (WINDOW_LIVE_P (selected_window)
+      && (w = XWINDOW (selected_window)) != sw)
     {
       sw = w;
       reconsider_clip_changes (w, current_buffer);
@@ -13336,7 +13337,7 @@
 	    {
 	      do_pending_window_change (1);
 	      /* If selected_window changed, redisplay again.  */
-	      if (WINDOWP (selected_window)
+	      if (WINDOW_LIVE_P (selected_window)
 		  && (w = XWINDOW (selected_window)) != sw)
 		goto retry;
 
@@ -13647,7 +13648,8 @@
   /* If we just did a pending size change, or have additional
      visible frames, or selected_window changed, redisplay again.  */
   if ((windows_or_buffers_changed && !pending)
-      || (WINDOWP (selected_window) && (w = XWINDOW (selected_window)) != sw))
+      || (WINDOW_LIVE_P (selected_window)
+	  && (w = XWINDOW (selected_window)) != sw))
     goto retry;
 
   /* Clear the face and image caches.
@@ -26358,7 +26360,7 @@
   Mouse_HLInfo *hlinfo = MOUSE_HL_INFO (XFRAME (w->frame));
 
   /* Quickly resolve the easy cases.  */
-  if (!(WINDOWP (hlinfo->mouse_face_window)
+  if (!(WINDOW_LIVE_P (hlinfo->mouse_face_window)
 	&& XWINDOW (hlinfo->mouse_face_window) == w))
     return 0;
   if (vpos < hlinfo->mouse_face_beg_row
@@ -27660,7 +27662,7 @@
     clear_mouse_face (hlinfo);
 
   /* Not on a window -> return.  */
-  if (!WINDOWP (window))
+  if (!WINDOW_LIVE_P (window))
     return;
 
   /* Reset help_echo_string. It will get recomputed below.  */

=== modified file 'src/xfaces.c'
--- src/xfaces.c	2012-08-21 10:21:04 +0000
+++ src/xfaces.c	2012-08-25 13:09:58 +0000
@@ -4350,7 +4350,7 @@
 	 matrices as invalid because they will reference faces freed
 	 above.  This function is also called when a frame is
 	 destroyed.  In this case, the root window of F is nil.  */
-      if (WINDOWP (f->root_window))
+      if (WINDOW_VALID_P (f->root_window))
 	{
 	  clear_current_matrices (f);
 	  ++windows_or_buffers_changed;

=== modified file 'src/xterm.c'
--- src/xterm.c	2012-08-18 01:42:52 +0000
+++ src/xterm.c	2012-08-25 13:09:51 +0000
@@ -4235,7 +4235,7 @@
 
   if (scroll_bar_p
       && strcmp (action_name, end_action) == 0
-      && WINDOWP (window_being_scrolled))
+      && WINDOW_LIVE_P (window_being_scrolled))
     {
       struct window *w;
 
@@ -4512,7 +4512,7 @@
 {
   struct scroll_bar *bar = (struct scroll_bar *) user_data;
   bar->dragging = Qnil;
-  if (WINDOWP (window_being_scrolled))
+  if (WINDOW_LIVE_P (window_being_scrolled))
     {
       x_send_scroll_bar_event (window_being_scrolled,
                                scroll_bar_end_scroll, 0, 0);
@@ -5557,7 +5557,7 @@
 static void
 x_scroll_bar_handle_click (struct scroll_bar *bar, XEvent *event, struct input_event *emacs_event)
 {
-  if (! WINDOWP (bar->window))
+  if (! WINDOW_LIVE_P (bar->window))
     abort ();
 
   emacs_event->kind = SCROLL_BAR_CLICK_EVENT;
@@ -6782,7 +6782,7 @@
                 /* Window will be selected only when it is not selected now and
                    last mouse movement event was not in it.  Minibuffer window
                    will be selected only when it is active.  */
-                if (WINDOWP (window)
+                if (WINDOW_LIVE_P (window)
                     && !EQ (window, last_window)
 		    && !EQ (window, selected_window)
 		    /* For click-to-focus window managers



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

* bug#12310: crash in remember_mouse_glyph
  2012-08-30  8:32     ` martin rudalics
@ 2012-08-30  9:28       ` Werner LEMBERG
  2012-09-05  4:42         ` Werner LEMBERG
  0 siblings, 1 reply; 11+ messages in thread
From: Werner LEMBERG @ 2012-08-30  9:28 UTC (permalink / raw)
  To: rudalics; +Cc: 12310


> Meanwhile could you try the patch I earlier sent to Sam.  I'll
> attach it.  Basically, it should help to find the bug earlier.

Will try, thanks.


  Grüße aus Wien

     Werner





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

* bug#12310: crash in remember_mouse_glyph
  2012-08-30  9:28       ` Werner LEMBERG
@ 2012-09-05  4:42         ` Werner LEMBERG
  2012-09-05  9:44           ` martin rudalics
  2012-09-05 16:40           ` Eli Zaretskii
  0 siblings, 2 replies; 11+ messages in thread
From: Werner LEMBERG @ 2012-09-05  4:42 UTC (permalink / raw)
  To: rudalics; +Cc: 12310


Just now I've got a crash, but I'm not sure whether it belongs to this
bug report.  Since I'm using Martin's patch, I'm reporting it here.

The crash happened after composing an email with mew, then trying to
send it with C-c C-c.

I still have the process.  Anything else I can investigate?


    Werner


======================================================================


Program received signal SIGSEGV, Segmentation fault.
set_buffer_internal_1 (b=0x846958d) at buffer.c:2154
2154        bset_undo_list (b, BVAR (b->base_buffer, undo_list));

(gdb) p b
$1 = (struct buffer *) 0x846958d

(gdb) p b->base_buffer
$2 = (struct buffer *) 0x98000000

(gdb) p undo_list
No symbol "undo_list" in current context.

(gdb) bt full
#0  set_buffer_internal_1 (b=0x846958d) at buffer.c:2154
        old_buf = 0x8480af8
        tail = <optimized out>
#1  0x08147c06 in command_loop_1 () at keyboard.c:1438
        cmd = <optimized out>
        keybuf = {12, -1073747977, 159382230, 40, -1073746568, 134626714, 141443984, 138843538, 
    -1073747977, -1073747977, 159382230, 40, -1073746568, 135518707, 159382230, 138843562, -1073747977, 
    140927362, -1073747977, 40, 40, 135518989, 159382230, -1073747977, -1073746568, 135978019, 140497734, 
    4625810, -1207960904, 0}
        i = <optimized out>
        prev_modiff = 0
        prev_buffer = 0x0
#2  0x081aa67d in internal_condition_case (bfun=0x8147b30 <command_loop_1>, handlers=138877346, hfun=
    0x813da40 <cmd_error>) at eval.c:1322
        val = <optimized out>
        c = {
          tag = 138843538, 
          val = 138843538, 
          next = 0xbfffe968, 
          gcpro = 0x0, 
          jmp = {{
              __jmpbuf = {0, 142791432, 142791448, -1073746568, 1781480335, -1598877472}, 
              __mask_was_saved = 0, 
              __saved_mask = {
                __val = {134553001, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3062816632, 3065862960, 0, 0, 0, 0, 
    4294967295, 3221219536, 3221219824, 135609939, 2, 3087003588, 3087005952, 1, 0, 3086922907, 3087006392, 
    3058843712, 1, 1, 0, 1}
              }
            }}, 
          backlist = 0x0, 
          handlerlist = 0x0, 
          lisp_eval_depth = 0, 
          pdlcount = 2, 
          poll_suppress_count = 1, 
          interrupt_input_blocked = 0, 
          byte_stack = 0x0
        }
        h = {
          handler = 138877346, 
          var = 138843538, 
          chosen_clause = 138843562, 
          tag = 0xbfffe844, 
          next = 0x0
        }
#3  0x0813c375 in command_loop_2 (ignore=138843538) at keyboard.c:1204
        val = 138843538
#4  0x081aa599 in internal_catch (tag=138875290, func=0x813c350 <command_loop_2>, arg=138843538)
    at eval.c:1079
        c = {
          tag = 138875290, 
          val = 138843538, 
          next = 0x0, 
          gcpro = 0x0, 
          jmp = {{
              __jmpbuf = {0, 142791432, 142791448, -1073746568, 1781398415, -1598716192}, 
              __mask_was_saved = 0, 
              __saved_mask = {
                __val = {0, 177, 23, 3063290583, 140685641, 140685640, 136248496, 142668888, 136562658, 14, 
    58, 142668888, 14, 136562658, 3221219912, 0, 0, 0, 3221219912, 400, 3221221571, 136562658, 138967378, 
    138967376, 138843538, 3221220728, 135976258, 138967378, 138843538, 138843538, 1, 0}
              }
            }}, 
          backlist = 0x0, 
          handlerlist = 0x0, 
          lisp_eval_depth = 0, 
          pdlcount = 2, 
          poll_suppress_count = 1, 
          interrupt_input_blocked = 0, 
          byte_stack = 0x0
        }
#5  0x0813d58a in command_loop () at keyboard.c:1183
No locals.
#6  recursive_edit_1 () at keyboard.c:804
        count = 1
        val = 0
#7  0x0813d87f in Frecursive_edit () at keyboard.c:868
        count = <optimized out>
        buffer = 138843538
#8  0x080599d0 in main (argc=2, argv=Cannot access memory at address 0xa0b310e4
) at emacs.c:1654
        dummy = 136470960
        stack_bottom_variable = 8 '\b'
        do_initial_setlocale = <optimized out>
        skip_args = 0
        rlim = {
          rlim_cur = 8388608, 
          rlim_max = 18446744073709551615
        }
        no_loadup = 0
        junk = 0x0
        dname_arg = 0x0
        ch_to_dir = 0xb6a873c4 "\300\201\250\266\340\203\250\266\300p\250\266\264p\250\266dp\250\266\003"





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

* bug#12310: crash in remember_mouse_glyph
  2012-09-05  4:42         ` Werner LEMBERG
@ 2012-09-05  9:44           ` martin rudalics
  2012-09-05 16:41             ` Eli Zaretskii
  2012-09-05 16:40           ` Eli Zaretskii
  1 sibling, 1 reply; 11+ messages in thread
From: martin rudalics @ 2012-09-05  9:44 UTC (permalink / raw)
  To: Werner LEMBERG; +Cc: 12310

 > I still have the process.  Anything else I can investigate?

No ideas.  Eli what do you think?

martin





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

* bug#12310: crash in remember_mouse_glyph
  2012-09-05  4:42         ` Werner LEMBERG
  2012-09-05  9:44           ` martin rudalics
@ 2012-09-05 16:40           ` Eli Zaretskii
  1 sibling, 0 replies; 11+ messages in thread
From: Eli Zaretskii @ 2012-09-05 16:40 UTC (permalink / raw)
  To: Werner LEMBERG; +Cc: 12310

> Date: Wed, 05 Sep 2012 06:42:24 +0200 (CEST)
> From: Werner LEMBERG <wl@gnu.org>
> Cc: 12310@debbugs.gnu.org
> 
> 
> Just now I've got a crash, but I'm not sure whether it belongs to this
> bug report.  Since I'm using Martin's patch, I'm reporting it here.
> 
> The crash happened after composing an email with mew, then trying to
> send it with C-c C-c.
> 
> I still have the process.  Anything else I can investigate?

Yes, please.  We need to understand why it segfaulted.

> Program received signal SIGSEGV, Segmentation fault.
> set_buffer_internal_1 (b=0x846958d) at buffer.c:2154
> 2154        bset_undo_list (b, BVAR (b->base_buffer, undo_list));
> 
> (gdb) p b
> $1 = (struct buffer *) 0x846958d
> 
> (gdb) p b->base_buffer
> $2 = (struct buffer *) 0x98000000

What does the following show?

 (gdb) p *b->base_buffer

> (gdb) p undo_list
> No symbol "undo_list" in current context.

undo_list is a name of a struct member, not a variable.

Thanks.





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

* bug#12310: crash in remember_mouse_glyph
  2012-09-05  9:44           ` martin rudalics
@ 2012-09-05 16:41             ` Eli Zaretskii
  2012-09-05 17:06               ` Werner LEMBERG
  0 siblings, 1 reply; 11+ messages in thread
From: Eli Zaretskii @ 2012-09-05 16:41 UTC (permalink / raw)
  To: martin rudalics; +Cc: 12310

> Date: Wed, 05 Sep 2012 11:44:18 +0200
> From: martin rudalics <rudalics@gmx.at>
> CC: 12310@debbugs.gnu.org, "eliz@gnu.org" <eliz@gnu.org>
> 
>  > I still have the process.  Anything else I can investigate?
> 
> No ideas.  Eli what do you think?

I just sent some requests.

In any case, I don't think this crash is relevant to this bug report:
there's no mouse-highlight anywhere on the call stack.  I suggest to
file a separate bug report.





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

* bug#12310: crash in remember_mouse_glyph
  2012-09-05 16:41             ` Eli Zaretskii
@ 2012-09-05 17:06               ` Werner LEMBERG
  2012-09-26  6:44                 ` Werner LEMBERG
  0 siblings, 1 reply; 11+ messages in thread
From: Werner LEMBERG @ 2012-09-05 17:06 UTC (permalink / raw)
  To: eliz; +Cc: 12310


> In any case, I don't think this crash is relevant to this bug
> report: there's no mouse-highlight anywhere on the call stack.  I
> suggest to file a separate bug report.

Here it is:

  http://debbugs.gnu.org/cgi/bugreport.cgi?bug=12360


    Werner





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

* bug#12310: crash in remember_mouse_glyph
  2012-09-05 17:06               ` Werner LEMBERG
@ 2012-09-26  6:44                 ` Werner LEMBERG
  0 siblings, 0 replies; 11+ messages in thread
From: Werner LEMBERG @ 2012-09-26  6:44 UTC (permalink / raw)
  To: eliz; +Cc: 12310


I'm now running an Emacs compiled from a freshly checked out bzr on
Sept. 6th, and it seems to be stable again.  I suggest to close this
bug.


    Werner





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

end of thread, other threads:[~2012-09-26  6:44 UTC | newest]

Thread overview: 11+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2012-08-30  5:27 bug#12310: crash in remember_mouse_glyph Werner LEMBERG
2012-08-30  8:02 ` martin rudalics
2012-08-30  8:16   ` Werner LEMBERG
2012-08-30  8:32     ` martin rudalics
2012-08-30  9:28       ` Werner LEMBERG
2012-09-05  4:42         ` Werner LEMBERG
2012-09-05  9:44           ` martin rudalics
2012-09-05 16:41             ` Eli Zaretskii
2012-09-05 17:06               ` Werner LEMBERG
2012-09-26  6:44                 ` Werner LEMBERG
2012-09-05 16:40           ` Eli Zaretskii

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