Subject: bidi crash in display_line

From: Juanma Barranquero <[email-masked]>
Date: Sun, 25 Apr 2010 00:14:44 +0200

Package: emacs
Version: 24.0.50
X-Debbugs-Cc: [email-masked]

I'm getting a crash just by doing

  emacs -Q --eval "(setq-default bidi-display-reordering t)"

Backtrace attached.

    Juanma

Breakpoint 1, w32_abort () at w32fns.c:7349
7349      button = MessageBox (NULL,
(gdb) bt
#0  w32_abort () at w32fns.c:7349
#1  0x01090475 in display_line (it=0x88d470) at xdisp.c:17983
#2  0x01084e14 in try_window (window=55319557, pos=..., flags=1) at
xdisp.c:14733
#3  0x01083232 in redisplay_window (window=55319557,
just_this_one_p=0) at xdisp.c:14354
#4  0x0107c127 in redisplay_window_0 (window=55319557) at xdisp.c:12646
#5  0x010366be in internal_condition_case_1 (bfun=0x107c0f4
<redisplay_window_0>, arg=55319557, handlers=49502846,
    hfun=0x107c0d3 <redisplay_window_error>) at eval.c:1560
#6  0x0107c0ba in redisplay_windows (window=55319557) at xdisp.c:12625
#7  0x01079d29 in redisplay_internal (preserve_echo_area=0) at xdisp.c:12197
#8  0x01076939 in redisplay () at xdisp.c:11427
#9  0x0100a784 in read_char (commandflag=1, nmaps=2, maps=0x88f960,
prev_event=49518618, used_mouse_menu=0x88fa38, end_time=0x0) at
keyboard.c:2576
#10 0x0101d7c4 in read_key_sequence (keybuf=0x88fbcc, bufsize=30,
prompt=49518618, dont_downcase_last=0, can_return_switch_frame=1,
    fix_current_buffer=1) at keyboard.c:9402
#11 0x01007bf7 in command_loop_1 () at keyboard.c:1636
#12 0x010365d6 in internal_condition_case (bfun=0x100734e
<command_loop_1>, handlers=49576178, hfun=0x1006a75 <cmd_error>) at
eval.c:1512
#13 0x01006f4f in command_loop_2 () at keyboard.c:1356
#14 0x01036058 in internal_catch (tag=49574346, func=0x1006f2a
<command_loop_2>, arg=49518618) at eval.c:1248
#15 0x01006f08 in command_loop () at keyboard.c:1335
#16 0x01006180 in recursive_edit_1 () at keyboard.c:950
#17 0x0100669b in Frecursive_edit () at keyboard.c:1012
#18 0x01002a95 in main (argc=4, argv=0xc72ca0) at emacs.c:1784
(gdb) frame 1
#1  0x01090475 in display_line (it=0x88d470) at xdisp.c:17983
17983               abort ();
(gdb) p it
$1 = (struct it *) 0x88d470
(gdb) p *it
$2 = {
  window = 55319557,
  w = 0x34c1c00,
  f = 0x34c1a00,
  method = GET_FROM_BUFFER,
  stop_charpos = 192,
  prev_stop = 0,
  base_level_stop = 0,
  end_charpos = 192,
  s = 0x0,
  string_nchars = 0,
  region_beg_charpos = -1,
  region_end_charpos = -1,
  redisplay_end_trigger_charpos = 0,
  multibyte_p = 1,
  header_line_p = 0,
  string_from_display_prop_p = 0,
  ellipsis_p = 0,
  avoid_cursor_p = 0,
  dp = 0x3104200,
  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 = 191,
      bytepos = 191
    },
    overlay_string_index = -1,
    string_pos = {
      charpos = -1,
      bytepos = -1
    },
    dpvec_index = -1
  },
  current = {
    pos = {
      charpos = 192,
      bytepos = 192
    },
    overlay_string_index = -1,
    string_pos = {
      charpos = -1,
      bytepos = -1
    },
    dpvec_index = -1
  },
  n_overlay_strings = 0,
  overlay_strings = {0 <repeats 16 times>},
  string_overlays = {0 <repeats 16 times>},
  string = 49518618,
  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,
        lookback = 0,
        nglyphs = 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
        },
        comp = {
          object = 0
        },
        stretch = {
          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,
      multibyte_p = 0,
      string_from_display_prop_p = 0,
      display_ellipsis_p = 0,
      avoid_cursor_p = 0,
      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,
        lookback = 0,
        nglyphs = 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
        },
        comp = {
          object = 0
        },
        stretch = {
          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,
      multibyte_p = 0,
      string_from_display_prop_p = 0,
      display_ellipsis_p = 0,
      avoid_cursor_p = 0,
      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,
        lookback = 0,
        nglyphs = 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
        },
        comp = {
          object = 0
        },
        stretch = {
          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,
      multibyte_p = 0,
      string_from_display_prop_p = 0,
      display_ellipsis_p = 0,
      avoid_cursor_p = 0,
      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,
        lookback = 0,
        nglyphs = 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
        },
        comp = {
          object = 0
        },
        stretch = {
          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,
      multibyte_p = 0,
      string_from_display_prop_p = 0,
      display_ellipsis_p = 0,
      avoid_cursor_p = 0,
      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,
        lookback = 0,
        nglyphs = 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
        },
        comp = {
          object = 0
        },
        stretch = {
          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,
      multibyte_p = 0,
      string_from_display_prop_p = 0,
      display_ellipsis_p = 0,
      avoid_cursor_p = 0,
      line_wrap = TRUNCATE,
      voffset = 0,
      space_width = 0,
      font_height = 0
    }},
  sp = 0,
  selective = 0,
  what = IT_EOB,
  face_id = 0,
  selective_display_ellipsis_p = 1,
  ctl_arrow_p = 1,
  face_box_p = 0,
  start_of_box_run_p = 0,
  end_of_box_run_p = 0,
  overlay_strings_at_end_processed_p = 1,
  ignore_overlay_strings_at_pos_p = 0,
  glyph_not_available_p = 0,
  starts_in_middle_of_char_p = 0,
  face_before_selective_p = 0,
  constrain_row_ascent_descent_p = 0,
  line_wrap = WINDOW_WRAP,
  base_face_id = 0,
  c = 0,
  len = 1,
  cmp_it = {
    stop_pos = 192,
    id = -1,
    ch = -2,
    lookback = 0,
    nglyphs = 0,
    nchars = 0,
    nbytes = 0,
    from = 0,
    to = 0,
    width = 0
  },
  char_to_display = 32,
  image_id = 0,
  slice = {
    x = 49518618,
    y = 49518618,
    width = 49518618,
    height = 49518618
  },
  space_width = 49518618,
  voffset = 0,
  tab_width = 8,
  font_height = 49518618,
  object = 49557509,
  position = {
    charpos = 192,
    bytepos = 192
  },
  truncation_pixel_width = 0,
  continuation_pixel_width = 0,
  first_visible_x = 0,
  last_visible_x = 640,
  last_visible_y = 560,
  extra_line_spacing = 0,
  max_extra_line_spacing = 0,
  override_ascent = -1,
  override_descent = 0,
  override_boff = 0,
  glyph_row = 0x34861c8,
  area = TEXT_AREA,
  nglyphs = 1,
  pixel_width = 8,
  ascent = 12,
  descent = 4,
  max_ascent = 0,
  max_descent = 0,
  phys_ascent = 12,
  phys_descent = 4,
  max_phys_ascent = 0,
  max_phys_descent = 0,
  current_x = 0,
  continuation_lines_width = 0,
  eol_pos = {
    charpos = 0,
    bytepos = 0
  },
  current_y = 48,
  first_vpos = 0,
  vpos = 3,
  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 = 0,
  bidi_it = {
    bytepos = 192,
    charpos = 192,
    ch = -1,
    ch_len = 1,
    type = STRONG_L,
    type_after_w1 = NEUTRAL_B,
    orig_type = NEUTRAL_B,
    resolved_level = 0,
    invalid_levels = 0,
    invalid_rl_levels = -1,
    prev_was_pdf = 0,
    prev = {
      bytepos = 191,
      charpos = 191,
      type = UNKNOWN_BT,
      type_after_w1 = NEUTRAL_B,
      orig_type = NEUTRAL_B
    },
    last_strong = {
      bytepos = 188,
      charpos = 188,
      type = UNKNOWN_BT,
      type_after_w1 = UNKNOWN_BT,
      orig_type = UNKNOWN_BT
    },
    next_for_neutral = {
      bytepos = 192,
      charpos = 192,
      type = STRONG_L,
      type_after_w1 = NEUTRAL_B,
      orig_type = NEUTRAL_B
    },
    prev_for_neutral = {
      bytepos = 192,
      charpos = 192,
      type = STRONG_L,
      type_after_w1 = NEUTRAL_B,
      orig_type = NEUTRAL_B
    },
    next_for_ws = {
      bytepos = 0,
      charpos = 0,
      type = UNKNOWN_BT,
      type_after_w1 = UNKNOWN_BT,
      orig_type = UNKNOWN_BT
    },
    next_en_pos = -1,
    ignore_bn_limit = 0,
    sor = L2R,
    scan_dir = 1,
    stack_idx = 0,
    level_stack = {{
        level = 0,
        override = NEUTRAL_DIR
      } <repeats 64 times>},
    first_elt = 0,
    paragraph_dir = L2R,
    new_paragraph = 1,
    separator_limit = 192
  },
  paragraph_embedding = NEUTRAL_DIR
}
(gdb)