This is really weird.. I added some printf's (see patch at end of
message) to see what interval_id's XEmacs sees, here is the output
just before the crash
Completed: 131
Looking up: 131 (0)
Removed: 7080192
Removed: 4377440
Allocated: 133
InList 133
Removed: 4377440
Allocated: 134
InList 134
Allocated: 135
InList 135
Removed: 4377440
Allocated: 136
InList 136
Completed: 134
Looking up: 134 (0)
Fatal error: assertion failed, file event-stream.c, line 1214, !NILP (rest)
XEmacs gets interval number 134 which it did allocate and put in the
list just before. So it SHOULD be ok.... Perhaps somehow
pending_timeout_list gets corrupted?
Index: event-stream.c
===================================================================
RCS file: /usr/CVSroot/XEmacs/xemacs-20/src/event-stream.c,v
retrieving revision 1.45
diff -u -u -r1.45 event-stream.c
--- event-stream.c 1998/06/13 04:28:43 1.45
+++ event-stream.c 1998/06/18 17:14:02
@@ -1168,6 +1168,7 @@
timeout->interval_id =
event_stream_add_timeout (timeout->next_signal_time);
pending_timeout_list = noseeum_cons (op, pending_timeout_list);
+ fprintf(stderr,"InList %i\n", timeout->interval_id);
}
return timeout->id;
}
@@ -1199,6 +1200,7 @@
GCPRO1 (op); /* just in case ... because it's removed from the list
for awhile. */
+ fprintf(stderr,"Looking up: %i (%i)\n", interval_id, async_p);
timeout_list = async_p ? &pending_async_timeout_list : &pending_timeout_list;
/* Find the timeout on the list of pending ones. */
Index: event-Xt.c
===================================================================
RCS file: /usr/CVSroot/XEmacs/xemacs-20/src/event-Xt.c,v
retrieving revision 1.40
diff -u -u -r1.40 event-Xt.c
--- event-Xt.c 1998/05/14 04:46:24 1.40
+++ event-Xt.c 1998/06/18 17:15:22
@@ -1677,6 +1677,7 @@
timeout->interval_id = XtAppAddTimeOut (Xt_app_con, milliseconds,
Xt_timeout_callback,
(XtPointer) timeout);
+ fprintf(stderr,"Allocated: %i\n",timeout->id);
return timeout->id;
}
@@ -1706,6 +1707,7 @@
*/
XtRemoveTimeOut (timeout->interval_id);
+ fprintf(stderr,"Removed: %i\n",timeout->interval_id);
Blocktype_free (the_Xt_timeout_blocktype, timeout);
}
@@ -1719,6 +1721,7 @@
/* timeout events have nil as channel */
emacs_event->timestamp = 0; /* #### wrong!! */
emacs_event->event.timeout.interval_id = timeout->id;
+ fprintf(stderr,"Completed: %i\n",timeout->id);
Blocktype_free (the_Xt_timeout_blocktype, timeout);
}