Subject: bug#22975: 25.0.92; CANNOT_DUMP build can't start in tty mode

From: Eli Zaretskii <[email-masked]>
Date: Mon, 14 Mar 2016 19:41:16 +0200

> From: Ken Raeburn <[email-masked]>
> Date: Mon, 14 Mar 2016 03:17:07 -0400
> Cc: Andreas Schwab <[email-masked]>,
>  [email-masked]
> 
> > It sounds like your terminal emulator is trying its own reordering of
> > bidi text.  Can you find some setting to disable that?
> 
> I can’t find an option to change it in the Mac terminal emulator.  I hope the attached image doesn’t make for headaches in the bug tracker….

Thanks.  It does indeed reorder on its own (and doesn't do a very good
job at that).  So this is unrelated.

> If I start a standard X.org xterm from the remote system and run emacs -nw in that window, the Hebrew line looks like it does on the X11 display; Arabic seems to be missing font support.

Right.

> > Please show a full C backtrace from each one of the calls to Fsignal,
> > so we could see what code calls these functions.
> 
> #0  Fsignal (error_symbol=error_symbol@entry=49392, data=12582931)
>     at ../../src/eval.c:1464
> #1  0x0000000000552fd9 in xsignal (error_symbol=error_symbol@entry=49392, 
>     data=<optimized out>) at ../../src/eval.c:1577
> #2  0x0000000000553007 in xsignal1 (error_symbol=49392, arg=<optimized out>)
>     at ../../src/eval.c:1592
> #3  0x0000000000552612 in Ffuncall (nargs=49392, nargs@entry=4, args=0x0)
>     at ../../src/eval.c:2746
> #4  0x0000000000554204 in call3 (fn=fn@entry=50592, arg1=arg1@entry=12481485, 
>     arg2=<optimized out>, arg3=<optimized out>) at ../../src/eval.c:2568
> #5  0x0000000000472717 in grow_mini_window (w=0xbe75b0, delta=<optimized out>, 
>     pixelwise=<optimized out>) at ../../src/window.c:4501
> #6  0x000000000044bd32 in resize_mini_window (w=w@entry=0xbe75b0, 
>     exact_p=exact_p@entry=false) at ../../src/xdisp.c:10985
> #7  0x000000000044bd8e in display_echo_area_1 (a1=12481968, a2=<optimized out>)
>     at ../../src/xdisp.c:10831
> #8  0x000000000042b8f6 in with_echo_area_buffer (w=w@entry=0xbe75b0, 
>     which=which@entry=0, fn=fn@entry=0x44bd50 <display_echo_area_1>, 
>     a1=a1@entry=12481968, a2=a2@entry=0) at ../../src/xdisp.c:10609
> #9  0x000000000044f46b in display_echo_area (w=0xbe75b0)
>     at ../../src/xdisp.c:10797
> #10 echo_area_display (update_frame_p=update_frame_p@entry=true)
>     at ../../src/xdisp.c:11298
> #11 0x000000000044f76a in message3_nolog (m=m@entry=12803636)
>     at ../../src/xdisp.c:10311
> #12 0x000000000044f8b1 in message3 (m=m@entry=12803636)
>     at ../../src/xdisp.c:10240
> #13 0x000000000054c31c in Fmessage (nargs=<optimized out>, args=<optimized out>)
>     at ../../src/editfns.c:3686

OK, this is the message call.  Please see if the patch below solves
this.

The other two errors come from the command loop, they are caused by
the fact that calling message signaled an error, and that interrupted
the rest of loadup.el loading.  So Emacs now enters the command loop
with most of its support code absent.

If the patch below solves the error in calling message, it should also
prevent these other 2 errors.

diff --git a/lisp/loadup.el b/lisp/loadup.el
index bd47bed..21c64a8 100644
--- a/lisp/loadup.el
+++ b/lisp/loadup.el
@@ -117,6 +117,10 @@
 (load "format")
 (load "bindings")
 (load "window")  ; Needed here for `replace-buffer-in-windows'.
+;; We are now capable of resizing the mini-windows, so give the
+;; variable its advertised default value (it starts as nil, see
+;; xdisp.c).
+(setq resize-mini-windows 'grow-only)
 (setq load-source-file-function 'load-with-code-conversion)
 (load "files")
 
diff --git a/src/xdisp.c b/src/xdisp.c
index ce992d4..edefe32 100644
--- a/src/xdisp.c
+++ b/src/xdisp.c
@@ -31598,7 +31598,12 @@ A value of t means resize them to fit the text displayed in them.
 A value of `grow-only', the default, means let mini-windows grow only;
 they return to their normal size when the minibuffer is closed, or the
 echo area becomes empty.  */);
-  Vresize_mini_windows = Qgrow_only;
+  /* Contrary to the doc string, we initialize this to nil, so that
+     loading loadup.el won't try to resize windows before loading
+     window.el, where some functions we need to call for this live.
+     We assign the 'grow-only' value right after loading window.el
+     during loadup.  */
+  Vresize_mini_windows = Qnil;
 
   DEFVAR_LISP ("blink-cursor-alist", Vblink_cursor_alist,
     doc: /* Alist specifying how to blink the cursor off.