I think we should do what Ben says and try commenting out the call to
update_window_scrollbars. The alternative would be to do this before we go
into GC. We could do this by having a run_pre_gc_actions which does the
same as run_post_gc_actions and then does the update there. I don't see
anyway of surviving update_window_scrollbars actually inside GC.
andy
At 11:53 AM 1/20/2002 +0100, Adrian Aichner wrote:
>>>>> "Andy" == Andy Piper
<andyp(a)bea.com> writes:
Andy> At 04:11 PM 1/19/2002 +0100, Adrian Aichner wrote:
>> >>>>> "Andy" == Andy Piper <andyp(a)bea.com>
writes:
>>
Andy> At 07:31 AM 1/18/2002 -0800, David M. Karr wrote:
>> >> By "native", do you mean "non-cygwin"? I only
use the Cygwin
>> >> version. In any
>> >> case, I haven't set up to build either native or Cygwin
>> >> XEmacs on Windows.
>> >> That would be a good thing to do, but I doubt I could get
>> >> this done and tested
>> >> today. Failing that, it would be good if I knew when an
installable
>> >> release of
>>
>> >> this would be available.
>>
Andy> I'm back in the US and online once again. A binary release
Andy> should show up sometime this coming week.
>>
>> Great!
>>
>> Welcome back!
>>
>> I finally got around to submit some Call Stack and Variable
>> information for my recent XEmacs crashes of native W2K 21.4.6 XEmacs
>> including this patch to xemacs-winnt.
>>
>> All crashes are unrelated to my patch AFAICT.
>>
>> Didn't you already have a fix for earlier crahes related to failed
>> assertions for
>>
>> /* If you hit this, rewrite the offending API call to occur after GC,
>> using register_post_gc_action(). */
>> assert (!gc_in_progress);
>> in
>> mswindows_wnd_proc(HWND__ * 0x00100148, unsigned int 257, unsigned
>> int 81, long -1072693247) line 2075 + 41 bytes
Andy> If you see these you need to figure out what is causing events
to be
Andy> processed while GC'ing.
Right, got another one of this and am already in the debugger -- what
would you say is the offending API or how would I find out?
Would it possibly be update_window_scrollbars?
Actually, mark_redisplay () has a comment by Ben which might be worth
worrying about:
void
mark_redisplay (void)
{
Lisp_Object frmcons, devcons, concons;
FRAME_LOOP_NO_BREAK (frmcons, devcons, concons)
{
struct frame *f = XFRAME (XCAR (frmcons));
/* #### urk! this does tons o' crap, such as creating lots of
structs, doing window system actions, etc. we DO NOT want to
be doing this -- marking should never change any state.
i think we can just delete this. --ben */
update_frame_window_mirror (f);
mark_window_mirror (f->root_mirror);
mark_gutters (f);
}
}
What to do?
Excerpt from complete Call Stack below:
> update_window_scrollbars(window * 0x08925cc0, window_mirror *
0x022ae898, int 0, int 0) line 294 + 46 bytes
> update_mirror_internal(long 143809728, window_mirror * 0x022ae898) line
390 + 26 bytes
> update_frame_window_mirror(frame * 0x022ecdc8) line 462 + 22 bytes
> mark_redisplay() line 7107 + 9 bytes
> garbage_collect_1() line 3483
Here's the complete
Call Stack:
NTDLL! 77fa018c()
mswindows_wnd_proc(HWND__ * 0x001d0396, unsigned int 132, unsigned int 0,
long 21693196) line 2080 + 41 bytes
USER32! 77e12e98()
USER32! 77e139a3()
USER32! 77e1395f()
NTDLL! 77fa032f()
USER32! 77e1569d()
mswindows_drain_windows_queue() line 1286 + 18 bytes
emacs_mswindows_quit_p() line 3553
event_stream_quit_p() line 597
check_quit() line 514
unbind_to_hairy(int 35) line 4967
unbind_to(int 35, long 20613800) line 4952 + 174 bytes
dfc_convert_to_external_format(int 0, dfc_conversion_data * 0x0082b890,
long 21742968, int 0, dfc_conversion_data * 0x0082b89c) line 1948 + 16 bytes
std_handle_out_va(_iobuf * 0x10261868, const char * 0x012daea4, char *
0x0082d8e0) line 188 + 99 bytes
stderr_out(const char * 0x012daea4) line 211 + 55 bytes
assert_failed(const char * 0x011cd5dc, int 2080, const char * 0x011cd5cc)
line 3309 + 22 bytes
mswindows_wnd_proc(HWND__ * 0x001d0396, unsigned int 20, unsigned int
973147397, long 0) line 2080 + 41 bytes
USER32! 77e12e98()
USER32! 77e139a3()
USER32! 77e1395f()
NTDLL! 77fa032f()
update_window_scrollbars(window * 0x08925cc0, window_mirror * 0x022ae898,
int 0, int 0) line 294 + 46 bytes
update_mirror_internal(long 143809728, window_mirror * 0x022ae898) line
390 + 26 bytes
update_frame_window_mirror(frame * 0x022ecdc8) line 462 + 22 bytes
mark_redisplay() line 7107 + 9 bytes
garbage_collect_1() line 3483
Ffuncall(int 2, long * 0x0082e4fc) line 3479
execute_optimized_program(const unsigned char * 0x013f6078, int 4, long *
0x0149ae60) line 746 + 16 bytes
funcall_compiled_function(long 21739132, int 3, long * 0x0082e7d8) line
518 + 53 bytes
Ffuncall(int 4, long * 0x0082e7d4) line 3563 + 17 bytes
execute_optimized_program(const unsigned char * 0x013f60d0, int 5, long *
0x0149aea0) line 746 + 16 bytes
funcall_compiled_function(long 21739160, int 3, long * 0x0082eab4) line
518 + 53 bytes
Ffuncall(int 4, long * 0x0082eab0) line 3563 + 17 bytes
execute_optimized_program(const unsigned char * 0x013f6108, int 5, long *
0x0149aed4) line 746 + 16 bytes
funcall_compiled_function(long 21739188, int 3, long * 0x0082ed90) line
518 + 53 bytes
Ffuncall(int 4, long * 0x0082ed8c) line 3563 + 17 bytes
execute_optimized_program(const unsigned char * 0x013f6168, int 5, long *
0x0149af14) line 746 + 16 bytes
funcall_compiled_function(long 21739216, int 2, long * 0x0082f074) line
518 + 53 bytes
Ffuncall(int 3, long * 0x0082f070) line 3563 + 17 bytes
execute_optimized_program(const unsigned char * 0x013f61c0, int 8, long *
0x0149af6c) line 746 + 16 bytes
funcall_compiled_function(long 21739272, int 5, long * 0x0082f354) line
518 + 53 bytes
Ffuncall(int 6, long * 0x0082f350) line 3563 + 17 bytes
execute_optimized_program(const unsigned char * 0x013f6230, int 6, long *
0x0149afc4) line 746 + 16 bytes
funcall_compiled_function(long 21739300, int 6, long * 0x0082f634) line
518 + 53 bytes
Ffuncall(int 7, long * 0x0082f630) line 3563 + 17 bytes
execute_optimized_program(const unsigned char * 0x013f6278, int 7, long *
0x0149b008) line 746 + 16 bytes
funcall_compiled_function(long 21739328, int 3, long * 0x0082f918) line
518 + 53 bytes
Ffuncall(int 4, long * 0x0082f914) line 3563 + 17 bytes
execute_optimized_program(const unsigned char * 0x0289ad18, int 15, long *
0x014905d8) line 746 + 16 bytes
funcall_compiled_function(long 21723088, int 1, long * 0x0082fc88) line
518 + 53 bytes
Ffuncall(int 2, long * 0x0082fc84) line 3563 + 17 bytes
run_hook_with_args_in_buffer(buffer * 0x00e6ad80, int 2, long *
0x0082fc84, int 0) line 4020 + 13 bytes
run_hook_with_args(int 2, long * 0x0082fc84, int 0) line 4033 + 23 bytes
va_run_hook_with_args(long 20536976, int 1) line 4104 + 18 bytes
redisplay_frame(frame * 0x022ecdc8, int 0) line 6299 + 17 bytes
redisplay_device(device * 0x0225cdc8, int 1) line 6476 + 11 bytes
redisplay_without_hooks() line 6563 + 11 bytes
redisplay() line 6626
Fnext_event(long 51194052, long 20613800) line 2179
Fcommand_loop_1() line 574 + 16 bytes
command_loop_1(long 20613800) line 495
condition_case_1(long 20613440, long (long)* 0x01051d06
command_loop_1(long), long 20613800, long (long, long)* 0x01051720
cmd_error(long, long), long 20613800) line 1651 + 7 bytes
command_loop_3() line 256 + 35 bytes
command_loop_2(long 20613800) line 269
internal_catch(long 20441216, long (long)* 0x01051870
command_loop_2(long), long 20613800, int * volatile 0x00000000) line 1317
+ 7 bytes
initial_command_loop(long 20613800) line 305 + 25 bytes
STACK_TRACE_EYE_CATCHER(int 1, char * * 0x00e62e68, char * * 0x00e62f50,
int 0) line 2355
main(int 1, char * * 0x00e62e68, char * * 0x00e62f50) line 2723
mainCRTStartup() line 338 + 17 bytes
KERNEL32! 77e97d08()
>> and/or
>> /* This will assert if handle being waited for becomes abandoned.
>> Not the case currently tho */
>> assert ((!badly_p && active == WAIT_TIMEOUT) ||
>> (active >= WAIT_OBJECT_0 &&
>> active <= WAIT_OBJECT_0 + mswindows_waitable_count));
>> in
>> mswindows_need_event(int 0) line 1519 + 52 bytes
Andy> No, this has been around for ages, but the binary dist does not
have
Andy> debug on so it ends up being harmless. However, if we could
actually
Andy> fix it that would be great.
Andy> andy
--
Adrian Aichner
mailto:adrianï¼ xemacs.org
http://www.xemacs.org/