>>>> "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.
> 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.
I think the assert needs to take into account that
MsgWaitForMultipleObjects may fail, in which case active will be -1.
All my crashes here in fact are of this nature.
Instead of adding (active == -1) to the assert expression, how about this:
Index: event-msw.c
===================================================================
RCS file: /pack/xemacscvs/XEmacs/xemacs/src/event-msw.c,v
retrieving revision 1.47.2.4.2.4
diff -u -u -r1.47.2.4.2.4 event-msw.c
--- event-msw.c 2001/11/24 23:14:52 1.47.2.4.2.4
+++ event-msw.c 2002/01/20 17:24:36
@@ -1512,11 +1512,16 @@
FALSE, badly_p ? INFINITE : 0,
what_events);
- /* 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));
+ if (active == -1) {
+ mswindows_output_last_error ("MsgWaitForMultipleObjects");
+ }
+ else {
+ /* 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));
+ }
if (active == WAIT_TIMEOUT)
{
Andy> andy
--
Adrian Aichner
mailto:adrian@xemacs.org
http://www.xemacs.org/