Andy Piper wrote:
 It seems likely that your changes have tickled something, since we do
 not see these on 21.4.x at all. I'm wondering whether the removal of 
 the window_mirror updates in mark_redisplay could be responsible.  
possible, but it seems unlikely -- and if so, i've merely exposed an 
existing bug; that code was clearly wrong and was causing other 
crashes.  i've seen periodic redisplay crashes for a long time, 
certainly going back to 21.4 and before, some of which i fixed, but 
others have been too random to diagnose.  and i know there's lots of 
problems with redisplay -- ms windows, gutters, etc. have stretched 
redisplay far beyond its initial design.  for example, the gutter code 
introduced calling lisp inside of redisplay -- something which it 
definitely was not designed for.  it was patched around [note this:
  /* This can call lisp, but redisplay is protected by binding
     inhibit_quit.  More importantly the code involving display lines
     *assumes* that GC will not happen and so does not GCPRO
     anything. Since we use this code the whole time with the gutters
     we cannot allow GC to happen when manipulating the gutters. */
  update_frame_gutters (f);
]
but this introduces tons of ways to shoot oneself unintentionally, since 
we don't protect against modifying the window structures -- which could 
happen e.g. if events get processed inside of redisplay.  lots of weird 
code runs off of hooks, which might be getting triggered by lisp called 
from the gutter code.
ben
 andy
 At 01:59 AM 3/21/02 -0700, Ben Wing wrote:
> _free_dbg_lk(void * 0xdddddddd, int 1) line 1044 + 48 bytes
> _free_dbg(void * 0xdddddddd, int 1) line 1001 + 13 bytes
> free(void * 0xdddddddd) line 956 + 11 bytes
> xfree_1(void * 0xdddddddd) line 294 + 10 bytes
> Dynarr_free(void * 0x026ac340) line 221 + 17 bytes
> free_display_line(display_line * 0x02708790) line 6982 + 12 bytes
> free_display_lines(display_line_dynarr * 0x025f1428) line 7010 + 19 
> bytes
> free_display_structs(window_mirror * 0x027d3d08) line 7029 + 12 bytes
> free_window_mirror(window_mirror * 0x027d3d08) line 506 + 9 bytes
> delete_frame_internal(frame * 0x0264a1e8, int 1, int 0, int 0) line 
> 1581 + 34 bytes
> Fdelete_frame(long 40149480, long 21675144) line 1711 + 28 bytes
> Feval(long 36548800) line 3281 + 141 bytes
> Ffuncall(int 2, long * 0x0082fcbc) line 3479 + 66 bytes
> call1(long 21673680, long 36548800) line 4134 + 11 bytes
> execute_command_event(command_builder * 0x017e3f08, long 41671964) 
> line 4075 + 57 bytes
> Fdispatch_event(long 41671964) line 4414 + 13 bytes
> Fcommand_loop_1() line 584 + 9 bytes
> command_loop_1(long 21676296) line 497
> condition_case_1(long 21671688, long (long)* 0x01079289 
> command_loop_1(long), long 21676296, long (long, long)* 0x01078bdc 
> cmd_error(long, long), long 21676296) line 1692 + 7 bytes
> command_loop_3() line 258 + 35 bytes
> command_loop_2(long 21676296) line 271
> internal_catch(long 21449544, long (long)* 0x01078d2c 
> command_loop_2(long), long 21676296, int * volatile 0x00000000) line 
> 1317 + 7 bytes
> initial_command_loop(long 21676296) line 307 + 25 bytes
> STACK_TRACE_EYE_CATCHER(int 1, char * * 0x00e52610, char * * 
> 0x00e52b00, int 0) line 2305
> main(int 1, char * * 0x00e52610, char * * 0x00e52b00) line 2681
> mainCRTStartup() line 338 + 17 bytes
> KERNEL32! 77e8d326()
>