Some time ago, Greg Klanderman wrote...
|+
|
| I applied it and the assert fail went away. So I un-applied it and it
| is still gone. BTW, is this patch correct in the case that an error
| occurs? The XSETFRAME will have taken place, whereas previously it
| hadn't?
Yes it is. XSETFRAME is just an assignment with a cast, plus some extra
error checking in debug build. GC protect stack is unwound on signal.
I have been able to get 100% crashes by adding (garbage-collect) to
make-initial-minibuffer-frame, which is called to create that
floating nimibuffer frame.
Another topic is that this frame should not be created at all...
| Anyway, is anyone else seeing the incorrect minibuffer-only frame
| creation the second time ediff-buffers is run after xemacs -q?
I do on Solaris. Here's a lisp code I used for testing:
(while t
(let ((gc-cons-threshold 1)
f)
(condition-case nil
(progn
(setq f (make-frame '(minibuffer nil)))
(sleep-for 0.5)
(delete-frame f)
(sleep-for 0.5))
(error nil))))
This when run stably caused crashes without my patch, and does not with it.
Although, crash happens not on the first iteration, the range is 2 to 6.
With my patch, after this runs for some time, there are dozens of minibuffer
only frames. delete-frame signals spurious errors that it cannot delete a
frame whose minibuffer is used in another frame.
When I run this in 20.3, no abandoned minibuffers are floating around.
There is no crash, but the setting (gc-cons-threshold 1) does not
work when DEBUG_XEMACS is undefined: it is adjusted to be no less than
15000 or something.
Also, with 21.0, there is the same symptom as Martin seen, lots of these
messages. They are so numerous so only C-\ works in xterm, no luck
with C-g or C-c. This happens spontaneously, and sleep-for calls in
the above code are helping a bit against this flood (but again not
in 100% cases).
This happens both with my patch and without it.
xemacs: X Error of failed request: BadWindow (invalid Window parameter)
Major opcode of failed request: 61 (X_ClearArea)
Resource id in failed request: 0x0
Serial number of failed request: 3046
Current serial number in output stream: 15281
xemacs: X Error of failed request: BadDrawable (invalid Pixmap or Window parameter)
Major opcode of failed request: 70 (X_PolyFillRectangle)
Resource id in failed request: 0x0
Serial number of failed request: 3047
Current serial number in output stream: 15281
Kirill