emacs-pretest-bug
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: SIGSEGV -- redisplay bug


From: Alex Schroeder
Subject: Re: SIGSEGV -- redisplay bug
Date: Fri, 31 Jan 2003 15:59:57 +0100
User-agent: Gnus/5.090015 (Oort Gnus v0.15) Emacs/21.2.92 (i686-pc-linux-gnu)

Richard Stallman <address@hidden> writes:

>   /* Increment positions in glyphs.  */
>   for (area = 0; area < LAST_AREA; ++area)
>     for (i = 0; i < row->used[area]; ++i)
>       if (BUFFERP (row->glyphs[area][i].object)
>         && row->glyphs[area][i].charpos > 0)
>       row->glyphs[area][i].charpos += delta;
>
>     (gdb) p area
>     $1 = 4159280
>
> I don't see how anything here could enable area to get bigger than 2,
> unless area is stored in the stack and some absurd pointers or indices
> make row->glyphs[area][i].charpos alias with that stack slot.
>
> But such aliasing should be impossible as long as AREA and I are
> reasonable.  The glyphs are in the heap, nowhere near the stack.
>
> Could you look at the values of row->used[0], row->used[1]
> and row->used[2]?

It happened again.

Program received signal SIGSEGV, Segmentation fault.
0x080506fd in increment_row_positions (row=0x92adc24, delta=1, delta_bytes=1) 
at dispnew.c:1188
1188          if (BUFFERP (row->glyphs[area][i].object)
(gdb) bt
#0  0x080506fd in increment_row_positions (row=0x92adc24, delta=1, 
delta_bytes=1) at dispnew.c:1188
#1  0x0804ff36 in increment_matrix_positions (matrix=0x8513208, start=29, 
end=58, delta=1, delta_bytes=1) at dispnew.c:927
#2  0x08067401 in redisplay_internal (preserve_echo_area=0) at xdisp.c:8712
#3  0x080666e8 in redisplay () at xdisp.c:8284
#4  0x080d5c75 in read_char (commandflag=1, nmaps=4, maps=0xbffff5a4, 
prev_event=405241980, used_mouse_menu=0xbffff5ec) at keyboard.c:2281
#5  0x080dc6d3 in read_key_sequence (keybuf=0xbffff6f4, bufsize=30, 
prompt=405241980, dont_downcase_last=0, can_return_switch_frame=1, 
fix_current_buffer=1)
    at keyboard.c:8191
#6  0x080d4844 in command_loop_1 () at keyboard.c:1440
#7  0x08125749 in internal_condition_case (bfun=0x80d4550 <command_loop_1>, 
handlers=405338372, hfun=0x80d4194 <cmd_error>) at eval.c:1267
#8  0x080d4428 in command_loop_2 () at keyboard.c:1245
#9  0x081252dd in internal_catch (tag=405299700, func=0x80d4404 
<command_loop_2>, arg=405241980) at eval.c:1030
#10 0x080d43d7 in command_loop () at keyboard.c:1224
#11 0x080d3f51 in recursive_edit_1 () at keyboard.c:950
#12 0x080d4080 in Frecursive_edit () at keyboard.c:1006
#13 0x080d2faf in main (argc=1, argv=0xbffffcb4, envp=0xbffffcbc) at 
emacs.c:1547
(gdb) l
1183      MATRIX_ROW_END_BYTEPOS (row) += delta_bytes;
1184
1185      /* Increment positions in glyphs.  */
1186      for (area = 0; area < LAST_AREA; ++area)
1187        for (i = 0; i < row->used[area]; ++i)
1188          if (BUFFERP (row->glyphs[area][i].object)
1189              && row->glyphs[area][i].charpos > 0)
1190            row->glyphs[area][i].charpos += delta;
1191
1192      /* Capture the case of rows displaying a line end.  */
(gdb) p area
$1 = 4011656
(gdb) p i
$2 = 101
(gdb) p row  
$3 = (struct glyph_row *) 0x92adc24
(gdb) p row->used
$4 = {0, 159, 0}

Alex.




reply via email to

[Prev in Thread] Current Thread [Next in Thread]