Subject: Re: bug#11367: 24.0.95.1 Crash: Windows 7 using egg

From: Michael Kleehammer <[email-masked]>
Date: Sat, 28 Apr 2012 11:32:10 -0500

Sorry for the delay.  It stopped aborting at exactly the same place,
on multiple machines, with
and without -Q.  I tried a lot of combinations and it seems that
adding one more step, a C-n, does it.

The abort is sporadic during development, but this seemed to do it
every time.  Perhaps it
isn't as certain as I thought.

On Sat, Apr 28, 2012 at 10:34 AM, Eli Zaretskii <[email-masked]> wrote:

...

> Please show the result of the following commands:
>
>  (gdb) frame 2

#2  0x011d6e49 in pos_visible_p (w=0x3600800, charpos=462, x=0x88e2f8,
y=0x88e2f4, rtop=0x88e308, rbot=0x88e304, rowh=0x88e300,
vpos=0x88e2fc) at xdisp.c:1460
1460    xdisp.c: No such file or directory.

>  (gdb) p g

$1 = (struct glyph *) 0x4fd90fc

>  (gdb) p it3.glyph_row->glyphs[1] + it3.glyph_row->used[1]

$2 = (struct glyph *) 0x4fd90fc

>  (gdb) p it3.current

$3 = {
  pos = {
    charpos = 445,
    bytepos = 445
  },
  overlay_string_index = -1,
  string_pos = {
    charpos = 0,
    bytepos = 0
  },
  dpvec_index = -1
}

>  (gdb) p charpos

$4 = 462

>  (gdb) p it3.object

$5 = 84618657

>  (gdb) p (g-1)->object

$6 = 0

>  (gdb) pgrowx it3.glyph_row

TEXT: 7 glyphs
  0    0: CHAR[m] pos=1 blev=0,btyp=L w=14 a+d=16+5 face=19 MB
  1   14: CHAR[a] pos=2 blev=0,btyp=L w=8 a+d=16+5 face=19 MB
  2   22: CHAR[s] pos=3 blev=0,btyp=L w=7 a+d=16+5 face=19 MB
  3   29: CHAR[t] pos=4 blev=0,btyp=L w=6 a+d=16+5 face=19 MB
  4   35: CHAR[e] pos=5 blev=0,btyp=L w=8 a+d=16+5 face=19 MB
  5   43: CHAR[r] pos=6 blev=0,btyp=L w=6 a+d=16+5 face=19 MB
  6   49: CHAR[ ] pos=0 blev=0,btyp=B w=8 a+d=13+4 MB

I'm impressed with your remote debugging ;)

>> #40 0x01004baa in Frecursive_edit () at keyboard.c:823
>> #41 0x010028b5 in main (argc=1, argv=0x8e2d98) at emacs.c:1715
>> (gdb)
>
> There should have been a Lisp-level backtrace after this; didn't you
> see it?  Perhaps that's because .gdbinit was not loaded (did you start
> GDB from the same directory where you saved .gdbinit?), so try this:
>
>  (gdb) source .gdbinit
>  (gdb) xbacktrace

My mistake.  I had to download mingw from scratch and install gdb,
etc. and forgot a step.

"posn-at-point" (0x88e448)
"mouse-avoidance-point-position" (0x88e744)
"mouse-avoidance-too-close-p" (0x88ea34)
"mouse-avoidance-fancy" (0x88ee38)
"apply" (0x88ee34)
"byte-code" (0x88f084)
"timer-event-handler" (0x88f4fc)

This original backtrace was without -Q, so the mouse avoidance setting
may be non-default.  Let me know if I should kill it and get a -Q
backtrace.

> Then it would help to have a full recipe starting with "emacs -Q".

* Download the egg library from https://github.com/bogolisk/egg

  I am using the latest version.

* Create new git repository in an empty directory:

  $ git init

* Create readme.txt with "1st line\n" and commit.

  $ git add readme.txt
  $ git commit -m "initial commit"

* Append "2nd line\n" to the readme.txt file.

* Create two new text files with one line each:

  * file1 with "file1\n"
  * file2 with "file2\n"

* Start emacs while in repo directory: $ emacs -Q

  (You can start from any directory, but egg-status uses the current
directory.  Use can use
  any other method, such as cd or dired to set the current directory
to the repository
  directory.)

* Load the egg library: M-x load-file , then find egg.el

* M-x egg-status

  Splits window and creates status buffer on bottom.

* Put the cursor on file1 at the bottom of the status window.

  C-x o    ; switch to status buffer
  C-n ...  ; move to file1

* Press 's' to stage the file which will remove file1 from the bottom
section and create a new file1 section
  showing a diff.

  s

* At this point it may crash.  If not, the cursor should be on the
file1 filename in the new
  section.  Press C-n once to crash.