GNU bug report logs - #12310
crash in remember_mouse_glyph

Previous Next

Package: emacs;

Reported by: Werner LEMBERG <wl <at> gnu.org>

Date: Thu, 30 Aug 2012 05:30:02 UTC

Severity: normal

Done: Glenn Morris <rgm <at> gnu.org>

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 12310 in the body.
You can then email your comments to 12310 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


Report forwarded to bug-gnu-emacs <at> gnu.org:
bug#12310; Package emacs. (Thu, 30 Aug 2012 05:30:02 GMT) Full text and rfc822 format available.

Acknowledgement sent to Werner LEMBERG <wl <at> gnu.org>:
New bug report received and forwarded. Copy sent to bug-gnu-emacs <at> gnu.org. (Thu, 30 Aug 2012 05:30:03 GMT) Full text and rfc822 format available.

Message #5 received at submit <at> debbugs.gnu.org (full text, mbox):

From: Werner LEMBERG <wl <at> gnu.org>
To: bug-gnu-emacs <at> gnu.org
Subject: crash in remember_mouse_glyph
Date: Thu, 30 Aug 2012 07:27:50 +0200 (CEST)
[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




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#12310; Package emacs. (Thu, 30 Aug 2012 08:05:01 GMT) Full text and rfc822 format available.

Message #8 received at 12310 <at> debbugs.gnu.org (full text, mbox):

From: martin rudalics <rudalics <at> gmx.at>
To: Werner LEMBERG <wl <at> gnu.org>
Cc: 12310 <at> debbugs.gnu.org
Subject: Re: bug#12310: crash in remember_mouse_glyph
Date: Thu, 30 Aug 2012 10:02:56 +0200
> 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





Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#12310; Package emacs. (Thu, 30 Aug 2012 08:18:01 GMT) Full text and rfc822 format available.

Message #11 received at 12310 <at> debbugs.gnu.org (full text, mbox):

From: Werner LEMBERG <wl <at> gnu.org>
To: rudalics <at> gmx.at
Cc: 12310 <at> debbugs.gnu.org
Subject: Re: bug#12310: crash in remember_mouse_glyph
Date: Thu, 30 Aug 2012 10:16:26 +0200 (CEST)
> 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




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#12310; Package emacs. (Thu, 30 Aug 2012 08:34:02 GMT) Full text and rfc822 format available.

Message #14 received at 12310 <at> debbugs.gnu.org (full text, mbox):

From: martin rudalics <rudalics <at> gmx.at>
To: Werner LEMBERG <wl <at> gnu.org>
Cc: 12310 <at> debbugs.gnu.org
Subject: Re: bug#12310: crash in remember_mouse_glyph
Date: Thu, 30 Aug 2012 10:32:11 +0200
[Message part 1 (text/plain, inline)]
> 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

[windowp.diff (text/plain, inline)]
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



Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#12310; Package emacs. (Thu, 30 Aug 2012 09:31:02 GMT) Full text and rfc822 format available.

Message #17 received at 12310 <at> debbugs.gnu.org (full text, mbox):

From: Werner LEMBERG <wl <at> gnu.org>
To: rudalics <at> gmx.at
Cc: 12310 <at> debbugs.gnu.org
Subject: Re: bug#12310: crash in remember_mouse_glyph
Date: Thu, 30 Aug 2012 11:28:57 +0200 (CEST)
> 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




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#12310; Package emacs. (Wed, 05 Sep 2012 04:43:02 GMT) Full text and rfc822 format available.

Message #20 received at 12310 <at> debbugs.gnu.org (full text, mbox):

From: Werner LEMBERG <wl <at> gnu.org>
To: rudalics <at> gmx.at
Cc: 12310 <at> debbugs.gnu.org
Subject: Re: bug#12310: crash in remember_mouse_glyph
Date: Wed, 05 Sep 2012 06:42:24 +0200 (CEST)
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"




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#12310; Package emacs. (Wed, 05 Sep 2012 09:44:01 GMT) Full text and rfc822 format available.

Message #23 received at 12310 <at> debbugs.gnu.org (full text, mbox):

From: martin rudalics <rudalics <at> gmx.at>
To: Werner LEMBERG <wl <at> gnu.org>
Cc: "eliz <at> gnu.org" <eliz <at> gnu.org>, 12310 <at> debbugs.gnu.org
Subject: Re: bug#12310: crash in remember_mouse_glyph
Date: Wed, 05 Sep 2012 11:44:18 +0200
> I still have the process.  Anything else I can investigate?

No ideas.  Eli what do you think?

martin




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#12310; Package emacs. (Wed, 05 Sep 2012 16:41:01 GMT) Full text and rfc822 format available.

Message #26 received at 12310 <at> debbugs.gnu.org (full text, mbox):

From: Eli Zaretskii <eliz <at> gnu.org>
To: Werner LEMBERG <wl <at> gnu.org>
Cc: rudalics <at> gmx.at, 12310 <at> debbugs.gnu.org
Subject: Re: bug#12310: crash in remember_mouse_glyph
Date: Wed, 05 Sep 2012 19:40:48 +0300
> Date: Wed, 05 Sep 2012 06:42:24 +0200 (CEST)
> From: Werner LEMBERG <wl <at> gnu.org>
> Cc: 12310 <at> 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.




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#12310; Package emacs. (Wed, 05 Sep 2012 16:42:02 GMT) Full text and rfc822 format available.

Message #29 received at 12310 <at> debbugs.gnu.org (full text, mbox):

From: Eli Zaretskii <eliz <at> gnu.org>
To: martin rudalics <rudalics <at> gmx.at>
Cc: wl <at> gnu.org, 12310 <at> debbugs.gnu.org
Subject: Re: bug#12310: crash in remember_mouse_glyph
Date: Wed, 05 Sep 2012 19:41:50 +0300
> Date: Wed, 05 Sep 2012 11:44:18 +0200
> From: martin rudalics <rudalics <at> gmx.at>
> CC: 12310 <at> debbugs.gnu.org, "eliz <at> gnu.org" <eliz <at> 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.




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#12310; Package emacs. (Wed, 05 Sep 2012 17:07:02 GMT) Full text and rfc822 format available.

Message #32 received at 12310 <at> debbugs.gnu.org (full text, mbox):

From: Werner LEMBERG <wl <at> gnu.org>
To: eliz <at> gnu.org
Cc: rudalics <at> gmx.at, 12310 <at> debbugs.gnu.org
Subject: Re: bug#12310: crash in remember_mouse_glyph
Date: Wed, 05 Sep 2012 19:06:06 +0200 (CEST)
> 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




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#12310; Package emacs. (Wed, 26 Sep 2012 06:47:02 GMT) Full text and rfc822 format available.

Message #35 received at 12310 <at> debbugs.gnu.org (full text, mbox):

From: Werner LEMBERG <wl <at> gnu.org>
To: eliz <at> gnu.org
Cc: rudalics <at> gmx.at, 12310 <at> debbugs.gnu.org
Subject: Re: bug#12310: crash in remember_mouse_glyph
Date: Wed, 26 Sep 2012 08:44:44 +0200 (CEST)
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




bug closed, send any further explanations to 12310 <at> debbugs.gnu.org and Werner LEMBERG <wl <at> gnu.org> Request was from Glenn Morris <rgm <at> gnu.org> to control <at> debbugs.gnu.org. (Wed, 26 Sep 2012 06:59:02 GMT) Full text and rfc822 format available.

bug archived. Request was from Debbugs Internal Request <help-debbugs <at> gnu.org> to internal_control <at> debbugs.gnu.org. (Wed, 24 Oct 2012 11:24:02 GMT) Full text and rfc822 format available.

This bug report was last modified 12 years and 236 days ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.