Subject: bug#5856: 24.0.50; Crash in redisplay

From: Jan Djärv <[email-masked]>
Date: Thu, 08 Apr 2010 08:16:13 +0200

Eli Zaretskii skrev:
>> Date: Wed, 07 Apr 2010 21:11:13 +0200
>> From: Jan Djärv <[email-masked]>
>> Cc: 
>>
>> Sometimes I get a segmentation violation and emacs dies.
>> I just managed to catch it in the debugger.  Backtrace below (very long,
>> but instructions says to give bt full),
>> Let me know if you need more info, I'll keep it in the debugger for a
>> couple of days.  This is from trunk, updated and built today (Apr 7, 2010).
>>
>> Program received signal SIGSEGV, Segmentation fault.
>> 0x000000000044d2f1 in set_cursor_from_row (w=0x1378d60, row=0x1fbf550,
>>      matrix=0x18217a0, delta=0, delta_bytes=0, dy=0, dvpos=0)
>>      at /home/jhd/src/emacs/fixes/src/xdisp.c:12775
>> 12775	  if (!(BUFFERP (glyph->object) && glyph->charpos == pt_old)
> 
> Ouch!  My bad, probably.
> 
> First, what caused the crash?  I think it's BUFFERP, so please tell
> what is glyph->object.
> 

(gdb) whatis glyph->object
type = Lisp_Object
(gdb) p glyph->object
$4 = 8079492959817000301
(gdb) pp glyph->object
#<INVALID_LISP_OBJECT 0x7020200a3b29656d>

> Also, can you tell something about what were you doing at the moment
> of the crash?  It looks like you were typing in the minibuffer, is
> that correct?

It is correct, I did C-x b and typed an x in the minibuffer when the crash 
occurred.  The contents of the minibuffer is two lines.

> 
> Finally, what does the GDB command "pgrow" print?
> 

(gdb) pgrow
TEXT: 80 glyphs
   0    0: CHAR[S] pos=1 blev=0,btyp=UNDEF w=7 a+d=11+3 face=27 MB
   1    7: CHAR[w] pos=2 blev=0,btyp=UNDEF w=7 a+d=11+3 face=27 MB
   2   14: CHAR[i] pos=3 blev=0,btyp=UNDEF w=7 a+d=11+3 face=27 MB
   3   21: CHAR[t] pos=4 blev=0,btyp=UNDEF w=7 a+d=11+3 face=27 MB
   4   28: CHAR[c] pos=5 blev=0,btyp=UNDEF w=7 a+d=11+3 face=27 MB
   5   35: CHAR[h] pos=6 blev=0,btyp=UNDEF w=7 a+d=11+3 face=27 MB
   6   42: CHAR[ ] pos=7 blev=0,btyp=UNDEF w=7 a+d=11+3 face=27 MB
   7   49: CHAR[t] pos=8 blev=0,btyp=UNDEF w=7 a+d=11+3 face=27 MB
   8   56: CHAR[o] pos=9 blev=0,btyp=UNDEF w=7 a+d=11+3 face=27 MB
   9   63: CHAR[ ] pos=10 blev=0,btyp=UNDEF w=7 a+d=11+3 face=27 MB
  10   70: CHAR[b] pos=11 blev=0,btyp=UNDEF w=7 a+d=11+3 face=27 MB
  11   77: CHAR[u] pos=12 blev=0,btyp=UNDEF w=7 a+d=11+3 face=27 MB
  12   84: CHAR[f] pos=13 blev=0,btyp=UNDEF w=7 a+d=11+3 face=27 MB
  13   91: CHAR[f] pos=14 blev=0,btyp=UNDEF w=7 a+d=11+3 face=27 MB
  14   98: CHAR[e] pos=15 blev=0,btyp=UNDEF w=7 a+d=11+3 face=27 MB
  15  105: CHAR[r] pos=16 blev=0,btyp=UNDEF w=7 a+d=11+3 face=27 MB
  16  112: CHAR[ ] pos=17 blev=0,btyp=UNDEF w=7 a+d=11+3 face=27 MB
  17  119: CHAR[(] pos=18 blev=0,btyp=UNDEF w=7 a+d=11+3 face=27 MB
  18  126: CHAR[d] pos=19 blev=0,btyp=UNDEF w=7 a+d=11+3 face=27 MB
  19  133: CHAR[e] pos=20 blev=0,btyp=UNDEF w=7 a+d=11+3 face=27 MB
  20  140: CHAR[f] pos=21 blev=0,btyp=UNDEF w=7 a+d=11+3 face=27 MB
  21  147: CHAR[a] pos=22 blev=0,btyp=UNDEF w=7 a+d=11+3 face=27 MB
  22  154: CHAR[u] pos=23 blev=0,btyp=UNDEF w=7 a+d=11+3 face=27 MB
  23  161: CHAR[l] pos=24 blev=0,btyp=UNDEF w=7 a+d=11+3 face=27 MB
  24  168: CHAR[t] pos=25 blev=0,btyp=UNDEF w=7 a+d=11+3 face=27 MB
  25  175: CHAR[ ] pos=26 blev=0,btyp=UNDEF w=7 a+d=11+3 face=27 MB
  26  182: CHAR[x] pos=27 blev=0,btyp=UNDEF w=7 a+d=11+3 face=27 MB
  27  189: CHAR[s] pos=28 blev=0,btyp=UNDEF w=7 a+d=11+3 face=27 MB
  28  196: CHAR[e] pos=29 blev=0,btyp=UNDEF w=7 a+d=11+3 face=27 MB
  29  203: CHAR[t] pos=30 blev=0,btyp=UNDEF w=7 a+d=11+3 face=27 MB
  30  210: CHAR[t] pos=31 blev=0,btyp=UNDEF w=7 a+d=11+3 face=27 MB
  31  217: CHAR[i] pos=32 blev=0,btyp=UNDEF w=7 a+d=11+3 face=27 MB
  32  224: CHAR[n] pos=33 blev=0,btyp=UNDEF w=7 a+d=11+3 face=27 MB
  33  231: CHAR[g] pos=34 blev=0,btyp=UNDEF w=7 a+d=11+3 face=27 MB
  34  238: CHAR[s] pos=35 blev=0,btyp=UNDEF w=7 a+d=11+3 face=27 MB
  35  245: CHAR[.] pos=36 blev=0,btyp=UNDEF w=7 a+d=11+3 face=27 MB
  36  252: CHAR[h] pos=37 blev=0,btyp=UNDEF w=7 a+d=11+3 face=27 MB
  37  259: CHAR[)] pos=38 blev=0,btyp=UNDEF w=7 a+d=11+3 face=27 MB
  38  266: CHAR[:] pos=39 blev=0,btyp=UNDEF w=7 a+d=11+3 face=27 MB
  39  273: CHAR[ ] pos=40 blev=0,btyp=UNDEF w=7 a+d=11+3 face=27 MB
  40  280: CHAR[x] pos=41 blev=0,btyp=UNDEF w=7 a+d=11+3 MB
  41  287: CHAR[{] str=175f681[0] blev=0,btyp=UNDEF w=7 a+d=11+3 MB
  42  294: CHAR[s] str=175f681[1] blev=0,btyp=UNDEF w=7 a+d=11+3 MB
  43  301: CHAR[e] str=175f681[2] blev=0,btyp=UNDEF w=7 a+d=11+3 MB
  44  308: CHAR[t] str=175f681[3] blev=0,btyp=UNDEF w=7 a+d=11+3 MB
  45  315: CHAR[t] str=175f681[4] blev=0,btyp=UNDEF w=7 a+d=11+3 MB
  46  322: CHAR[i] str=175f681[5] blev=0,btyp=UNDEF w=7 a+d=11+3 MB
  47  329: CHAR[n] str=175f681[6] blev=0,btyp=UNDEF w=7 a+d=11+3 MB
  48  336: CHAR[g] str=175f681[7] blev=0,btyp=UNDEF w=7 a+d=11+3 MB
  49  343: CHAR[s] str=175f681[8] blev=0,btyp=UNDEF w=7 a+d=11+3 MB
  50  350: CHAR[.] str=175f681[9] blev=0,btyp=UNDEF w=7 a+d=11+3 MB
  51  357: CHAR[c] str=175f681[10] blev=0,btyp=UNDEF w=7 a+d=11+3 MB
  52  364: CHAR[,] str=175f681[11] blev=0,btyp=UNDEF w=7 a+d=11+3 MB
  53  371: CHAR[l] str=175f681[12] blev=0,btyp=UNDEF w=7 a+d=11+3 MB
  54  378: CHAR[w] str=175f681[13] blev=0,btyp=UNDEF w=7 a+d=11+3 MB
  55  385: CHAR[m] str=175f681[14] blev=0,btyp=UNDEF w=7 a+d=11+3 MB
  56  392: CHAR[e] str=175f681[15] blev=0,btyp=UNDEF w=7 a+d=11+3 MB
  57  399: CHAR[n] str=175f681[16] blev=0,btyp=UNDEF w=7 a+d=11+3 MB
  58  406: CHAR[u] str=175f681[17] blev=0,btyp=UNDEF w=7 a+d=11+3 MB
  59  413: CHAR[.] str=175f681[18] blev=0,btyp=UNDEF w=7 a+d=11+3 MB
  60  420: CHAR[c] str=175f681[19] blev=0,btyp=UNDEF w=7 a+d=11+3 MB
  61  427: CHAR[,] str=175f681[20] blev=0,btyp=UNDEF w=7 a+d=11+3 MB
  62  434: CHAR[l] str=175f681[21] blev=0,btyp=UNDEF w=7 a+d=11+3 MB
  63  441: CHAR[w] str=175f681[22] blev=0,btyp=UNDEF w=7 a+d=11+3 MB
  64  448: CHAR[m] str=175f681[23] blev=0,btyp=UNDEF w=7 a+d=11+3 MB
  65  455: CHAR[e] str=175f681[24] blev=0,btyp=UNDEF w=7 a+d=11+3 MB
  66  462: CHAR[n] str=175f681[25] blev=0,btyp=UNDEF w=7 a+d=11+3 MB
  67  469: CHAR[u] str=175f681[26] blev=0,btyp=UNDEF w=7 a+d=11+3 MB
  68  476: CHAR[P] str=175f681[27] blev=0,btyp=UNDEF w=7 a+d=11+3 MB
  69  483: CHAR[.] str=175f681[28] blev=0,btyp=UNDEF w=7 a+d=11+3 MB
  70  490: CHAR[h] str=175f681[29] blev=0,btyp=UNDEF w=7 a+d=11+3 MB
  71  497: CHAR[,] str=175f681[30] blev=0,btyp=UNDEF w=7 a+d=11+3 MB
  72  504: CHAR[f] str=175f681[31] blev=0,btyp=UNDEF w=7 a+d=11+3 MB
  73  511: CHAR[n] str=175f681[32] blev=0,btyp=UNDEF w=7 a+d=11+3 MB
  74  518: CHAR[s] str=175f681[33] blev=0,btyp=UNDEF w=7 a+d=11+3 MB
  75  525: CHAR[.] str=175f681[34] blev=0,btyp=UNDEF w=7 a+d=11+3 MB
  76  532: CHAR[c] str=175f681[35] blev=0,btyp=UNDEF w=7 a+d=11+3 MB
  77  539: CHAR[,] str=175f681[36] blev=0,btyp=UNDEF w=7 a+d=11+3 MB
  78  546: CHAR[t] str=175f681[37] blev=0,btyp=UNDEF w=7 a+d=11+3 MB
  79  553: CHAR[e] str=175f681[38] blev=0,btyp=UNDEF w=7 a+d=11+3 MB

> Oh, btw: is this an optimized or an unoptimized build?

Unoptimized.

> 
>> (gdb) p *glyph
>> $3 = {
>>    charpos = 7589819289523352181,
>>    object = 8079492959817000301,
>>    pixel_width = 26991,
>>    ascent = 29806,
>>    descent = 29285,
>>    voffset = 26463,
>>    type = 2,
>>    multibyte_p = 0,
>>    left_box_line_p = 0,
>>    right_box_line_p = 1,
>>    overlaps_vertically_p = 1,
>>    padding_p = 1,
>>    glyph_not_available_p = 0,
>>    avoid_cursor_p = 1,
>>    resolved_level = 16,
>>    bidi_type = 1,
> 
> Hmm?.. looks like a garbled glyph structure...

Indeed.

	Jan D.