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

From: [email-masked] (GNU bug Tracking System)
Date: Tue, 15 Mar 2016 17:50:02 +0000

Your bug report

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

which was filed against the emacs package, has been closed.

The explanation is attached below, along with your original report.
If you require more details, please reply to [email-masked].

-- 
22975: http://debbugs.gnu.org/cgi/bugreport.cgi?bug=22975
GNU Bug Tracking System
Contact [email-masked] with problems

Subject: Re: bug#22975: 25.0.92; CANNOT_DUMP build can't start in tty mode
From: Eli Zaretskii <[email-masked]>
To: Ken Raeburn <[email-masked]>
Cc: [email-masked]
Date: Tue, 15 Mar 2016 19:48:30 +0200
List-Id: <debbugs-submit.debbugs.gnu.org>

> From: Ken Raeburn <[email-masked]>
> Date: Mon, 14 Mar 2016 23:33:33 -0400
> Cc: [email-masked],
>  [email-masked]
> 
> On Mar 14, 2016, at 13:41, Eli Zaretskii <[email-masked]> wrote:
> > 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.
> 
> Yes, with that patch the emacs-25 branch starts up fine — X11 mode and tty mode (including in a way-too-narrow window), normal and CANNOT_DUMP.

Thanks, pushed.

Subject: 25.0.92; CANNOT_DUMP build can't start in tty mode
From: Ken Raeburn <[email-masked]>
To: Bug-Gnu-Emacs <[email-masked]>
Date: Thu, 10 Mar 2016 00:41:50 -0500
List-Id: <debbugs-submit.debbugs.gnu.org>

I’d mentioned this before but just want to make sure it doesn’t fall off the radar…
I’d previously assumed this wasn’t an important use case at the moment, but the “nacl” configuration sets CANNOT_DUMP mode, and on any platform where address sanitization is detected, the configure script will emit a warning message recommending CANNOT_DUMP mode, so I’m not so sure.

$ ../configure --prefix=`pwd`/Inst --enable-checking CANNOT_DUMP=yes --with-x-toolkit=lucid
$ make -j6 all && make install
$ ./Inst/bin/emacs
 … works okay on X11; “loading” messages are displayed on stdout before frame is created
$ ./Inst/bin/emacs -nw 
Fatal error 6: Aborted
Backtrace:
./Inst/bin/emacs[0x5437a2]
./Inst/bin/emacs[0x525874]
./Inst/bin/emacs[0x543833]
[…]

(I rechecked with “-Q -nw” and got the same results.)

GDB says:

#0  terminate_due_to_signal (sig=sig@entry=6, backtrace_limit=backtrace_limit@entry=40) at ../../src/emacs.c:352
No locals.
#1  0x0000000000543833 in emacs_abort () at ../../src/sysdep.c:2247
No locals.
#2  0x00000000004d86da in bidi_initialize () at ../../src/bidi.c:1097
No locals.
#3  0x00000000004dcddf in bidi_init_it (charpos=charpos@entry=1, bytepos=1, frame_window_p=<optimized out>, bidi_it=bidi_it@entry=0x7fffffffd840) at ../../src/bidi.c:1145
No locals.
#4  0x000000000044a906 in init_iterator (it=0x7fffffffcea0, w=0xcfe5b0, charpos=1, bytepos=<optimized out>, row=<optimized out>, base_face_id=DEFAULT_FACE_ID) at ../../src/xdisp.c:2981
        remapped_base_face_id = DEFAULT_FACE_ID
#5  0x00000000004609f7 in resize_mini_window (w=0xcfe5b0, exact_p=<optimized out>) at ../../src/xdisp.c:10937
        total_height = 23
        unit = 1
        max_height = <optimized out>
        old_current_buffer = 0x0
        it = {
          window = 13624757, 
          w = 0xcfe5b0, 
          f = 0xcfe1c0, 
          method = GET_FROM_BUFFER, 
          stop_charpos = 1, 
          prev_stop = 0, 
          base_level_stop = 0, 
          end_charpos = 76, 
          s = 0x0, 
          string_nchars = 0, 
          redisplay_end_trigger_charpos = 0, 
          multibyte_p = true, 
          header_line_p = false, 
          string_from_display_prop_p = false, 
          string_from_prefix_prop_p = false, 
          from_disp_prop_p = false, 
          ellipsis_p = false, 
          avoid_cursor_p = false, 
          dp = 0x0, 
          dpvec = 0x0, 
          dpend = 0x0, 
          dpvec_char_len = 0, 
          dpvec_face_id = 0, 
          saved_face_id = 0, 
          ctl_chars = {0 <repeats 16 times>}, 
          start = {
            pos = {
              charpos = 1, 
              bytepos = 1
            }, 
            overlay_string_index = -1, 
            string_pos = {
              charpos = -1, 
              bytepos = -1
            }, 
            dpvec_index = -1
          }, 
          current = {
            pos = {
              charpos = 1, 
              bytepos = 1
            }, 
            overlay_string_index = -1, 
            string_pos = {
              charpos = -1, 
              bytepos = -1
            }, 
            dpvec_index = -1
          }, 
          n_overlay_strings = 0, 
          overlay_strings_charpos = 0, 
          overlay_strings = {0 <repeats 16 times>}, 
          string_overlays = {0 <repeats 16 times>}, 
          string = 0, 
          from_overlay = 0, 
          stack = {{
              string = 0, 
              string_nchars = 0, 
              end_charpos = 0, 
              stop_charpos = 0, 
              prev_stop = 0, 
              base_level_stop = 0, 
              cmp_it = {
                stop_pos = 0, 
                id = 0, 
                ch = 0, 
                rule_idx = 0, 
                lookback = 0, 
                nglyphs = 0, 
                reversed_p = false, 
                charpos = 0, 
                nchars = 0, 
                nbytes = 0, 
                from = 0, 
                to = 0, 
                width = 0
              }, 
              face_id = 0, 
              u = {
                image = {
                  object = 0, 
                  slice = {
                    x = 0, 
                    y = 0, 
                    width = 0, 
                    height = 0
                  }, 
                  image_id = 0
                }, 
                stretch = {
                  object = 0
                }, 
                xwidget = {
                  object = 0
                }
              }, 
              position = {
                charpos = 0, 
                bytepos = 0
              }, 
              current = {
                pos = {
                  charpos = 0, 
                  bytepos = 0
                }, 
                overlay_string_index = 0, 
                string_pos = {
                  charpos = 0, 
                  bytepos = 0
                }, 
                dpvec_index = 0
              }, 
              from_overlay = 0, 
              area = LEFT_MARGIN_AREA, 
              method = GET_FROM_BUFFER, 
              paragraph_embedding = NEUTRAL_DIR, 
              multibyte_p = false, 
              string_from_display_prop_p = false, 
              string_from_prefix_prop_p = false, 
              display_ellipsis_p = false, 
              avoid_cursor_p = false, 
              bidi_p = false, 
              from_disp_prop_p = false, 
              line_wrap = TRUNCATE, 
              voffset = 0, 
              space_width = 0, 
              font_height = 0
            }, {
              string = 0, 
              string_nchars = 0, 
              end_charpos = 0, 
              stop_charpos = 0, 
              prev_stop = 0, 
              base_level_stop = 0, 
              cmp_it = {
                stop_pos = 0, 
                id = 0, 
                ch = 0, 
                rule_idx = 0, 
                lookback = 0, 
                nglyphs = 0, 
                reversed_p = false, 
                charpos = 0, 
                nchars = 0, 
                nbytes = 0, 
                from = 0, 
                to = 0, 
                width = 0
              }, 
              face_id = 0, 
              u = {
                image = {
                  object = 0, 
                  slice = {
                    x = 0, 
                    y = 0, 
                    width = 0, 
                    height = 0
                  }, 
                  image_id = 0
                }, 
                stretch = {
                  object = 0
                }, 
                xwidget = {
                  object = 0
                }
              }, 
              position = {
                charpos = 0, 
                bytepos = 0
              }, 
              current = {
                pos = {
                  charpos = 0, 
                  bytepos = 0
                }, 
                overlay_string_index = 0, 
                string_pos = {
                  charpos = 0, 
                  bytepos = 0
                }, 
                dpvec_index = 0
              }, 
              from_overlay = 0, 
              area = LEFT_MARGIN_AREA, 
              method = GET_FROM_BUFFER, 
              paragraph_embedding = NEUTRAL_DIR, 
              multibyte_p = false, 
              string_from_display_prop_p = false, 
              string_from_prefix_prop_p = false, 
              display_ellipsis_p = false, 
              avoid_cursor_p = false, 
              bidi_p = false, 
              from_disp_prop_p = false, 
              line_wrap = TRUNCATE, 
              voffset = 0, 
              space_width = 0, 
              font_height = 0
            }, {
              string = 0, 
              string_nchars = 0, 
              end_charpos = 0, 
              stop_charpos = 0, 
              prev_stop = 0, 
              base_level_stop = 0, 
              cmp_it = {
                stop_pos = 0, 
                id = 0, 
                ch = 0, 
                rule_idx = 0, 
                lookback = 0, 
                nglyphs = 0, 
                reversed_p = false, 
                charpos = 0, 
                nchars = 0, 
                nbytes = 0, 
                from = 0, 
                to = 0, 
                width = 0
              }, 
              face_id = 0, 
              u = {
                image = {
                  object = 0, 
                  slice = {
                    x = 0, 
                    y = 0, 
                    width = 0, 
                    height = 0
                  }, 
                  image_id = 0
                }, 
                stretch = {
                  object = 0
                }, 
                xwidget = {
                  object = 0
                }
              }, 
              position = {
                charpos = 0, 
                bytepos = 0
              }, 
              current = {
                pos = {
                  charpos = 0, 
                  bytepos = 0
                }, 
                overlay_string_index = 0, 
                string_pos = {
                  charpos = 0, 
                  bytepos = 0
                }, 
                dpvec_index = 0
              }, 
              from_overlay = 0, 
              area = LEFT_MARGIN_AREA, 
              method = GET_FROM_BUFFER, 
              paragraph_embedding = NEUTRAL_DIR, 
              multibyte_p = false, 
              string_from_display_prop_p = false, 
              string_from_prefix_prop_p = false, 
              display_ellipsis_p = false, 
              avoid_cursor_p = false, 
              bidi_p = false, 
              from_disp_prop_p = false, 
              line_wrap = TRUNCATE, 
              voffset = 0, 
              space_width = 0, 
              font_height = 0
            }, {
              string = 0, 
              string_nchars = 0, 
              end_charpos = 0, 
              stop_charpos = 0, 
              prev_stop = 0, 
              base_level_stop = 0, 
              cmp_it = {
                stop_pos = 0, 
                id = 0, 
                ch = 0, 
                rule_idx = 0, 
                lookback = 0, 
                nglyphs = 0, 
                reversed_p = false, 
                charpos = 0, 
                nchars = 0, 
                nbytes = 0, 
                from = 0, 
                to = 0, 
                width = 0
              }, 
              face_id = 0, 
              u = {
                image = {
                  object = 0, 
                  slice = {
                    x = 0, 
                    y = 0, 
                    width = 0, 
                    height = 0
                  }, 
                  image_id = 0
                }, 
                stretch = {
                  object = 0
                }, 
                xwidget = {
                  object = 0
                }
              }, 
              position = {
                charpos = 0, 
                bytepos = 0
              }, 
              current = {
                pos = {
                  charpos = 0, 
                  bytepos = 0
                }, 
                overlay_string_index = 0, 
                string_pos = {
                  charpos = 0, 
                  bytepos = 0
                }, 
                dpvec_index = 0
              }, 
              from_overlay = 0, 
              area = LEFT_MARGIN_AREA, 
              method = GET_FROM_BUFFER, 
              paragraph_embedding = NEUTRAL_DIR, 
              multibyte_p = false, 
              string_from_display_prop_p = false, 
              string_from_prefix_prop_p = false, 
              display_ellipsis_p = false, 
              avoid_cursor_p = false, 
              bidi_p = false, 
              from_disp_prop_p = false, 
              line_wrap = TRUNCATE, 
              voffset = 0, 
              space_width = 0, 
              font_height = 0
            }, {
              string = 0, 
              string_nchars = 0, 
              end_charpos = 0, 
              stop_charpos = 0, 
              prev_stop = 0, 
              base_level_stop = 0, 
              cmp_it = {
                stop_pos = 0, 
                id = 0, 
                ch = 0, 
                rule_idx = 0, 
                lookback = 0, 
                nglyphs = 0, 
                reversed_p = false, 
                charpos = 0, 
                nchars = 0, 
                nbytes = 0, 
                from = 0, 
                to = 0, 
                width = 0
              }, 
              face_id = 0, 
              u = {
                image = {
                  object = 0, 
                  slice = {
                    x = 0, 
                    y = 0, 
                    width = 0, 
                    height = 0
                  }, 
                  image_id = 0
                }, 
                stretch = {
                  object = 0
                }, 
                xwidget = {
                  object = 0
                }
              }, 
              position = {
                charpos = 0, 
                bytepos = 0
              }, 
              current = {
                pos = {
                  charpos = 0, 
                  bytepos = 0
                }, 
                overlay_string_index = 0, 
                string_pos = {
                  charpos = 0, 
                  bytepos = 0
                }, 
                dpvec_index = 0
              }, 
              from_overlay = 0, 
              area = LEFT_MARGIN_AREA, 
              method = GET_FROM_BUFFER, 
              paragraph_embedding = NEUTRAL_DIR, 
              multibyte_p = false, 
              string_from_display_prop_p = false, 
              string_from_prefix_prop_p = false, 
              display_ellipsis_p = false, 
              avoid_cursor_p = false, 
              bidi_p = false, 
              from_disp_prop_p = false, 
              line_wrap = TRUNCATE, 
              voffset = 0, 
              space_width = 0, 
              font_height = 0
            }}, 
          sp = 0, 
          selective = 0, 
          what = IT_CHARACTER, 
          face_id = 0, 
          selective_display_ellipsis_p = true, 
          ctl_arrow_p = true, 
          face_box_p = false, 
          start_of_box_run_p = false, 
          end_of_box_run_p = false, 
          overlay_strings_at_end_processed_p = false, 
          ignore_overlay_strings_at_pos_p = false, 
          glyph_not_available_p = false, 
          starts_in_middle_of_char_p = false, 
          face_before_selective_p = false, 
          constrain_row_ascent_descent_p = false, 
          line_wrap = WINDOW_WRAP, 
          base_face_id = 0, 
          c = 0, 
          len = 0, 
          cmp_it = {
            stop_pos = 0, 
            id = -1, 
            ch = 0, 
            rule_idx = 0, 
            lookback = 0, 
            nglyphs = 0, 
            reversed_p = false, 
            charpos = 0, 
            nchars = 0, 
            nbytes = 0, 
            from = 0, 
            to = 0, 
            width = 0
          }, 
          char_to_display = 0, 
          glyphless_method = GLYPHLESS_DISPLAY_THIN_SPACE, 
          image_id = 0, 
          xwidget = 0x0, 
          slice = {
            x = 0, 
            y = 0, 
            width = 0, 
            height = 0
          }, 
          space_width = 0, 
          voffset = 0, 
          tab_width = 8, 
          font_height = 0, 
          object = 0, 
          position = {
            charpos = 0, 
            bytepos = 0
          }, 
          truncation_pixel_width = 0, 
          continuation_pixel_width = 1, 
          first_visible_x = 0, 
          last_visible_x = 79, 
          last_visible_y = 1, 
          extra_line_spacing = 0, 
          max_extra_line_spacing = 0, 
          override_ascent = -1, 
          override_descent = 0, 
          override_boff = 0, 
          glyph_row = 0x0, 
          area = TEXT_AREA, 
          nglyphs = 1, 
          pixel_width = 0, 
          ascent = 0, 
          descent = 0, 
          max_ascent = 0, 
          max_descent = 0, 
          phys_ascent = 0, 
          phys_descent = 0, 
          max_phys_ascent = 0, 
          max_phys_descent = 0, 
          current_x = 0, 
          continuation_lines_width = 0, 
          eol_pos = {
            charpos = 0, 
            bytepos = 0
          }, 
          current_y = 0, 
          first_vpos = 0, 
          vpos = 0, 
          hpos = 0, 
          left_user_fringe_bitmap = 0, 
          right_user_fringe_bitmap = 0, 
          left_user_fringe_face_id = 0, 
          right_user_fringe_face_id = 0, 
          bidi_p = true, 
          bidi_it = {
            bytepos = 0, 
            charpos = 0, 
            ch = 0, 
            nchars = 0, 
            ch_len = 0, 
            type = UNKNOWN_BT, 
            type_after_wn = UNKNOWN_BT, 
            orig_type = UNKNOWN_BT, 
            resolved_level = 0 '\000', 
            isolate_level = 0 '\000', 
            invalid_levels = 0, 
            invalid_isolates = 0, 
            prev = {
              charpos = 0, 
              type = UNKNOWN_BT, 
              orig_type = UNKNOWN_BT
            }, 
            last_strong = {
              charpos = 0, 
              type = UNKNOWN_BT, 
              orig_type = UNKNOWN_BT
            }, 
            next_for_neutral = {
              charpos = 0, 
              type = UNKNOWN_BT, 
              orig_type = UNKNOWN_BT
            }, 
            prev_for_neutral = {
              charpos = 0, 
              type = UNKNOWN_BT, 
              orig_type = UNKNOWN_BT
            }, 
            next_for_ws = {
              charpos = 0, 
              type = UNKNOWN_BT, 
              orig_type = UNKNOWN_BT
            }, 
            bracket_pairing_pos = 0, 
            bracket_enclosed_type = UNKNOWN_BT, 
            next_en_pos = 0, 
            next_en_type = UNKNOWN_BT, 
            sos = NEUTRAL_DIR, 
            scan_dir = 0, 
            disp_pos = 0, 
            disp_prop = 0, 
            stack_idx = 0, 
            level_stack = {{
                next_for_neutral_pos = 0, 
                next_for_neutral_type = 0, 
                last_strong_type = 0, 
                prev_for_neutral_type = 0, 
                level = 0 '\000', 
                flags = 0 '\000'
              } <repeats 128 times>}, 
            string = {
              lstring = 0, 
              s = 0x0, 
              schars = 0, 
              bufpos = 0, 
              from_disp_str = false, 
              unibyte = false
            }, 
            w = 0xcfe5b0, 
            paragraph_dir = NEUTRAL_DIR, 
            separator_limit = 0, 
            first_elt = false, 
            new_paragraph = false, 
            frame_window_p = false
          }, 
          paragraph_embedding = L2R
        }
        height = <optimized out>
        start = <optimized out>
        window_height_changed_p = false
#6  0x0000000000434e42 in with_echo_area_buffer (w=0xcfe5b0, which=<optimized out>, fn=0x460f90 <resize_mini_window_1>, a1=13624752, a2=44448) at ../../src/xdisp.c:10609
        buffer = 13936277
        this_one = <optimized out>
        the_other = <optimized out>
        clear_buffer_p = false
        rc = <optimized out>
#7  0x0000000000466e15 in resize_echo_area_exactly () at ../../src/xdisp.c:10857
        resize_exactly = 0
        resized_p = false
#8  0x000000000053848e in command_loop_1 () at ../../src/keyboard.c:1275
        prev_modiff = 0
        prev_buffer = 0x0
#9  0x00000000005abb16 in internal_condition_case (bfun=bfun@entry=0x5377e0 <command_loop_1>, handlers=handlers@entry=19056, hfun=hfun@entry=0x52bf60 <cmd_error>) at ../../src/eval.c:1309
        val = 0
        c = <optimized out>
#10 0x0000000000525e3c in command_loop_2 (ignore=ignore@entry=0) at ../../src/keyboard.c:1100
        val = 0
#11 0x00000000005aba9b in internal_catch (tag=tag@entry=45840, func=func@entry=0x525e20 <command_loop_2>, arg=arg@entry=0) at ../../src/eval.c:1074
        val = 0
        c = <optimized out>
#12 0x0000000000525df9 in command_loop () at ../../src/keyboard.c:1079
No locals.
#13 0x000000000052baab in recursive_edit_1 () at ../../src/keyboard.c:685
        val = <optimized out>
#14 0x000000000052be08 in Frecursive_edit () at ../../src/keyboard.c:756
        buffer = <optimized out>
#15 0x00000000004135f7 in main (argc=13632916, argv=0x7fffffffe598) at ../../src/emacs.c:1605
        dummy = 140737488348224
        stack_bottom_variable = -1 '\377'
        skip_args = 1
        rlim = {
          rlim_cur = 8720000, 
          rlim_max = 18446744073709551615
        }
        junk = 0x0
        dname_arg = 0x0
        ch_to_dir = 0x0

The emacs_abort call comes from bidi_initialize because the bidi_type_table result is nil.

1097	    emacs_abort ();
1092	static void
1093	bidi_initialize (void)
1094	{
1095	  bidi_type_table = uniprop_table (intern ("bidi-class"));
1096	  if (NILP (bidi_type_table))
1097	    emacs_abort ();
1098	  staticpro (&bidi_type_table);
1099	
1100	  bidi_mirror_table = uniprop_table (intern ("mirroring"));
1101	  if (NILP (bidi_mirror_table))