GNU bug report logs - #6177
23.2; emacs crashes when reverting a file

Previous Next

Package: emacs;

Reported by: Roland Winkler <roland.winkler <at> physik.uni-erlangen.de>

Date: Tue, 11 May 2010 23:29:01 UTC

Severity: normal

Found in version 23.2

Done: Chong Yidong <cyd <at> stupidchicken.com>

Bug is archived. No further changes may be made.

Full log


View this message in rfc822 format

From: Eli Zaretskii <eliz <at> gnu.org>
To: Roland Winkler <Roland.Winkler <at> physik.uni-erlangen.de>
Cc: 6177 <at> debbugs.gnu.org
Subject: bug#6177: 23.2; emacs crashes when reverting a file
Date: Wed, 12 May 2010 21:13:00 +0300
> Date: Wed, 12 May 2010 08:13:41 -0500
> From: "Roland Winkler" <Roland.Winkler <at> physik.uni-erlangen.de>
> Cc: 6177 <at> debbugs.gnu.org
> 
> Any hints on what these crashes are possibly be related with
> according to the backtrace are greatly appreciated.

Let me try to give you some insights, by walking the call-stack
frames, telling what I see, and asking questions.

  #1  0x081deb85 in temp_set_point_both (buffer=0x98411c8, charpos=92, bytepos=92) at intervals.c:1950

This frame causes the crash here:

  if (charpos > BUF_ZV (buffer) || charpos < BUF_BEGV (buffer))
    abort ();

BUF_ZV and BUF_BEGV are, respectively (point-max) and (point-min) of
the buffer.  Since we see that charpos is 92, I'm guessing that the
first comparison is the culprit, i.e. (point-max) is less than or
equal to 92.

What do the following GDB commands display in frame #1?

  (gdb) print buffer->zv
  (gdb) print *buffer->text->beg <at> N

Here N is the value of buffer->zv displayed by the first command.

  #2  0x08091754 in redisplay_window (window=159032549, just_this_one_p=0) at xdisp.c:13940

This frame calls temp_set_point_both here:

  /* Restore current_buffer and value of point in it.  */
  TEMP_SET_PT_BOTH (CHARPOS (opoint), BYTEPOS (opoint));

opoint is initialized at the beginning of the function to the value of
point:

  SET_TEXT_POS (lpoint, PT, PT_BYTE);
  opoint = lpoint;

So it looks like the value of point that was valid before redisplaying
the window somehow became invalid during redisplaying it.  Hmm...
What kind of buffer is this?  Type these commands to find out:

  (gdb) print buffer->name
  (gdb) xstring

Also, what window are we redisplaying?  Type these commands:

  (gdb) print w->mini_p
  (gdb) xsymbol

TIA




This bug report was last modified 14 years and 344 days ago.

Previous Next


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