Broken `height' value of 26 gets there through `XtConfigureWidget'
call inside `x_layout_widgets', which call is really caused by
`sit-for' with some arbitrary timeout value (so race conditions are
likely). The backtrace follows.
Just after `change_frame_size' call in `EmacsFrameResize' was added
the following:
{
int ph;
char_to_pixel_size (f, f->width, f->height, NULL, &ph);
assert (f->pixheight >= ph || f->size_slipped);
}
so that xemacs does not try to set inconsistent frame measurements
unless `f->size_slipped' ensures that the next `redisplay_frame' will
fix them.
Is `x_layout_widgets' really supposed to leave frame measurements
inconsistent without scheduling to fix them on redisplay?
#1 0x082315ac in EmacsFrameResize (widget=0x8967c10)
at src/EmacsFrame.c:391
#2 0x401339ec in ResizeWrapper () from /usr/X11R6/lib/libXm.so.2
#3 0x401337d8 in ResizeWrapper4 () from /usr/X11R6/lib/libXm.so.2
#4 0x4029e57c in XtConfigureWidget () from /usr/X11R6/lib/libXt.so.6
#5 0x0820b5a8 in x_layout_widgets (w=0x8cc4f50, client_data=0x8e8b2c8,
call_data=0xbfffe124)
at src/frame-x.c:1814
#6 0x4028f716 in XtCallCallbackList () from /usr/X11R6/lib/libXt.so.6
#7 0x08232759 in Resize (w=0x8cc4f50)
at src/EmacsManager.c:176
#8 0x401339ec in ResizeWrapper () from /usr/X11R6/lib/libXm.so.2
#9 0x40133800 in ResizeWrapper6 () from /usr/X11R6/lib/libXm.so.2
#10 0x4029e57c in XtConfigureWidget () from /usr/X11R6/lib/libXt.so.6
#11 0x4009ab81 in XmeConfigureObject () from /usr/X11R6/lib/libXm.so.2
#12 0x40142d1d in Resize () from /usr/X11R6/lib/libXm.so.2
#13 0x401339ec in ResizeWrapper () from /usr/X11R6/lib/libXm.so.2
#14 0x40133828 in ResizeWrapper8 () from /usr/X11R6/lib/libXm.so.2
#15 0x40140d58 in StructureNotifyHandler () from /usr/X11R6/lib/libXm.so.2
#16 0x4029ad68 in XtDispatchEventToWidget () from /usr/X11R6/lib/libXt.so.6
#17 0x4029b730 in _XtOnGrabList () from /usr/X11R6/lib/libXt.so.6
#18 0x4029baa7 in XtDispatchEvent () from /usr/X11R6/lib/libXt.so.6
#19 0x402a692e in XtAppProcessEvent () from /usr/X11R6/lib/libXt.so.6
#20 0x082067c4 in drain_X_queue ()
at src/event-Xt.c:2985
#21 0x08206929 in emacs_Xt_event_pending_p (user_p=1)
at src/event-Xt.c:3110
#22 0x0811ed01 in Fsit_for (seconds=139618876, nodisplay=1081545268)
at src/event-stream.c:438
# (unwind-protect ...)
sit-for(0.1)
# bind (count window-min-height ctl-frame-iconified-p dont-iconify-ctl-frame
deiconify-ctl-frame ctl-frame old-ctl-frame lines fheight fwidth adjusted-parameters
designated-minibuffer-frame ctl-buffer)
ediff-setup-control-frame(#<buffer "*Ediff Control Panel*"> #<x-frame
"emacs" 0x82b>)
# bind (done-C done-B done-A designated-minibuffer-frame wind-B-start wind-A-start
use-same-frame orig-wind three-way-comparison split-window-function force-one-frame
ctl-frame-exists-p frame-C frame-B frame-A wind-C wind-B wind-A window-min-height
control-buf buf-C buf-B buf-A)
ediff-setup-windows-multiframe-compare(#<buffer "scratch-db">
#<buffer ".gdbinit"> nil #<buffer "*Ediff Control
Panel*">)
# bind (control-buf buf-C buf-B buf-A)
ediff-setup-windows-multiframe(#<buffer "scratch-db"> #<buffer
".gdbinit"> nil #<buffer "*Ediff Control Panel*">)
# bind (control-buffer buffer-C buffer-B buffer-A)
ediff-setup-windows(#<buffer "scratch-db"> #<buffer
".gdbinit"> nil #<buffer "*Ediff Control Panel*">)
# (unwind-protect ...)
# bind (control-buffer control-buffer-name merge-buffer-file setup-parameters
startup-hooks file-C buffer-C file-B buffer-B file-A buffer-A)
ediff-setup(#<buffer "scratch-db"> "/tmp/gin/scratch-db1VA7vn"
#<buffer ".gdbinit"> "/tmp/gin/.gdbinit1VAI6t" nil nil ((lambda
nil (delete-file "/tmp/gin/scratch-db1VA7vn") (delete-file
"/tmp/gin/.gdbinit1VAI6t") (if ... ...))) ((ediff-job-name . ediff-buffers))
nil)
# bind (file-C file-B file-A buf-C-file-name buf-C-is-alive buf-B-file-name
buf-A-file-name merge-buffer-file job-name startup-hooks buf-C buf-B buf-A)
ediff-buffers-internal("scratch-db" ".gdbinit" nil nil
ediff-buffers)
# bind (job-name startup-hooks buffer-B buffer-A)
#<compiled-function (buffer-A buffer-B &optional startup-hooks job-name)
"...(13)" [startup-hooks buffer-B buffer-A job-name ediff-buffers
ediff-buffers-internal nil] 6
("/home/gin/xemacs-21.4-l/xemacs-packages/lisp/ediff/ediff.elc" . 5607) (let
(bf) (list ... ...))>("scratch-db" ".gdbinit")
call-interactively(ediff-buffers)
command-execute(ediff-buffers t)
# bind (_execute_command_keys_ _execute_command_name_ prefix-arg)
execute-extended-command(nil)
# bind (command-debug-status)
call-interactively(execute-extended-command)
# (condition-case ... . error)
# (catch top-level ...)