Subject: bug#17322: 24.3.90; emacs crash at eassert (verify_row_hash (a)) in dispnew.c:1169

From: Nicolas Richard <[email-masked]>
Date: Wed, 23 Apr 2014 16:54:27 +0200

Le 23/04/2014 16:43, Eli Zaretskii a écrit :
>> From: Nicolas Richard <[email-masked]>
>> Breakpoint 1, terminate_due_to_signal (sig=6, backtrace_limit=2147483647) at emacs.c:351
>> 351	  signal (sig, SIG_DFL);
>> #0  terminate_due_to_signal (sig=6, backtrace_limit=2147483647) at emacs.c:351
>> #1  0x081f5927 in die (msg=0x82d5798 "verify_row_hash (a)", file=0x82d5608 "dispnew.c", line=1169) at alloc.c:6826
>> #2  0x08059979 in row_equal_p (a=0xa25151c, b=0xb2a0afc, mouse_face_p=true) at dispnew.c:1169
>> #3  0x0805ef01 in scrolling_window (w=0xa7ee2f0, header_line_p=false) at dispnew.c:4129
> 
> There's a slim chance that output from the following GDB commands will
> give some hint:
> 
>  (gdb) frame 2
>  (gdb) pgrowx a
>  (gdb) pgrowx b

(gdb) frame 2
#2  0x08059979 in row_equal_p (a=0xa25151c, b=0xb2a0afc, mouse_face_p=true) at dispnew.c:1169
1169      eassert (verify_row_hash (a));
(gdb) pgrowx a
TEXT: 19 glyphs
  0    0: CHAR[7] pos=993 blev=0,btyp=L w=9 a+d=14+5 face=36 MB
  1    9: CHAR[1] pos=994 blev=0,btyp=L w=9 a+d=14+5 face=36 MB
  2   18: CHAR[0] pos=995 blev=0,btyp=L w=9 a+d=14+5 face=36 MB
  3   27: CHAR[e] pos=996 blev=0,btyp=L w=9 a+d=14+5 face=36 MB
  4   36: CHAR[e] pos=997 blev=0,btyp=L w=9 a+d=14+5 face=36 MB
  5   45: CHAR[8] pos=998 blev=0,btyp=L w=9 a+d=14+5 face=36 MB
  6   54: CHAR[7] pos=999 blev=0,btyp=L w=9 a+d=14+5 face=36 MB
  7   63: CHAR[ ] pos=1000 blev=0,btyp=L w=9 a+d=14+5 face=26 MB
  8   72: CHAR[*] pos=1001 blev=0,btyp=L w=9 a+d=14+5 face=26 MB
  9   81: CHAR[ ] pos=1002 blev=0,btyp=L w=9 a+d=14+5 face=26 MB
 10   90: CHAR[c] pos=1003 blev=0,btyp=L w=9 a+d=14+5 face=26 MB
 11   99: CHAR[ ] pos=1004 blev=0,btyp=L w=9 a+d=14+5 face=26 MB
 12  108: CHAR[o] pos=1005 blev=0,btyp=L w=9 a+d=14+5 face=26 MB
 13  117: CHAR[ ] pos=1006 blev=0,btyp=L w=9 a+d=14+5 face=26 MB
 14  126: CHAR[l] pos=1007 blev=0,btyp=L w=9 a+d=14+5 face=26 MB
 15  135: CHAR[d] pos=1008 blev=0,btyp=L w=9 a+d=14+5 face=26 MB
 16  144: CHAR[l] pos=1009 blev=0,btyp=L w=9 a+d=14+5 face=26 MB
 17  153: CHAR[c] pos=1010 blev=0,btyp=L w=9 a+d=14+5 face=26 MB
 18  162: CHAR[ ] pos=0 blev=0,btyp=B w=9 a+d=14+5 face=26 MB
RIGHT: 1 glyphs
  0  171: COMP[0 (32776..21)] pos=-1 w=1012 a+d=0+-9539 face=5 vof=2388 MB slice=32776,0,21,0
(gdb) pgrowx b
TEXT: 19 glyphs
  0    0: CHAR[7] pos=993 blev=0,btyp=L w=9 a+d=14+5 face=21 MB
  1    9: CHAR[1] pos=994 blev=0,btyp=L w=9 a+d=14+5 face=21 MB
  2   18: CHAR[0] pos=995 blev=0,btyp=L w=9 a+d=14+5 face=21 MB
  3   27: CHAR[e] pos=996 blev=0,btyp=L w=9 a+d=14+5 face=21 MB
  4   36: CHAR[e] pos=997 blev=0,btyp=L w=9 a+d=14+5 face=21 MB
  5   45: CHAR[8] pos=998 blev=0,btyp=L w=9 a+d=14+5 face=21 MB
  6   54: CHAR[7] pos=999 blev=0,btyp=L w=9 a+d=14+5 face=21 MB
  7   63: CHAR[ ] pos=1000 blev=0,btyp=L w=9 a+d=14+5 face=11 MB
  8   72: CHAR[*] pos=1001 blev=0,btyp=L w=9 a+d=14+5 face=11 MB
  9   81: CHAR[ ] pos=1002 blev=0,btyp=L w=9 a+d=14+5 face=11 MB
 10   90: CHAR[c] pos=1003 blev=0,btyp=L w=9 a+d=14+5 face=11 MB
 11   99: CHAR[ ] pos=1004 blev=0,btyp=L w=9 a+d=14+5 face=11 MB
 12  108: CHAR[o] pos=1005 blev=0,btyp=L w=9 a+d=14+5 face=11 MB
 13  117: CHAR[ ] pos=1006 blev=0,btyp=L w=9 a+d=14+5 face=11 MB
 14  126: CHAR[l] pos=1007 blev=0,btyp=L w=9 a+d=14+5 face=11 MB
 15  135: CHAR[d] pos=1008 blev=0,btyp=L w=9 a+d=14+5 face=11 MB
 16  144: CHAR[l] pos=1009 blev=0,btyp=L w=9 a+d=14+5 face=11 MB
 17  153: CHAR[c] pos=1010 blev=0,btyp=L w=9 a+d=14+5 face=11 MB
 18  162: CHAR[ ] pos=0 blev=0,btyp=B w=9 a+d=14+5 MB
(gdb) 

fwiw, the chars in the brackets above correspond to a git abbreviated sha1 and a commit message as displayed e.g. in magit log buffers.

>> #3  0x0805ef01 in scrolling_window (w=0xa7ee2f0, header_line_p=false) at dispnew.c:4129
>>         desired_matrix = 0x96873a0
>>         current_matrix = 0xb453fb0
>>         yb = 967
>>         i = 32
>>         j = 32
>>         first_old = 30
>>         first_new = 30
>>         last_old = 50
>>         last_new = 50
> 
> Do you really have 50 lines in your windows?

I apparently do, at least in my current session (the 51st can be seen but the buffer text scrolls up when cursor reaches it).

-- 
Nico.