GNU bug report logs - #27668
26.0.50; Crash with display-line-numbers t

Previous Next

Package: emacs;

Reported by: Robert Pluim <rpluim <at> gmail.com>

Date: Wed, 12 Jul 2017 13:44:02 UTC

Severity: normal

Tags: moreinfo

Merged with 28710

Found in versions 26.0.50, 27.0.50

Done: Eli Zaretskii <eliz <at> gnu.org>

Bug is archived. No further changes may be made.

To add a comment to this bug, you must first unarchive it, by sending
a message to control AT debbugs.gnu.org, with unarchive 27668 in the body.
You can then email your comments to 27668 AT debbugs.gnu.org in the normal way.

Toggle the display of automated, internal messages from the tracker.

View this report as an mbox folder, status mbox, maintainer mbox


Report forwarded to bug-gnu-emacs <at> gnu.org:
bug#27668; Package emacs. (Wed, 12 Jul 2017 13:44:02 GMT) Full text and rfc822 format available.

Acknowledgement sent to Robert Pluim <rpluim <at> gmail.com>:
New bug report received and forwarded. Copy sent to bug-gnu-emacs <at> gnu.org. (Wed, 12 Jul 2017 13:44:02 GMT) Full text and rfc822 format available.

Message #5 received at submit <at> debbugs.gnu.org (full text, mbox):

From: Robert Pluim <rpluim <at> gmail.com>
To: bug-gnu-emacs <at> gnu.org
Subject: 26.0.50; Crash with display-line-numbers t
Date: Wed, 12 Jul 2017 15:42:28 +0200
I've had emacs crash on me twice today with the same backtrace. It
appears to be related to setting display-line-numbers to t, although
I'd been running the scratch/line-numbers branch for a while without
any problems.

It *seems* to happen the second time I do 'C-x C-f' from a buffer that
has display-line-numbers t, although I'm having a hard time coming up
with a reliable reproduction method, nor have a got a recipe from
'emacs -Q' (yet).

I have an example trapped in gdb, let me know if you need more info.

bt full:

(gdb) bt full
#0  terminate_due_to_signal (sig=sig <at> entry=6, backtrace_limit=backtrace_limit <at> entry=2147483647) at emacs.c:363
No locals.
#1  0x00000000005a5084 in die (msg=msg <at> entry=0x6987d8 "pdl->kind == SPECPDL_BACKTRACE", 
    file=file <at> entry=0x698448 "eval.c", line=line <at> entry=150) at alloc.c:7348
No locals.
#2  0x0000000000419f3b in backtrace_function (pdl=<optimized out>) at eval.c:150
No locals.
#3  <function called from gdb>
No symbol table info available.
#4  terminate_due_to_signal (sig=sig <at> entry=6, backtrace_limit=backtrace_limit <at> entry=2147483647) at emacs.c:363
No locals.
#5  0x00000000005a5084 in die (msg=msg <at> entry=0x679355 "row->pixel_width >= 0", file=file <at> entry=0x678fc8 "xdisp.c", 
    line=line <at> entry=19775) at alloc.c:7348
No locals.
#6  0x000000000044fd4f in compute_line_metrics (it=it <at> entry=0x7fffffff8160) at xdisp.c:19775
        i = <optimized out>
        min_y = <optimized out>
        max_y = <optimized out>
        row = 0x343ea30
#7  0x0000000000464404 in display_line (it=it <at> entry=0x7fffffff8160, cursor_vpos=cursor_vpos <at> entry=31) at xdisp.c:21944
        row = <optimized out>
        overlay_arrow_string = <optimized out>
        wrap_it = {
          window = XIL(0x306b1a4), 
          w = 0x7fffffff8bd8, 
          f = 0x1, 
          method = GET_FROM_BUFFER, 
          stop_charpos = 0, 
          prev_stop = 4294967300, 
          base_level_stop = 6, 
          end_charpos = 0, 
          s = 0x2a <error: Cannot access memory at address 0x2a>, 
          string_nchars = -7338326661860733952, 
          redisplay_end_trigger_charpos = 2, 
          multibyte_p = false, 
          header_line_p = false, 
          string_from_display_prop_p = false, 
          string_from_prefix_prop_p = false, 
          from_disp_prop_p = false, 
          ellipsis_p = true, 
          avoid_cursor_p = true, 
          dp = 0x0, 
          dpvec = 0x1, 
          dpend = 0x6, 
          dpvec_char_len = -29744, 
          dpvec_face_id = 32767, 
          saved_face_id = -29912, 
          ctl_chars = {XIL(0x4dea53), make_number(10), XIL(0x146d7d0), XIL(0x100000000), XIL(0x7fffffff8bd8), XIL(0), 
            XIL(0x7fffffff8b30), XIL(0x306b1a4), make_number(2), XIL(0), XIL(0), make_number(10), 
            XIL(0x9a2906c7fa034c00), XIL(0x1157714), XIL(0x7fffffff8b10), XIL(0)}, 
          start = {
            pos = {
              charpos = 1, 
              bytepos = 0
            }, 
            overlay_string_index = 140737488327648, 
            string_pos = {
              charpos = 0, 
              bytepos = 5111028
            }, 
            dpvec_index = 1
          }, 
          current = {
---Type <return> to continue, or q <return> to quit--- 
            pos = {
              charpos = 140737488325392, 
              bytepos = 0
            }, 
            overlay_string_index = 21419984, 
            string_pos = {
              charpos = 4294967296, 
              bytepos = 1
            }, 
            dpvec_index = 10
          }, 
          n_overlay_strings = 140737488325584, 
          overlay_strings_charpos = 140737488325416, 
          overlay_strings = {XIL(0x9a2906c7fa034c00), XIL(0x7fffffff8b28), XIL(0x7fffffff8b10), XIL(0x7fffffff8b10), 
            XIL(0x9a2906c7fa034c00), XIL(0), XIL(0x1), XIL(0x7fffffff70d0), XIL(0x2dacc63), XIL(0), XIL(0x4920), 
            XIL(0x7fffffff5d90), XIL(0), XIL(0x1), XIL(0x63116f), XIL(0x7fffffff8b28)}, 
          string_overlays = {XIL(0xdda404), make_number(1), make_number(1), XIL(0x4920), make_number(0), 
            XIL(0xdda404), XIL(0x631ca0), make_number(0), XIL(0x633db8), XIL(0), XIL(0xdda404), make_number(1), 
            make_number(1), XIL(0x4920), make_number(0), make_number(1)}, 
          string = XIL(0x6345a5), 
          from_overlay = XIL(0x1), 
          stack = {{
              string = make_number(0), 
              string_nchars = 1, 
              end_charpos = 2, 
              stop_charpos = 14525444, 
              prev_stop = 1, 
              base_level_stop = 14525444, 
              cmp_it = {
                stop_pos = 0, 
                id = 6, 
                ch = 4509939, 
                rule_idx = 0, 
                lookback = 140737488325592, 
                nglyphs = 1, 
                reversed_p = true, 
                charpos = 0, 
                nchars = 0, 
                nbytes = 0, 
                from = 4, 
                to = 1, 
                width = 1
              }, 
              face_id = 0, 
              u = {
                image = {
                  object = XIL(0x100000001), 
                  slice = {
                    x = XIL(0x9a2906c7fa034c00), 
                    y = XIL(0), 
                    width = XIL(0x7fffffff93e0), 
                    height = XIL(0)
                  }, 
                  image_id = 1
                }, 
                stretch = {
                  object = XIL(0x100000001)
                }, 
                xwidget = {
                  object = XIL(0x100000001)
                }
              }, 
              position = {
---Type <return> to continue, or q <return> to quit---
                charpos = 1, 
                bytepos = 140737488325584
              }, 
              current = {
                pos = {
                  charpos = 140737488325416, 
                  bytepos = 5106259
                }, 
                overlay_string_index = 0, 
                string_pos = {
                  charpos = 21419984, 
                  bytepos = 4294967297
                }, 
                dpvec_index = -29736
              }, 
              from_overlay = XIL(0), 
              area = -29904, 
              method = 32767, 
              paragraph_embedding = (unknown: 112), 
              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 = WORD_WRAP, 
              voffset = 0, 
              space_width = XIL(0), 
              font_height = XIL(0)
            }, {
              string = XIL(0x1), 
              string_nchars = -100447232, 
              end_charpos = 0, 
              stop_charpos = 140737488325392, 
              prev_stop = 0, 
              base_level_stop = 1, 
              cmp_it = {
                stop_pos = 0, 
                id = 140737488327648, 
                ch = 0, 
                rule_idx = 5111028, 
                lookback = 1, 
                nglyphs = -29936, 
                reversed_p = 255, 
                charpos = 0, 
                nchars = 5111057, 
                nbytes = 0, 
                from = 0, 
                to = 0, 
                width = 0
              }, 
              face_id = 0, 
              u = {
                image = {
                  object = XIL(0x1), 
                  slice = {
                    x = make_number(2), 
                    y = XIL(0x9a2906c7fa034c00), 
                    width = XIL(0), 
                    height = XIL(0x7fffffff8b10)
                  }, 
                  image_id = 140737488325392
---Type <return> to continue, or q <return> to quit---
                }, 
                stretch = {
                  object = XIL(0x1)
                }, 
                xwidget = {
                  object = XIL(0x1)
                }
              }, 
              position = {
                charpos = -7338326661860733952, 
                bytepos = 0
              }, 
              current = {
                pos = {
                  charpos = 1, 
                  bytepos = 140737488319392
                }, 
                overlay_string_index = 140737488319392, 
                string_pos = {
                  charpos = 0, 
                  bytepos = 140737488319392
                }, 
                dpvec_index = 1
              }, 
              from_overlay = XIL(0x4e24e9), 
              area = LEFT_MARGIN_AREA, 
              method = GET_FROM_BUFFER, 
              paragraph_embedding = (unknown: 4294937360), 
              multibyte_p = true, 
              string_from_display_prop_p = true, 
              string_from_prefix_prop_p = true, 
              display_ellipsis_p = true, 
              avoid_cursor_p = true, 
              bidi_p = true, 
              from_disp_prop_p = true, 
              line_wrap = (unknown: 4294937360), 
              voffset = 32767, 
              space_width = make_number(1277725), 
              font_height = XIL(0)
            }, {
              string = XIL(0x7fffffff93e0), 
              string_nchars = 0, 
              end_charpos = 5111028, 
              stop_charpos = 27264240, 
              prev_stop = 10, 
              base_level_stop = 10, 
              cmp_it = {
                stop_pos = 140737302826789, 
                id = 0, 
                ch = -37360, 
                rule_idx = 88080848, 
                lookback = 10, 
                nglyphs = 10, 
                reversed_p = false, 
                charpos = 1, 
                nchars = -37360, 
                nbytes = 32767, 
                from = 88080848, 
                to = 0, 
                width = 10
              }, 
              face_id = 10, 
              u = {
---Type <return> to continue, or q <return> to quit---
                image = {
                  object = XIL(0x7fffffff6e10), 
                  slice = {
                    x = XIL(0x7ffff61f8c79), 
                    y = XIL(0x20), 
                    width = XIL(0xf4ec70), 
                    height = XIL(0x7fffffff70dc)
                  }, 
                  image_id = 94489280513
                }, 
                stretch = {
                  object = XIL(0x7fffffff6e10)
                }, 
                xwidget = {
                  object = XIL(0x7fffffff6e10)
                }
              }, 
              position = {
                charpos = 22, 
                bytepos = 27264240
              }, 
              current = {
                pos = {
                  charpos = 0, 
                  bytepos = 140737488325592
                }, 
                overlay_string_index = 25769803782, 
                string_pos = {
                  charpos = 5, 
                  bytepos = 0
                }, 
                dpvec_index = -1
              }, 
              from_overlay = XIL(0), 
              area = LEFT_MARGIN_AREA, 
              method = GET_FROM_BUFFER, 
              paragraph_embedding = L2R, 
              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 = (unknown: 4194520064), 
              voffset = 1735, 
              space_width = XIL(0), 
              font_height = XIL(0x7fffffff93e0)
            }, {
              string = XIL(0), 
              string_nchars = 1, 
              end_charpos = 1, 
              stop_charpos = 140737488325584, 
              prev_stop = 140737488325416, 
              base_level_stop = 5106259, 
              cmp_it = {
                stop_pos = 0, 
                id = 21419984, 
                ch = 1, 
                rule_idx = 140737488325592, 
                lookback = 0, 
                nglyphs = -29904, 
                reversed_p = 255, 
---Type <return> to continue, or q <return> to quit---
                charpos = 32, 
                nchars = 1, 
                nbytes = 0, 
                from = 0, 
                to = 0, 
                width = 0
              }, 
              face_id = 22, 
              u = {
                image = {
                  object = XIL(0x9a2906c7fa034c00), 
                  slice = {
                    x = XIL(0), 
                    y = XIL(0x7fffffff8b10), 
                    width = XIL(0), 
                    height = XIL(0x1)
                  }, 
                  image_id = 0
                }, 
                stretch = {
                  object = XIL(0x9a2906c7fa034c00)
                }, 
                xwidget = {
                  object = XIL(0x9a2906c7fa034c00)
                }
              }, 
              position = {
                charpos = 140737488327648, 
                bytepos = 0
              }, 
              current = {
                pos = {
                  charpos = 5111028, 
                  bytepos = 1
                }, 
                overlay_string_index = 140737488325392, 
                string_pos = {
                  charpos = 0, 
                  bytepos = 5111057
                }, 
                dpvec_index = 0
              }, 
              from_overlay = XIL(0), 
              area = LEFT_MARGIN_AREA, 
              method = GET_FROM_DISPLAY_VECTOR, 
              paragraph_embedding = L2R, 
              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 = WINDOW_WRAP, 
              voffset = 0, 
              space_width = XIL(0x9a2906c7fa034c00), 
              font_height = XIL(0)
            }, {
              string = XIL(0x7fffffff8b10), 
              string_nchars = -29936, 
              end_charpos = 0, 
              stop_charpos = 0, 
              prev_stop = 16, 
---Type <return> to continue, or q <return> to quit---
              base_level_stop = 6799399, 
              cmp_it = {
                stop_pos = 5113057, 
                id = 0, 
                ch = 0, 
                rule_idx = 0, 
                lookback = 0, 
                nglyphs = 0, 
                reversed_p = false, 
                charpos = 5110902, 
                nchars = 0, 
                nbytes = 0, 
                from = 0, 
                to = 0, 
                width = 0
              }, 
              face_id = 0, 
              u = {
                image = {
                  object = XIL(0), 
                  slice = {
                    x = XIL(0x9a2906c7fa034c00), 
                    y = XIL(0), 
                    width = XIL(0x7fffffff8b10), 
                    height = XIL(0)
                  }, 
                  image_id = 0
                }, 
                stretch = {
                  object = XIL(0)
                }, 
                xwidget = {
                  object = XIL(0)
                }
              }, 
              position = {
                charpos = 0, 
                bytepos = 32
              }, 
              current = {
                pos = {
                  charpos = 1265, 
                  bytepos = 5113057
                }, 
                overlay_string_index = 0, 
                string_pos = {
                  charpos = 0, 
                  bytepos = 0
                }, 
                dpvec_index = 0
              }, 
              from_overlay = XIL(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, 
---Type <return> to continue, or q <return> to quit---
              voffset = 0, 
              space_width = XIL(0), 
              font_height = XIL(0)
            }}, 
          sp = 0, 
          selective = 0, 
          what = IT_CHARACTER, 
          face_id = 0, 
          selective_display_ellipsis_p = false, 
          ctl_arrow_p = false, 
          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 = TRUNCATE, 
          base_face_id = 0, 
          c = 28, 
          len = 3, 
          cmp_it = {
            stop_pos = 146028888064, 
            id = 0, 
            ch = 10935, 
            rule_idx = -1, 
            lookback = 4294967294, 
            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 = XIL(0), 
            y = XIL(0), 
            width = XIL(0), 
            height = XIL(0)
          }, 
          space_width = XIL(0), 
          voffset = 0, 
          tab_width = 0, 
          font_height = XIL(0), 
          object = XIL(0x80000), 
          position = {
            charpos = 0, 
            bytepos = 16341029
          }, 
          truncation_pixel_width = 9551, 
          continuation_pixel_width = 0, 
          first_visible_x = 0, 
          last_visible_x = 9551, 
          last_visible_y = 0, 
          extra_line_spacing = 1048576, 
---Type <return> to continue, or q <return> to quit---
          max_extra_line_spacing = 0, 
          override_ascent = 3798, 
          override_descent = 1958, 
          override_boff = 0, 
          glyph_row = 0xffffffff, 
          area = LEFT_MARGIN_AREA, 
          nglyphs = 0, 
          pixel_width = 0, 
          ascent = 0, 
          descent = 1, 
          max_ascent = 1, 
          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, 
          lnum = 1028, 
          lnum_bytepos = 4294967266, 
          lnum_width = 0, 
          lnum_pixel_width = 0, 
          pt_lnum = 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 = false, 
          bidi_it = {
            bytepos = 0, 
            charpos = 1048576, 
            ch = 9551, 
            nchars = 9551, 
            ch_len = 0, 
            type = 47893603, 
            type_after_wn = UNKNOWN_BT, 
            orig_type = UNKNOWN_BT, 
            resolved_level = 0 '\000', 
            isolate_level = 0 '\000', 
            invalid_levels = 21552, 
            invalid_isolates = 0, 
            prev = {
              charpos = 57619507, 
              type = STRONG_L, 
              orig_type = UNKNOWN_BT
            }, 
            last_strong = {
              charpos = 57621456, 
              type = 27264240, 
              orig_type = UNKNOWN_BT
            }, 
            next_for_neutral = {
              charpos = 10, 
              type = RLE, 
              orig_type = UNKNOWN_BT
---Type <return> to continue, or q <return> to quit---
            }, 
            prev_for_neutral = {
              charpos = 140737302826789, 
              type = STRONG_L, 
              orig_type = UNKNOWN_BT
            }, 
            next_for_ws = {
              charpos = 140737488319344, 
              type = 88080834, 
              orig_type = UNKNOWN_BT
            }, 
            bracket_pairing_pos = 10, 
            bracket_enclosed_type = RLE, 
            next_en_pos = 1, 
            next_en_type = 4294931312, 
            sos = (L2R | R2L | unknown: 32764), 
            scan_dir = 88080834, 
            disp_pos = 10, 
            disp_prop = 10, 
            stack_idx = 0, 
            level_stack = {{
                next_for_neutral_pos = 140737488319344, 
                next_for_neutral_type = 1, 
                last_strong_type = 7, 
                prev_for_neutral_type = 1, 
                level = 31 '\037', 
                flags = 246 '\366'
              }, {
                next_for_neutral_pos = 21415872, 
                next_for_neutral_type = 0, 
                last_strong_type = 6, 
                prev_for_neutral_type = 1, 
                level = 175 '\257', 
                flags = 1 '\001'
              }, {
                next_for_neutral_pos = 140737488320060, 
                next_for_neutral_type = 4, 
                last_strong_type = 5, 
                prev_for_neutral_type = 3, 
                level = 79 'O', 
                flags = 0 '\000'
              }, {
                next_for_neutral_pos = 140737488316120, 
                next_for_neutral_type = 0, 
                last_strong_type = 6, 
                prev_for_neutral_type = 3, 
                level = 160 '\240', 
                flags = 1 '\001'
              }, {
                next_for_neutral_pos = 140737488325392, 
                next_for_neutral_type = 6, 
                last_strong_type = 0, 
                prev_for_neutral_type = 0, 
                level = 0 '\000', 
                flags = 0 '\000'
              }, {
                next_for_neutral_pos = 0, 
                next_for_neutral_type = 0, 
                last_strong_type = 2, 
                prev_for_neutral_type = 0, 
                level = 0 '\000', 
                flags = 0 '\000'
              }, {
---Type <return> to continue, or q <return> to quit---
                next_for_neutral_pos = 0, 
                next_for_neutral_type = 1, 
                last_strong_type = 7, 
                prev_for_neutral_type = 0, 
                level = 78 'N', 
                flags = 0 '\000'
              }, {
                next_for_neutral_pos = 0, 
                next_for_neutral_type = 1, 
                last_strong_type = 0, 
                prev_for_neutral_type = 0, 
                level = 0 '\000', 
                flags = 0 '\000'
              }, {
                next_for_neutral_pos = -1, 
                next_for_neutral_type = 0, 
                last_strong_type = 2, 
                prev_for_neutral_type = 7, 
                level = 98 'b', 
                flags = 0 '\000'
              }, {
                next_for_neutral_pos = 14583440, 
                next_for_neutral_type = 0, 
                last_strong_type = 0, 
                prev_for_neutral_type = 0, 
                level = 3 '\003', 
                flags = 250 '\372'
              }, {
                next_for_neutral_pos = 140737488325392, 
                next_for_neutral_type = 0, 
                last_strong_type = 2, 
                prev_for_neutral_type = 4, 
                level = 255 '\377', 
                flags = 255 '\377'
              }, {
                next_for_neutral_pos = 140737488325392, 
                next_for_neutral_type = 0, 
                last_strong_type = 0, 
                prev_for_neutral_type = 0, 
                level = 0 '\000', 
                flags = 0 '\000'
              }, {
                next_for_neutral_pos = 16, 
                next_for_neutral_type = 0, 
                last_strong_type = 5, 
                prev_for_neutral_type = 1, 
                level = 78 'N', 
                flags = 0 '\000'
              }, {
                next_for_neutral_pos = 42, 
                next_for_neutral_type = 0, 
                last_strong_type = 0, 
                prev_for_neutral_type = 0, 
                level = 3 '\003', 
                flags = 250 '\372'
              }, {
                next_for_neutral_pos = 1, 
                next_for_neutral_type = 0, 
                last_strong_type = 2, 
                prev_for_neutral_type = 4, 
                level = 255 '\377', 
                flags = 255 '\377'
              }, {
---Type <return> to continue, or q <return> to quit---
                next_for_neutral_pos = 0, 
                next_for_neutral_type = 6, 
                last_strong_type = 0, 
                prev_for_neutral_type = 0, 
                level = 0 '\000', 
                flags = 0 '\000'
              }, {
                next_for_neutral_pos = 0, 
                next_for_neutral_type = 3, 
                last_strong_type = 4, 
                prev_for_neutral_type = 1, 
                level = 0 '\000', 
                flags = 0 '\000'
              }, {
                next_for_neutral_pos = 1217, 
                next_for_neutral_type = 1, 
                last_strong_type = 7, 
                prev_for_neutral_type = 0, 
                level = 78 'N', 
                flags = 0 '\000'
              }, {
                next_for_neutral_pos = 5, 
                next_for_neutral_type = 1, 
                last_strong_type = 0, 
                prev_for_neutral_type = 0, 
                level = 0 '\000', 
                flags = 0 '\000'
              }, {
                next_for_neutral_pos = -1, 
                next_for_neutral_type = 6, 
                last_strong_type = 0, 
                prev_for_neutral_type = 0, 
                level = 0 '\000', 
                flags = 0 '\000'
              }, {
                next_for_neutral_pos = 21419989, 
                next_for_neutral_type = 0, 
                last_strong_type = 0, 
                prev_for_neutral_type = 0, 
                level = 3 '\003', 
                flags = 250 '\372'
              }, {
                next_for_neutral_pos = 140737488325392, 
                next_for_neutral_type = 0, 
                last_strong_type = 2, 
                prev_for_neutral_type = 4, 
                level = 255 '\377', 
                flags = 255 '\377'
              }, {
                next_for_neutral_pos = 140737488325392, 
                next_for_neutral_type = 0, 
                last_strong_type = 0, 
                prev_for_neutral_type = 0, 
                level = 0 '\000', 
                flags = 0 '\000'
              }, {
                next_for_neutral_pos = 1217, 
                next_for_neutral_type = 0, 
                last_strong_type = 5, 
                prev_for_neutral_type = 1, 
                level = 78 'N', 
                flags = 0 '\000'
              }, {
---Type <return> to continue, or q <return> to quit---
                next_for_neutral_pos = 0, 
                next_for_neutral_type = 6, 
                last_strong_type = 0, 
                prev_for_neutral_type = 0, 
                level = 0 '\000', 
                flags = 0 '\000'
              }, {
                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'
              }, {
                next_for_neutral_pos = 46827888, 
                next_for_neutral_type = 0, 
                last_strong_type = 0, 
                prev_for_neutral_type = 0, 
                level = 0 '\000', 
                flags = 0 '\000'
              }, {
                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'
              }, {
                next_for_neutral_pos = 1, 
                next_for_neutral_type = 0, 
                last_strong_type = 0, 
                prev_for_neutral_type = 0, 
                level = 0 '\000', 
                flags = 0 '\000'
              }, {
                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'
              }, {
                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'
              }, {
                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'
              }, {
                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'
              }, {
---Type <return> to continue, or q <return> to quit---
                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'
              }, {
                next_for_neutral_pos = 0, 
                next_for_neutral_type = 0, 
                last_strong_type = 6, 
                prev_for_neutral_type = 0, 
                level = 255 '\377', 
                flags = 255 '\377'
              }, {
                next_for_neutral_pos = 140737488317748, 
                next_for_neutral_type = 4, 
                last_strong_type = 6, 
                prev_for_neutral_type = 4, 
                level = 255 '\377', 
                flags = 255 '\377'
              }, {
                next_for_neutral_pos = 140737488316460, 
                next_for_neutral_type = 0, 
                last_strong_type = 0, 
                prev_for_neutral_type = 0, 
                level = 0 '\000', 
                flags = 0 '\000'
              }, {
                next_for_neutral_pos = 46849344, 
                next_for_neutral_type = 3, 
                last_strong_type = 3, 
                prev_for_neutral_type = 2, 
                level = 107 'k', 
                flags = 244 '\364'
              }, {
                next_for_neutral_pos = 24868864, 
                next_for_neutral_type = 0, 
                last_strong_type = 6, 
                prev_for_neutral_type = 1, 
                level = 255 '\377', 
                flags = 255 '\377'
              }, {
                next_for_neutral_pos = 140737488317744, 
                next_for_neutral_type = 1, 
                last_strong_type = 0, 
                prev_for_neutral_type = 0, 
                level = 0 '\000', 
                flags = 0 '\000'
              }, {
                next_for_neutral_pos = 140737488317828, 
                next_for_neutral_type = 4, 
                last_strong_type = 0, 
                prev_for_neutral_type = 6, 
                level = 255 '\377', 
                flags = 255 '\377'
              }, {
                next_for_neutral_pos = 140737488316540, 
                next_for_neutral_type = 0, 
                last_strong_type = 0, 
                prev_for_neutral_type = 0, 
                level = 0 '\000', 
                flags = 0 '\000'
              }, {
---Type <return> to continue, or q <return> to quit---
                next_for_neutral_pos = 46849344, 
                next_for_neutral_type = 3, 
                last_strong_type = 3, 
                prev_for_neutral_type = 2, 
                level = 107 'k', 
                flags = 244 '\364'
              }, {
                next_for_neutral_pos = 24868864, 
                next_for_neutral_type = 0, 
                last_strong_type = 0, 
                prev_for_neutral_type = 3, 
                level = 255 '\377', 
                flags = 255 '\377'
              }, {
                next_for_neutral_pos = 140737488317824, 
                next_for_neutral_type = 1, 
                last_strong_type = 0, 
                prev_for_neutral_type = 0, 
                level = 0 '\000', 
                flags = 0 '\000'
              }, {
                next_for_neutral_pos = 14525444, 
                next_for_neutral_type = 1, 
                last_strong_type = 0, 
                prev_for_neutral_type = 0, 
                level = 0 '\000', 
                flags = 0 '\000'
              }, {
                next_for_neutral_pos = 21415872, 
                next_for_neutral_type = 6, 
                last_strong_type = 0, 
                prev_for_neutral_type = 0, 
                level = 0 '\000', 
                flags = 0 '\000'
              }, {
                next_for_neutral_pos = 0, 
                next_for_neutral_type = 4, 
                last_strong_type = 5, 
                prev_for_neutral_type = 3, 
                level = 79 'O', 
                flags = 0 '\000'
              }, {
                next_for_neutral_pos = 140737488316840, 
                next_for_neutral_type = 7, 
                last_strong_type = 7, 
                prev_for_neutral_type = 7, 
                level = 255 '\377', 
                flags = 255 '\377'
              }, {
                next_for_neutral_pos = 140737488325392, 
                next_for_neutral_type = 1, 
                last_strong_type = 0, 
                prev_for_neutral_type = 0, 
                level = 0 '\000', 
                flags = 0 '\000'
              }, {
                next_for_neutral_pos = 0, 
                next_for_neutral_type = 5, 
                last_strong_type = 6, 
                prev_for_neutral_type = 4, 
                level = 24 '\030', 
                flags = 246 '\366'
              }, {
---Type <return> to continue, or q <return> to quit---
                next_for_neutral_pos = 0, 
                next_for_neutral_type = 0, 
                last_strong_type = 4, 
                prev_for_neutral_type = 2, 
                level = 160 '\240', 
                flags = 1 '\001'
              }, {
                next_for_neutral_pos = 17512920, 
                next_for_neutral_type = 1, 
                last_strong_type = 4, 
                prev_for_neutral_type = 2, 
                level = 31 '\037', 
                flags = 246 '\366'
              }, {
                next_for_neutral_pos = -1, 
                next_for_neutral_type = 0, 
                last_strong_type = 6, 
                prev_for_neutral_type = 1, 
                level = 244 '\364', 
                flags = 0 '\000'
              }, {
                next_for_neutral_pos = 140737488317968, 
                next_for_neutral_type = 0, 
                last_strong_type = 0, 
                prev_for_neutral_type = 0, 
                level = 3 '\003', 
                flags = 250 '\372'
              }, {
                next_for_neutral_pos = 140737488325392, 
                next_for_neutral_type = 0, 
                last_strong_type = 4, 
                prev_for_neutral_type = 2, 
                level = 255 '\377', 
                flags = 255 '\377'
              }, {
                next_for_neutral_pos = 17512560, 
                next_for_neutral_type = 0, 
                last_strong_type = 2, 
                prev_for_neutral_type = 0, 
                level = 255 '\377', 
                flags = 255 '\377'
              }, {
                next_for_neutral_pos = 140737325249344, 
                next_for_neutral_type = 0, 
                last_strong_type = 6, 
                prev_for_neutral_type = 1, 
                level = 244 '\364', 
                flags = 0 '\000'
              }, {
                next_for_neutral_pos = 140737488322560, 
                next_for_neutral_type = 2, 
                last_strong_type = 2, 
                prev_for_neutral_type = 0, 
                level = 30 '\036', 
                flags = 246 '\366'
              }, {
                next_for_neutral_pos = 0, 
                next_for_neutral_type = 0, 
                last_strong_type = 2, 
                prev_for_neutral_type = 4, 
                level = 255 '\377', 
                flags = 255 '\377'
              }, {
---Type <return> to continue, or q <return> to quit---
                next_for_neutral_pos = 0, 
                next_for_neutral_type = 1, 
                last_strong_type = 0, 
                prev_for_neutral_type = 0, 
                level = 0 '\000', 
                flags = 0 '\000'
              }, {
                next_for_neutral_pos = 0, 
                next_for_neutral_type = 2, 
                last_strong_type = 1, 
                prev_for_neutral_type = 0, 
                level = 0 '\000', 
                flags = 0 '\000'
              }, {
                next_for_neutral_pos = 0, 
                next_for_neutral_type = 4, 
                last_strong_type = 2, 
                prev_for_neutral_type = 0, 
                level = 0 '\000', 
                flags = 0 '\000'
              }, {
                next_for_neutral_pos = 0, 
                next_for_neutral_type = 1, 
                last_strong_type = 0, 
                prev_for_neutral_type = 0, 
                level = 0 '\000', 
                flags = 0 '\000'
              }, {
                next_for_neutral_pos = -1, 
                next_for_neutral_type = 1, 
                last_strong_type = 0, 
                prev_for_neutral_type = 0, 
                level = 0 '\000', 
                flags = 0 '\000'
              }, {
                next_for_neutral_pos = 21419989, 
                next_for_neutral_type = 0, 
                last_strong_type = 0, 
                prev_for_neutral_type = 0, 
                level = 3 '\003', 
                flags = 250 '\372'
              }, {
                next_for_neutral_pos = 140737488325392, 
                next_for_neutral_type = 0, 
                last_strong_type = 2, 
                prev_for_neutral_type = 4, 
                level = 255 '\377', 
                flags = 255 '\377'
              }, {
                next_for_neutral_pos = 140737488325392, 
                next_for_neutral_type = 0, 
                last_strong_type = 0, 
                prev_for_neutral_type = 0, 
                level = 0 '\000', 
                flags = 0 '\000'
              }, {
                next_for_neutral_pos = 1249, 
                next_for_neutral_type = 0, 
                last_strong_type = 5, 
                prev_for_neutral_type = 1, 
                level = 78 'N', 
                flags = 0 '\000'
              }, {
---Type <return> to continue, or q <return> to quit---
                next_for_neutral_pos = 0, 
                next_for_neutral_type = 1, 
                last_strong_type = 0, 
                prev_for_neutral_type = 0, 
                level = 0 '\000', 
                flags = 0 '\000'
              }, {
                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'
              }, {
                next_for_neutral_pos = 46827888, 
                next_for_neutral_type = 0, 
                last_strong_type = 0, 
                prev_for_neutral_type = 0, 
                level = 0 '\000', 
                flags = 0 '\000'
              }, {
                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'
              }, {
                next_for_neutral_pos = 1, 
                next_for_neutral_type = 0, 
                last_strong_type = 0, 
                prev_for_neutral_type = 0, 
                level = 0 '\000', 
                flags = 0 '\000'
              }, {
                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 11 times>, {
                next_for_neutral_pos = 0, 
                next_for_neutral_type = 7, 
                last_strong_type = 7, 
                prev_for_neutral_type = 7, 
                level = 255 '\377', 
                flags = 255 '\377'
              }, {
                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'
              }, {
                next_for_neutral_pos = 4294967295, 
                next_for_neutral_type = 0, 
                last_strong_type = 0, 
                prev_for_neutral_type = 0, 
                level = 0 '\000', 
                flags = 0 '\000'
              }, {
---Type <return> to continue, or q <return> to quit---
                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'
              }, {
                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'
              }, {
                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'
              }, {
                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'
              }, {
                next_for_neutral_pos = 0, 
                next_for_neutral_type = 0, 
                last_strong_type = 0, 
                prev_for_neutral_type = 0, 
                level = 3 '\003', 
                flags = 250 '\372'
              }, {
                next_for_neutral_pos = 0, 
                next_for_neutral_type = 0, 
                last_strong_type = 2, 
                prev_for_neutral_type = 4, 
                level = 255 '\377', 
                flags = 255 '\377'
              }, {
                next_for_neutral_pos = 140737488325392, 
                next_for_neutral_type = 1, 
                last_strong_type = 0, 
                prev_for_neutral_type = 0, 
                level = 0 '\000', 
                flags = 0 '\000'
              }, {
                next_for_neutral_pos = 0, 
                next_for_neutral_type = 0, 
                last_strong_type = 2, 
                prev_for_neutral_type = 0, 
                level = 0 '\000', 
                flags = 0 '\000'
              }, {
                next_for_neutral_pos = 6799399, 
                next_for_neutral_type = 1, 
                last_strong_type = 7, 
                prev_for_neutral_type = 0, 
                level = 78 'N', 
                flags = 0 '\000'
              }, {
---Type <return> to continue, or q <return> to quit---
                next_for_neutral_pos = 0, 
                next_for_neutral_type = 1, 
                last_strong_type = 0, 
                prev_for_neutral_type = 0, 
                level = 0 '\000', 
                flags = 0 '\000'
              }, {
                next_for_neutral_pos = -1, 
                next_for_neutral_type = 0, 
                last_strong_type = 0, 
                prev_for_neutral_type = 0, 
                level = 0 '\000', 
                flags = 0 '\000'
              }, {
                next_for_neutral_pos = 0, 
                next_for_neutral_type = 0, 
                last_strong_type = 0, 
                prev_for_neutral_type = 0, 
                level = 3 '\003', 
                flags = 250 '\372'
              }, {
                next_for_neutral_pos = 140737488325392, 
                next_for_neutral_type = 0, 
                last_strong_type = 2, 
                prev_for_neutral_type = 4, 
                level = 255 '\377', 
                flags = 255 '\377'
              }, {
                next_for_neutral_pos = 140737488325392, 
                next_for_neutral_type = 0, 
                last_strong_type = 0, 
                prev_for_neutral_type = 0, 
                level = 0 '\000', 
                flags = 0 '\000'
              }, {
                next_for_neutral_pos = 16, 
                next_for_neutral_type = 0, 
                last_strong_type = 0, 
                prev_for_neutral_type = 0, 
                level = 3 '\003', 
                flags = 250 '\372'
              }, {
                next_for_neutral_pos = 0, 
                next_for_neutral_type = 0, 
                last_strong_type = 2, 
                prev_for_neutral_type = 4, 
                level = 255 '\377', 
                flags = 255 '\377'
              }, {
                next_for_neutral_pos = 0, 
                next_for_neutral_type = 1, 
                last_strong_type = 0, 
                prev_for_neutral_type = 0, 
                level = 0 '\000', 
                flags = 0 '\000'
              }, {
                next_for_neutral_pos = 0, 
                next_for_neutral_type = 0, 
                last_strong_type = 0, 
                prev_for_neutral_type = 4, 
                level = 202 '\312', 
                flags = 0 '\000'
              }, {
---Type <return> to continue, or q <return> to quit---
                next_for_neutral_pos = 0, 
                next_for_neutral_type = 0, 
                last_strong_type = 0, 
                prev_for_neutral_type = 4, 
                level = 241 '\361', 
                flags = 0 '\000'
              }, {
                next_for_neutral_pos = 0, 
                next_for_neutral_type = 0, 
                last_strong_type = 4, 
                prev_for_neutral_type = 6, 
                level = 255 '\377', 
                flags = 255 '\377'
              }, {
                next_for_neutral_pos = 21419984, 
                next_for_neutral_type = 2, 
                last_strong_type = 1, 
                prev_for_neutral_type = 6, 
                level = 100 'd', 
                flags = 0 '\000'
              }, {
                next_for_neutral_pos = 5629499535654928, 
                next_for_neutral_type = 0, 
                last_strong_type = 2, 
                prev_for_neutral_type = 0, 
                level = 0 '\000', 
                flags = 0 '\000'
              }, {
                next_for_neutral_pos = 0, 
                next_for_neutral_type = 0, 
                last_strong_type = 0, 
                prev_for_neutral_type = 0, 
                level = 3 '\003', 
                flags = 250 '\372'
              }, {
                next_for_neutral_pos = 50058280, 
                next_for_neutral_type = 7, 
                last_strong_type = 6, 
                prev_for_neutral_type = 3, 
                level = 71 'G', 
                flags = 0 '\000'
              }, {
                next_for_neutral_pos = 0, 
                next_for_neutral_type = 0, 
                last_strong_type = 6, 
                prev_for_neutral_type = 7, 
                level = 255 '\377', 
                flags = 255 '\377'
              }, {
                next_for_neutral_pos = 21419984, 
                next_for_neutral_type = 2, 
                last_strong_type = 1, 
                prev_for_neutral_type = 6, 
                level = 100 'd', 
                flags = 0 '\000'
              }, {
                next_for_neutral_pos = 5629499535654928, 
                next_for_neutral_type = 0, 
                last_strong_type = 2, 
                prev_for_neutral_type = 0, 
                level = 0 '\000', 
                flags = 0 '\000'
              }, {
---Type <return> to continue, or q <return> to quit---
                next_for_neutral_pos = 0, 
                next_for_neutral_type = 0, 
                last_strong_type = 0, 
                prev_for_neutral_type = 0, 
                level = 3 '\003', 
                flags = 250 '\372'
              }, {
                next_for_neutral_pos = 50058280, 
                next_for_neutral_type = 7, 
                last_strong_type = 6, 
                prev_for_neutral_type = 3, 
                level = 71 'G', 
                flags = 0 '\000'
              }, {
                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'
              }, {
                next_for_neutral_pos = 0, 
                next_for_neutral_type = 0, 
                last_strong_type = 0, 
                prev_for_neutral_type = 0, 
                level = 3 '\003', 
                flags = 250 '\372'
              }, {
                next_for_neutral_pos = 0, 
                next_for_neutral_type = 0, 
                last_strong_type = 0, 
                prev_for_neutral_type = 0, 
                level = 123 '{', 
                flags = 1 '\001'
              }, {
                next_for_neutral_pos = 140737488322492, 
                next_for_neutral_type = 1, 
                last_strong_type = 1, 
                prev_for_neutral_type = 7, 
                level = 64 '@', 
                flags = 5 '\005'
              }, {
                next_for_neutral_pos = 573, 
                next_for_neutral_type = 0, 
                last_strong_type = 4, 
                prev_for_neutral_type = 7, 
                level = 135 '\207', 
                flags = 1 '\001'
              }, {
                next_for_neutral_pos = 88080841, 
                next_for_neutral_type = 0, 
                last_strong_type = 0, 
                prev_for_neutral_type = 0, 
                level = 3 '\003', 
                flags = 250 '\372'
              }, {
                next_for_neutral_pos = 85899345930, 
                next_for_neutral_type = 0, 
                last_strong_type = 4, 
                prev_for_neutral_type = 5, 
                level = 255 '\377', 
                flags = 255 '\377'
              }, {
---Type <return> to continue, or q <return> to quit---
                next_for_neutral_pos = 0, 
                next_for_neutral_type = 1, 
                last_strong_type = 2, 
                prev_for_neutral_type = 4, 
                level = 0 '\000', 
                flags = 0 '\000'
              }, {
                next_for_neutral_pos = 0, 
                next_for_neutral_type = 0, 
                last_strong_type = 6, 
                prev_for_neutral_type = 4, 
                level = 67 'C', 
                flags = 3 '\003'
              }, {
                next_for_neutral_pos = 21419984, 
                next_for_neutral_type = 2, 
                last_strong_type = 5, 
                prev_for_neutral_type = 3, 
                level = 68 'D', 
                flags = 0 '\000'
              }, {
                next_for_neutral_pos = 92, 
                next_for_neutral_type = 0, 
                last_strong_type = 2, 
                prev_for_neutral_type = 3, 
                level = 39 '\'', 
                flags = 3 '\003'
              }}, 
            string = {
              lstring = XIL(0x146d7d5), 
              s = 0x146d7d0 "\027`\002\004", 
              schars = 21415872, 
              bufpos = 0, 
              from_disp_str = false, 
              unibyte = false
            }, 
            w = 0x0, 
            paragraph_dir = NEUTRAL_DIR, 
            separator_limit = 0, 
            first_elt = false, 
            new_paragraph = false, 
            frame_window_p = false
          }, 
          paragraph_embedding = NEUTRAL_DIR
        }
        wrap_data = <optimized out>
        may_wrap = <optimized out>
        wrap_x = <optimized out>
        wrap_row_used = <optimized out>
        wrap_row_ascent = <optimized out>
        wrap_row_height = <optimized out>
        wrap_row_phys_ascent = <optimized out>
        wrap_row_phys_height = <optimized out>
        wrap_row_extra_line_spacing = <optimized out>
        wrap_row_min_pos = <optimized out>
        wrap_row_min_bpos = <optimized out>
        wrap_row_max_pos = <optimized out>
        wrap_row_max_bpos = <optimized out>
        cvpos = <optimized out>
        min_pos = <optimized out>
        max_pos = <optimized out>
        min_bpos = <optimized out>
        max_bpos = <optimized out>
---Type <return> to continue, or q <return> to quit---
        pending_handle_line_prefix = <optimized out>
        header_line = <optimized out>
        hscroll_this_line = <optimized out>
        first_visible_x = <optimized out>
        last_visible_x = <optimized out>
        x_incr = <optimized out>
        line_number_needed = true
#8  0x00000000004672bd in try_window (window=..., window <at> entry=XIL(0x146d7d5), pos=..., flags=flags <at> entry=1)
    at xdisp.c:17544
        it = {
          window = XIL(0x146d7d5), 
          w = 0x146d7d0, 
          f = 0x146c7c0, 
          method = GET_FROM_BUFFER, 
          stop_charpos = 9689, 
          prev_stop = 9589, 
          base_level_stop = 9589, 
          end_charpos = 13348, 
          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 = 0x2b75418, 
          dpvec = 0x0, 
          dpend = 0x0, 
          dpvec_char_len = 0, 
          dpvec_face_id = 0, 
          saved_face_id = 28, 
          ctl_chars = {XIL(0) <repeats 16 times>}, 
          start = {
            pos = {
              charpos = 9551, 
              bytepos = 9551
            }, 
            overlay_string_index = -1, 
            string_pos = {
              charpos = -1, 
              bytepos = -1
            }, 
            dpvec_index = -1
          }, 
          current = {
            pos = {
              charpos = 9615, 
              bytepos = 9615
            }, 
            overlay_string_index = -1, 
            string_pos = {
              charpos = -1, 
              bytepos = -1
            }, 
            dpvec_index = -1
          }, 
          n_overlay_strings = 0, 
          overlay_strings_charpos = 9589, 
          overlay_strings = {XIL(0) <repeats 16 times>}, 
          string_overlays = {XIL(0) <repeats 16 times>}, 
---Type <return> to continue, or q <return> to quit---
          string = XIL(0), 
          from_overlay = XIL(0), 
          stack = {{
              string = XIL(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 = XIL(0), 
                  slice = {
                    x = XIL(0), 
                    y = XIL(0), 
                    width = XIL(0), 
                    height = XIL(0)
                  }, 
                  image_id = 0
                }, 
                stretch = {
                  object = XIL(0)
                }, 
                xwidget = {
                  object = XIL(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 = XIL(0), 
              area = LEFT_MARGIN_AREA, 
              method = GET_FROM_BUFFER, 
              paragraph_embedding = NEUTRAL_DIR, 
---Type <return> to continue, or q <return> to quit---
              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 = XIL(0), 
              font_height = XIL(0)
            }, {
              string = XIL(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 = XIL(0), 
                  slice = {
                    x = XIL(0), 
                    y = XIL(0), 
                    width = XIL(0), 
                    height = XIL(0)
                  }, 
                  image_id = 0
                }, 
                stretch = {
                  object = XIL(0)
                }, 
                xwidget = {
                  object = XIL(0)
                }
              }, 
              position = {
                charpos = 0, 
                bytepos = 0
              }, 
              current = {
                pos = {
                  charpos = 0, 
                  bytepos = 0
                }, 
                overlay_string_index = 0, 
                string_pos = {
---Type <return> to continue, or q <return> to quit---
                  charpos = 0, 
                  bytepos = 0
                }, 
                dpvec_index = 0
              }, 
              from_overlay = XIL(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 = XIL(0), 
              font_height = XIL(0)
            }, {
              string = XIL(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 = XIL(0), 
                  slice = {
                    x = XIL(0), 
                    y = XIL(0), 
                    width = XIL(0), 
                    height = XIL(0)
                  }, 
                  image_id = 0
                }, 
                stretch = {
                  object = XIL(0)
                }, 
                xwidget = {
                  object = XIL(0)
                }
              }, 
              position = {
                charpos = 0, 
---Type <return> to continue, or q <return> to quit---
                bytepos = 0
              }, 
              current = {
                pos = {
                  charpos = 0, 
                  bytepos = 0
                }, 
                overlay_string_index = 0, 
                string_pos = {
                  charpos = 0, 
                  bytepos = 0
                }, 
                dpvec_index = 0
              }, 
              from_overlay = XIL(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 = XIL(0), 
              font_height = XIL(0)
            }, {
              string = XIL(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 = XIL(0), 
                  slice = {
                    x = XIL(0), 
                    y = XIL(0), 
                    width = XIL(0), 
                    height = XIL(0)
                  }, 
                  image_id = 0
                }, 
---Type <return> to continue, or q <return> to quit---
                stretch = {
                  object = XIL(0)
                }, 
                xwidget = {
                  object = XIL(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 = XIL(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 = XIL(0), 
              font_height = XIL(0)
            }, {
              string = XIL(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 = {
---Type <return> to continue, or q <return> to quit---
                  object = XIL(0), 
                  slice = {
                    x = XIL(0), 
                    y = XIL(0), 
                    width = XIL(0), 
                    height = XIL(0)
                  }, 
                  image_id = 0
                }, 
                stretch = {
                  object = XIL(0)
                }, 
                xwidget = {
                  object = XIL(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 = XIL(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 = XIL(0), 
              font_height = XIL(0)
            }}, 
          sp = 0, 
          selective = 0, 
          what = IT_CHARACTER, 
          face_id = 28, 
          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, 
---Type <return> to continue, or q <return> to quit---
          line_wrap = WINDOW_WRAP, 
          base_face_id = 0, 
          c = 0, 
          len = 1, 
          cmp_it = {
            stop_pos = 9615, 
            id = -1, 
            ch = -2, 
            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 = 10, 
          glyphless_method = GLYPHLESS_DISPLAY_THIN_SPACE, 
          image_id = 0, 
          xwidget = 0x0, 
          slice = {
            x = XIL(0), 
            y = XIL(0), 
            width = XIL(0), 
            height = XIL(0)
          }, 
          space_width = XIL(0), 
          voffset = 0, 
          tab_width = 8, 
          font_height = XIL(0), 
          object = XIL(0xf95825), 
          position = {
            charpos = 9614, 
            bytepos = 9614
          }, 
          truncation_pixel_width = 0, 
          continuation_pixel_width = 16, 
          first_visible_x = 0, 
          last_visible_x = 3798, 
          last_visible_y = 1958, 
          extra_line_spacing = 0, 
          max_extra_line_spacing = 0, 
          override_ascent = -1, 
          override_descent = 0, 
          override_boff = 0, 
          glyph_row = 0x343ea30, 
          area = TEXT_AREA, 
          nglyphs = 1, 
          pixel_width = 16, 
          ascent = 25, 
          descent = 6, 
          max_ascent = 25, 
          max_descent = 6, 
          phys_ascent = 0, 
          phys_descent = 0, 
          max_phys_ascent = 25, 
          max_phys_descent = 6, 
          current_x = 1088, 
          continuation_lines_width = 0, 
          eol_pos = {
---Type <return> to continue, or q <return> to quit---
            charpos = 9614, 
            bytepos = 9614
          }, 
          current_y = 31, 
          first_vpos = 0, 
          vpos = 1, 
          hpos = 68, 
          lnum = 236, 
          lnum_bytepos = 9551, 
          lnum_width = 3, 
          lnum_pixel_width = 80, 
          pt_lnum = 266, 
          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 = 9615, 
            charpos = 9615, 
            ch = 98, 
            nchars = 1, 
            ch_len = 1, 
            type = STRONG_L, 
            type_after_wn = STRONG_L, 
            orig_type = STRONG_L, 
            resolved_level = 0 '\000', 
            isolate_level = 0 '\000', 
            invalid_levels = 0, 
            invalid_isolates = 0, 
            prev = {
              charpos = 9614, 
              type = NEUTRAL_B, 
              orig_type = NEUTRAL_B
            }, 
            last_strong = {
              charpos = 9613, 
              type = UNKNOWN_BT, 
              orig_type = UNKNOWN_BT
            }, 
            next_for_neutral = {
              charpos = -1, 
              type = UNKNOWN_BT, 
              orig_type = UNKNOWN_BT
            }, 
            prev_for_neutral = {
              charpos = 9614, 
              type = STRONG_L, 
              orig_type = STRONG_L
            }, 
            next_for_ws = {
              charpos = -1, 
              type = UNKNOWN_BT, 
              orig_type = UNKNOWN_BT
            }, 
            bracket_pairing_pos = -1, 
            bracket_enclosed_type = UNKNOWN_BT, 
            next_en_pos = 0, 
            next_en_type = UNKNOWN_BT, 
            sos = L2R, 
            scan_dir = 1, 
            disp_pos = 9739, 
            disp_prop = 0, 
---Type <return> to continue, or q <return> to quit---
            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 = XIL(0), 
              s = 0x0, 
              schars = 0, 
              bufpos = 0, 
              from_disp_str = false, 
              unibyte = false
            }, 
            w = 0x146d7d0, 
            paragraph_dir = L2R, 
            separator_limit = -1, 
            first_elt = false, 
            new_paragraph = false, 
            frame_window_p = true
          }, 
          paragraph_embedding = L2R
        }
        last_text_row = 0x343e930
        cursor_vpos = 31
        it_charpos = <optimized out>
#9  0x000000000047f9ab in redisplay_window (window=XIL(0x146d7d5), just_this_one_p=just_this_one_p <at> entry=false)
    at xdisp.c:16991
        d2 = 0
        d6 = 0
        d1 = 0
        d5 = 0
        rtop = 0
        rbot = 0
        old = <optimized out>
        lpoint = <optimized out>
        opoint = <optimized out>
        startp = {
          charpos = 9489, 
          bytepos = 9489
        }
        update_mode_line = true
        it = {
          window = XIL(0x146d7d5), 
          w = 0x146d7d0, 
          f = 0x146c7c0, 
          method = GET_FROM_BUFFER, 
          stop_charpos = 9489, 
          prev_stop = 10932, 
          base_level_stop = 9489, 
          end_charpos = 13348, 
          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, 
---Type <return> to continue, or q <return> to quit---
          avoid_cursor_p = false, 
          dp = 0x2b75418, 
          dpvec = 0x0, 
          dpend = 0x0, 
          dpvec_char_len = 0, 
          dpvec_face_id = 0, 
          saved_face_id = 0, 
          ctl_chars = {XIL(0) <repeats 16 times>}, 
          start = {
            pos = {
              charpos = 10932, 
              bytepos = 10932
            }, 
            overlay_string_index = -1, 
            string_pos = {
              charpos = -1, 
              bytepos = -1
            }, 
            dpvec_index = -1
          }, 
          current = {
            pos = {
              charpos = 9489, 
              bytepos = 9489
            }, 
            overlay_string_index = -1, 
            string_pos = {
              charpos = -1, 
              bytepos = -1
            }, 
            dpvec_index = -1
          }, 
          n_overlay_strings = 0, 
          overlay_strings_charpos = 10932, 
          overlay_strings = {XIL(0) <repeats 16 times>}, 
          string_overlays = {XIL(0) <repeats 16 times>}, 
          string = XIL(0), 
          from_overlay = XIL(0), 
          stack = {{
              string = XIL(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 = {
---Type <return> to continue, or q <return> to quit---
                  object = XIL(0), 
                  slice = {
                    x = XIL(0), 
                    y = XIL(0), 
                    width = XIL(0), 
                    height = XIL(0)
                  }, 
                  image_id = 0
                }, 
                stretch = {
                  object = XIL(0)
                }, 
                xwidget = {
                  object = XIL(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 = XIL(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 = XIL(0), 
              font_height = XIL(0)
            }, {
              string = XIL(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, 
---Type <return> to continue, or q <return> to quit---
                nchars = 0, 
                nbytes = 0, 
                from = 0, 
                to = 0, 
                width = 0
              }, 
              face_id = 0, 
              u = {
                image = {
                  object = XIL(0), 
                  slice = {
                    x = XIL(0), 
                    y = XIL(0), 
                    width = XIL(0), 
                    height = XIL(0)
                  }, 
                  image_id = 0
                }, 
                stretch = {
                  object = XIL(0)
                }, 
                xwidget = {
                  object = XIL(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 = XIL(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 = XIL(0), 
              font_height = XIL(0)
            }, {
              string = XIL(0), 
              string_nchars = 0, 
              end_charpos = 0, 
              stop_charpos = 0, 
              prev_stop = 0, 
              base_level_stop = 0, 
---Type <return> to continue, or q <return> to quit---
              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 = XIL(0), 
                  slice = {
                    x = XIL(0), 
                    y = XIL(0), 
                    width = XIL(0), 
                    height = XIL(0)
                  }, 
                  image_id = 0
                }, 
                stretch = {
                  object = XIL(0)
                }, 
                xwidget = {
                  object = XIL(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 = XIL(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, 
---Type <return> to continue, or q <return> to quit---
              space_width = XIL(0), 
              font_height = XIL(0)
            }, {
              string = XIL(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 = XIL(0), 
                  slice = {
                    x = XIL(0), 
                    y = XIL(0), 
                    width = XIL(0), 
                    height = XIL(0)
                  }, 
                  image_id = 0
                }, 
                stretch = {
                  object = XIL(0)
                }, 
                xwidget = {
                  object = XIL(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 = XIL(0), 
              area = LEFT_MARGIN_AREA, 
              method = GET_FROM_BUFFER, 
              paragraph_embedding = NEUTRAL_DIR, 
---Type <return> to continue, or q <return> to quit---
              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 = XIL(0), 
              font_height = XIL(0)
            }, {
              string = XIL(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 = XIL(0), 
                  slice = {
                    x = XIL(0), 
                    y = XIL(0), 
                    width = XIL(0), 
                    height = XIL(0)
                  }, 
                  image_id = 0
                }, 
                stretch = {
                  object = XIL(0)
                }, 
                xwidget = {
                  object = XIL(0)
                }
              }, 
              position = {
                charpos = 0, 
                bytepos = 0
              }, 
              current = {
                pos = {
                  charpos = 0, 
                  bytepos = 0
                }, 
                overlay_string_index = 0, 
                string_pos = {
---Type <return> to continue, or q <return> to quit---
                  charpos = 0, 
                  bytepos = 0
                }, 
                dpvec_index = 0
              }, 
              from_overlay = XIL(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 = XIL(0), 
              font_height = XIL(0)
            }}, 
          sp = 0, 
          selective = 0, 
          what = IT_CHARACTER, 
          face_id = 28, 
          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 = 34, 
          len = 0, 
          cmp_it = {
            stop_pos = 10935, 
            id = -1, 
            ch = -2, 
            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 = XIL(0), 
            y = XIL(0), 
            width = XIL(0), 
---Type <return> to continue, or q <return> to quit---
            height = XIL(0)
          }, 
          space_width = XIL(0), 
          voffset = 0, 
          tab_width = 8, 
          font_height = XIL(0), 
          object = XIL(0xf95825), 
          position = {
            charpos = 9489, 
            bytepos = 9489
          }, 
          truncation_pixel_width = 0, 
          continuation_pixel_width = 16, 
          first_visible_x = 0, 
          last_visible_x = 3798, 
          last_visible_y = 1958, 
          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 = 997, 
          first_vpos = 0, 
          vpos = -31, 
          hpos = 0, 
          lnum = 0, 
          lnum_bytepos = 0, 
          lnum_width = 0, 
          lnum_pixel_width = 0, 
          pt_lnum = 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 = 9489, 
            charpos = 9489, 
            ch = 0, 
            nchars = -1, 
            ch_len = 0, 
            type = NEUTRAL_B, 
            type_after_wn = NEUTRAL_B, 
            orig_type = NEUTRAL_B, 
            resolved_level = 0 '\000', 
---Type <return> to continue, or q <return> to quit---
            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 = -1, 
              type = UNKNOWN_BT, 
              orig_type = UNKNOWN_BT
            }, 
            prev_for_neutral = {
              charpos = -1, 
              type = UNKNOWN_BT, 
              orig_type = UNKNOWN_BT
            }, 
            next_for_ws = {
              charpos = 0, 
              type = UNKNOWN_BT, 
              orig_type = UNKNOWN_BT
            }, 
            bracket_pairing_pos = -1, 
            bracket_enclosed_type = UNKNOWN_BT, 
            next_en_pos = 0, 
            next_en_type = UNKNOWN_BT, 
            sos = L2R, 
            scan_dir = 0, 
            disp_pos = -1, 
            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 123 times>, {
                next_for_neutral_pos = 0, 
                next_for_neutral_type = 0, 
                last_strong_type = 0, 
                prev_for_neutral_type = 0, 
                level = 218 '\332', 
                flags = 0 '\000'
              }, {
                next_for_neutral_pos = 6, 
                next_for_neutral_type = 1, 
                last_strong_type = 4, 
                prev_for_neutral_type = 5, 
                level = 106 'j', 
                flags = 1 '\001'
              }, {
                next_for_neutral_pos = 1, 
                next_for_neutral_type = 0, 
                last_strong_type = 0, 
                prev_for_neutral_type = 0, 
---Type <return> to continue, or q <return> to quit---
                level = 218 '\332', 
                flags = 0 '\000'
              }, {
                next_for_neutral_pos = 6, 
                next_for_neutral_type = 2, 
                last_strong_type = 0, 
                prev_for_neutral_type = 6, 
                level = 86 'V', 
                flags = 0 '\000'
              }, {
                next_for_neutral_pos = 0, 
                next_for_neutral_type = 0, 
                last_strong_type = 4, 
                prev_for_neutral_type = 5, 
                level = 106 'j', 
                flags = 1 '\001'
              }}, 
            string = {
              lstring = XIL(0), 


              s = 0x5b0f94 <default_value+324> "H\203\304\b\303\017\037\200", 
              schars = 10512, 
              bufpos = 5967961, 
              from_disp_str = false, 
              unibyte = false
            }, 

            w = 0x560169 <buffer_local_value+489>, 
            paragraph_dir = NEUTRAL_DIR, 
            separator_limit = 21424096, 
            first_elt = false, 
            new_paragraph = false, 
            frame_window_p = false
          }, 
          paragraph_embedding = NEUTRAL_DIR
        }
        current_matrix_up_to_date_p = false
        used_current_matrix_p = false
        buffer_unchanged_p = <optimized out>
        temp_scroll_step = false
        rc = 25909504
        centering_position = -1
        last_line_misfit = false
        beg_unchanged = <optimized out>
        end_unchanged = <optimized out>
        frame_line_height = <optimized out>
        margin = <optimized out>
        use_desired_matrix = <optimized out>
        itdata = 0x0
#10 0x00000000004831fb in redisplay_window_0 (window=..., window <at> entry=XIL(0x146d7d5)) at xdisp.c:14751
No locals.
#11 0x00000000005c7cf4 in internal_condition_case_1 (bfun=bfun <at> entry=0x4831d0 <redisplay_window_0>, arg=..., 
    handlers=..., hfun=hfun <at> entry=0x435960 <redisplay_window_error>) at eval.c:1350
        val = XIL(0x4d)
        c = 0x173b780
#12 0x000000000043d160 in redisplay_windows (window=...) at xdisp.c:14731
No locals.
#13 0x000000000046c945 in redisplay_internal () at xdisp.c:14220
        gcscrollbars = <optimized out>
        f_redisplay_flag = <optimized out>
        w = <optimized out>
        sw = <optimized out>
        pending = false
        must_finish = <optimized out>
        tlbufpos = <optimized out>
---Type <return> to continue, or q <return> to quit---
        tlendpos = <optimized out>
        number_of_visible_frames = <optimized out>
        sf = <optimized out>
        polling_stopped_here = false
        tail = <optimized out>
        frame = <optimized out>
        hscroll_retries = 0
        garbaged_frame_retries = 0
        consider_all_windows_p = <optimized out>
        update_miniwindow_p = <optimized out>
#14 0x000000000046eed5 in redisplay () at xdisp.c:13440
No locals.
#15 0x0000000000545cfb in read_char (commandflag=commandflag <at> entry=1, map=..., map <at> entry=XIL(0x36dda13), 
    prev_event=..., used_mouse_menu=used_mouse_menu <at> entry=0x7fffffffd6cb, end_time=end_time <at> entry=0x0)
    at keyboard.c:2484
        echo_current = true
        c = <optimized out>
        jmpcount = <optimized out>
        local_getcjmp = {{
            __jmpbuf = {0, 47894787, 1, 47894784, 43730, 6478751, 31344, 140737488344384}, 
            __mask_was_saved = 16341024, 
            __saved_mask = {
              __val = {13348, 16341029, 6478910, 13348, 6493927, 31344, 5999412, 0, 3, 16341024, 6073606, 43730, 
                16341029, 10932, 31344, 6181603955547184155}
            }
          }}
        save_jump = {{
            __jmpbuf = {-8850944303828534838, 7782313075914899540, 5080973852243150467, -3888857915273982720, 
              -8853780226898623147, 2383264908248154196, 33077798516626462, 1445320133139829774}, 
            __mask_was_saved = 554897104, 
            __saved_mask = {
              __val = {9517247309503668499, 1035370607900819591, 9944197025784225813, 1623865207772288014, 
                6779059137601146575, 2383264915891688718, 9376796853527913053, 1035370607900819682, 
                1445320714031554581, 1067784266828680912, 2267685139, 0}
            }
          }}
        tem = XIL(0x7fffffffdb50)
        save = <optimized out>
        previous_echo_area_message = XIL(0)
        also_record = XIL(0)
        reread = false
        recorded = false
        polling_stopped_here = false
        orig_kboard = 0x18e9980
#16 0x0000000000548ddb in read_key_sequence (keybuf=keybuf <at> entry=0x7fffffffd7b0, prompt=..., prompt <at> entry=XIL(0), 
    dont_downcase_last=dont_downcase_last <at> entry=false, can_return_switch_frame=can_return_switch_frame <at> entry=true, 
    fix_current_buffer=fix_current_buffer <at> entry=true, prevent_redisplay=prevent_redisplay <at> entry=false, bufsize=30)
    at keyboard.c:9151
        interrupted_kboard = 0x18e9980
        interrupted_frame = 0x146c7c0
        key = <optimized out>
        used_mouse_menu = false
        echo_local_start = 0
        last_real_key_start = <optimized out>
        keys_local_start = <optimized out>
        new_binding = <optimized out>
        t = <optimized out>
        echo_start = 0
        keys_start = 0
        current_binding = XIL(0x36dda13)
        first_event = XIL(0)
        first_unbound = 31
---Type <return> to continue, or q <return> to quit---
        mock_input = 0
        fkey = {
          parent = XIL(0x117dcb3), 
          map = XIL(0x117dcb3), 
          start = 0, 
          end = 0
        }
        keytran = {
          parent = XIL(0xd7a293), 
          map = XIL(0xd7a293), 
          start = 0, 
          end = 0
        }
        indec = {
          parent = XIL(0x117dcc3), 
          map = XIL(0x117dcc3), 
          start = 0, 
          end = 0
        }
        shift_translated = false
        delayed_switch_frame = XIL(0)
        original_uppercase = XIL(0)
        original_uppercase_position = -1
        dummyflag = false
        fake_prefixed_keys = XIL(0)
#17 0x000000000054b096 in command_loop_1 () at keyboard.c:1372
        cmd = XIL(0xf)
        keybuf = {make_number(113), XIL(0x9a2906c7fa034c00), make_number(4), XIL(0x1249f63), XIL(0x957bf0), 
          XIL(0x9a2906c7fa034c00), XIL(0x7620), XIL(0), XIL(0xd14e70), make_number(0), XIL(0x7fffffffdb50), 
          XIL(0x5b39e5), XIL(0), XIL(0x78), XIL(0), XIL(0x111da73), make_number(1000), XIL(0x5c72ed), XIL(0x80201), 
          XIL(0x3200005), XIL(0x78), XIL(0), XIL(0x111da73), make_number(1515925), XIL(0x5), XIL(0x7620), XIL(0), 
          XIL(0xd9fea5), XIL(0), XIL(0x9a2906c7fa034c00)}
        i = <optimized out>
        prev_modiff = 103
        prev_buffer = 0x23839d0
#18 0x00000000005c7c27 in internal_condition_case (bfun=bfun <at> entry=0x54adf0 <command_loop_1>, handlers=..., 
    handlers <at> entry=XIL(0x4fb0), hfun=hfun <at> entry=0x53e770 <cmd_error>) at eval.c:1326
        val = XIL(0x4d)
        c = 0x173b660
#19 0x00000000005380dc in command_loop_2 (ignore=..., ignore <at> entry=XIL(0)) at keyboard.c:1114
        val = <optimized out>
#20 0x00000000005c7b6c in internal_catch (tag=..., tag <at> entry=XIL(0xc1e0), func=func <at> entry=0x5380c0 <command_loop_2>, 
    arg=..., arg <at> entry=XIL(0)) at eval.c:1091
        val = XIL(0x4d)
        c = 0x173b540
#21 0x0000000000538099 in command_loop () at keyboard.c:1093
No locals.
#22 0x000000000053e296 in recursive_edit_1 () at keyboard.c:699
        val = <optimized out>
#23 0x000000000053e613 in Frecursive_edit () at keyboard.c:770
No locals.
#24 0x000000000041ad4b in main (argc=<optimized out>, argv=0x7fffffffdb58) at emacs.c:1706
        stack_bottom_variable = 0 '\000'
        do_initial_setlocale = <optimized out>
        dumping = <optimized out>
        skip_args = 0
        no_loadup = false
        junk = 0x0
        dname_arg = 0x0
        ch_to_dir = 0x0
        original_pwd = <optimized out>
        disable_aslr = <optimized out>
        rlim = {
---Type <return> to continue, or q <return> to quit---
          rlim_cur = 10022912, 
          rlim_max = 18446744073709551615
        }
        sockfd = -1

Lisp Backtrace:

eval.c:150: Emacs fatal error: assertion failed: pdl->kind == SPECPDL_BACKTRACE

Thread 1 "emacs" hit Breakpoint 1, terminate_due_to_signal (sig=sig <at> entry=6, 
    backtrace_limit=backtrace_limit <at> entry=2147483647) at emacs.c:363
363	{
The program being debugged stopped while in a function called from GDB.
Evaluation of the expression containing the function
(backtrace_function) will be abandoned.
When the function is done executing, GDB will silently stop.

xbactrace:

(gdb) xbacktrace

eval.c:150: Emacs fatal error: assertion failed: pdl->kind == SPECPDL_BACKTRACE

Thread 1 "emacs" hit Breakpoint 1, terminate_due_to_signal (sig=sig <at> entry=6, 
    backtrace_limit=backtrace_limit <at> entry=2147483647) at emacs.c:363
363	{
The program being debugged stopped while in a function called from GDB.
Evaluation of the expression containing the function
(backtrace_function) will be abandoned.
When the function is done executing, GDB will silently stop.

In GNU Emacs 26.0.50 (build 16, x86_64-pc-linux-gnu, GTK+ Version 3.18.9)
 of 2017-07-12 built on rpluim-ubuntu
Repository revision: 3c32df9903c97ac70e003356d5e09334acf9c39d
Windowing system distributor 'The X.Org Foundation', version 11.0.11804000
System Description:	KDE neon LTS User Edition 5.8

Configured using:
 'configure --enable-checking --enable-check-lisp-object-type'

Configured features:
XPM JPEG TIFF GIF PNG RSVG IMAGEMAGICK SOUND GPM DBUS GCONF GSETTINGS
NOTIFY ACL LIBSELINUX GNUTLS LIBXML2 FREETYPE M17N_FLT LIBOTF XFT ZLIB
TOOLKIT_SCROLL_BARS GTK3 X11




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#27668; Package emacs. (Wed, 12 Jul 2017 14:35:01 GMT) Full text and rfc822 format available.

Message #8 received at 27668 <at> debbugs.gnu.org (full text, mbox):

From: Eli Zaretskii <eliz <at> gnu.org>
To: Robert Pluim <rpluim <at> gmail.com>
Cc: 27668 <at> debbugs.gnu.org
Subject: Re: bug#27668: 26.0.50; Crash with display-line-numbers t
Date: Wed, 12 Jul 2017 17:34:33 +0300
> From: Robert Pluim <rpluim <at> gmail.com>
> Date: Wed, 12 Jul 2017 15:42:28 +0200
> 
> I've had emacs crash on me twice today with the same backtrace. It
> appears to be related to setting display-line-numbers to t, although
> I'd been running the scratch/line-numbers branch for a while without
> any problems.
> 
> It *seems* to happen the second time I do 'C-x C-f' from a buffer that
> has display-line-numbers t, although I'm having a hard time coming up
> with a reliable reproduction method, nor have a got a recipe from
> 'emacs -Q' (yet).
> 
> I have an example trapped in gdb, let me know if you need more info.

Go to the call-stack frame #6, the one in compute_line_metrics, and
type

  (gdb) pgrowx it->glyph_row

Then post the results here.  (If it says "pgrowx" is an unknown
command, you need to "source .gdbinit" first.)

Thanks.




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#27668; Package emacs. (Wed, 12 Jul 2017 14:49:01 GMT) Full text and rfc822 format available.

Message #11 received at submit <at> debbugs.gnu.org (full text, mbox):

From: Robert Pluim <rpluim <at> gmail.com>
To: bug-gnu-emacs <at> gnu.org
Subject: Re: bug#27668: 26.0.50; Crash with display-line-numbers t
Date: Wed, 12 Jul 2017 16:47:57 +0200
Eli Zaretskii <eliz <at> gnu.org> writes:

>> From: Robert Pluim <rpluim <at> gmail.com>
>> Date: Wed, 12 Jul 2017 15:42:28 +0200
>> 
>> I have an example trapped in gdb, let me know if you need more info.
>
> Go to the call-stack frame #6, the one in compute_line_metrics, and
> type
>
>   (gdb) pgrowx it->glyph_row
>
> Then post the results here.  (If it says "pgrowx" is an unknown
> command, you need to "source .gdbinit" first.)

GDB is not a happy bunny, that somehow turned into frame #14. Looks
like I was on line 237 of lisp/net/gnutls.el

#14 0x000000000044fd4f in compute_line_metrics (it=it <at> entry=0x7fffffff8160) at xdisp.c:19775
19775	      eassert (row->pixel_width >= 0);
(gdb) pgrowx it->glyph_row
TEXT: 138 glyphs
  0    0: CHAR[ ] pos=-1 blev=2,btyp=EN w=16 a+d=25+6 face=23 MB AVOID
  1   16: CHAR[2] pos=-1 blev=2,btyp=EN w=16 a+d=25+6 face=23 MB AVOID
  2   32: CHAR[3] pos=-1 blev=2,btyp=EN w=16 a+d=25+6 face=23 MB AVOID
  3   48: CHAR[7] pos=-1 blev=2,btyp=EN w=16 a+d=25+6 face=23 MB AVOID
  4   64: CHAR[ ] pos=-1 blev=2,btyp=EN w=16 a+d=25+6 face=23 MB AVOID
  5   80: CHAR[c] pos=9551 blev=0,btyp=L w=16 a+d=25+6 face=28 MB
  6   96: CHAR[e] pos=9552 blev=0,btyp=L w=16 a+d=25+6 face=28 MB
  7  112: CHAR[r] pos=9553 blev=0,btyp=L w=16 a+d=25+6 face=28 MB
  8  128: CHAR[t] pos=9554 blev=0,btyp=L w=16 a+d=25+6 face=28 MB
  9  144: CHAR[i] pos=9555 blev=0,btyp=L w=16 a+d=25+6 face=28 MB
 10  160: CHAR[f] pos=9556 blev=0,btyp=L w=16 a+d=25+6 face=28 MB
 11  176: CHAR[i] pos=9557 blev=0,btyp=L w=16 a+d=25+6 face=28 MB
 12  192: CHAR[c] pos=9558 blev=0,btyp=L w=16 a+d=25+6 face=28 MB
 13  208: CHAR[a] pos=9559 blev=0,btyp=L w=16 a+d=25+6 face=28 MB
 14  224: CHAR[t] pos=9560 blev=0,btyp=L w=16 a+d=25+6 face=28 MB
 15  240: CHAR[e] pos=9561 blev=0,btyp=L w=16 a+d=25+6 face=28 MB
 16  256: CHAR['] pos=9562 blev=0,btyp=L w=16 a+d=25+6 face=28 MB
 17  272: CHAR[s] pos=9563 blev=0,btyp=L w=16 a+d=25+6 face=28 MB
 18  288: CHAR[ ] pos=9564 blev=0,btyp=L w=16 a+d=25+6 face=28 MB
 19  304: CHAR[h] pos=9565 blev=0,btyp=L w=16 a+d=25+6 face=28 MB
 20  320: CHAR[o] pos=9566 blev=0,btyp=L w=16 a+d=25+6 face=28 MB
 21  336: CHAR[s] pos=9567 blev=0,btyp=L w=16 a+d=25+6 face=28 MB
 22  352: CHAR[t] pos=9568 blev=0,btyp=L w=16 a+d=25+6 face=28 MB
 23  368: CHAR[ ] pos=9569 blev=0,btyp=L w=16 a+d=25+6 face=28 MB
 24  384: CHAR[n] pos=9570 blev=0,btyp=L w=16 a+d=25+6 face=28 MB
 25  400: CHAR[a] pos=9571 blev=0,btyp=L w=16 a+d=25+6 face=28 MB
 26  416: CHAR[m] pos=9572 blev=0,btyp=L w=16 a+d=25+6 face=28 MB
 27  432: CHAR[e] pos=9573 blev=0,btyp=L w=16 a+d=25+6 face=28 MB
 28  448: CHAR[.] pos=9574 blev=0,btyp=L w=16 a+d=25+6 face=28 MB
 29  464: CHAR[ ] pos=9575 blev=0,btyp=L w=16 a+d=25+6 face=28 MB
 30  480: CHAR[ ] pos=9576 blev=0,btyp=L w=16 a+d=25+6 face=28 MB
 31  496: CHAR[T] pos=9577 blev=0,btyp=L w=16 a+d=25+6 face=28 MB
 32  512: CHAR[h] pos=9578 blev=0,btyp=L w=16 a+d=25+6 face=28 MB
 33  528: CHAR[e] pos=9579 blev=0,btyp=L w=16 a+d=25+6 face=28 MB
 34  544: CHAR[ ] pos=9580 blev=0,btyp=L w=16 a+d=25+6 face=28 MB
 35  560: CHAR[e] pos=9581 blev=0,btyp=L w=16 a+d=25+6 face=28 MB
 36  576: CHAR[x] pos=9582 blev=0,btyp=L w=16 a+d=25+6 face=28 MB
 37  592: CHAR[a] pos=9583 blev=0,btyp=L w=16 a+d=25+6 face=28 MB
 38  608: CHAR[c] pos=9584 blev=0,btyp=L w=16 a+d=25+6 face=28 MB
 39  624: CHAR[t] pos=9585 blev=0,btyp=L w=16 a+d=25+6 face=28 MB
 40  640: CHAR[ ] pos=9586 blev=0,btyp=L w=16 a+d=25+6 face=28 MB
 41  656: CHAR[v] pos=9587 blev=0,btyp=L w=16 a+d=25+6 face=28 MB
 42  672: CHAR[e] pos=9588 blev=0,btyp=L w=16 a+d=25+6 face=28 MB
 43  688: CHAR[r] pos=9589 blev=0,btyp=L w=16 a+d=25+6 face=28 MB
 44  704: CHAR[i] pos=9590 blev=0,btyp=L w=16 a+d=25+6 face=28 MB
 45  720: CHAR[f] pos=9591 blev=0,btyp=L w=16 a+d=25+6 face=28 MB
 46  736: CHAR[i] pos=9592 blev=0,btyp=L w=16 a+d=25+6 face=28 MB
 47  752: CHAR[c] pos=9593 blev=0,btyp=L w=16 a+d=25+6 face=28 MB
 48  768: CHAR[a] pos=9594 blev=0,btyp=L w=16 a+d=25+6 face=28 MB
 49  784: CHAR[t] pos=9595 blev=0,btyp=L w=16 a+d=25+6 face=28 MB
 50  800: CHAR[i] pos=9596 blev=0,btyp=L w=16 a+d=25+6 face=28 MB
 51  816: CHAR[o] pos=9597 blev=0,btyp=L w=16 a+d=25+6 face=28 MB
 52  832: CHAR[n] pos=9598 blev=0,btyp=L w=16 a+d=25+6 face=28 MB
 53  848: CHAR[ ] pos=9599 blev=0,btyp=L w=16 a+d=25+6 face=28 MB
 54  864: CHAR[a] pos=9600 blev=0,btyp=L w=16 a+d=25+6 face=28 MB
 55  880: CHAR[l] pos=9601 blev=0,btyp=L w=16 a+d=25+6 face=28 MB
 56  896: CHAR[g] pos=9602 blev=0,btyp=L w=16 a+d=25+6 face=28 MB
 57  912: CHAR[o] pos=9603 blev=0,btyp=L w=16 a+d=25+6 face=28 MB
 58  928: CHAR[r] pos=9604 blev=0,btyp=L w=16 a+d=25+6 face=28 MB
 59  944: CHAR[i] pos=9605 blev=0,btyp=L w=16 a+d=25+6 face=28 MB
 60  960: CHAR[t] pos=9606 blev=0,btyp=L w=16 a+d=25+6 face=28 MB
 61  976: CHAR[h] pos=9607 blev=0,btyp=L w=16 a+d=25+6 face=28 MB
---Type <return> to continue, or q <return> to quit---
 62  992: CHAR[m] pos=9608 blev=0,btyp=L w=16 a+d=25+6 face=28 MB
 63 1008: CHAR[ ] pos=9609 blev=0,btyp=L w=16 a+d=25+6 face=28 MB
 64 1024: CHAR[i] pos=9610 blev=0,btyp=L w=16 a+d=25+6 face=28 MB
 65 1040: CHAR[s] pos=9611 blev=0,btyp=L w=16 a+d=25+6 face=28 MB
 66 1056: CHAR[ ] pos=9612 blev=0,btyp=L w=16 a+d=25+6 face=28 MB
 67 1072: CHAR[a] pos=9613 blev=0,btyp=L w=16 a+d=25+6 face=28 MB
 68 1088: CHAR[ ] pos=0 blev=0,btyp=B w=16 a+d=25+6 face=28 MB
 69 1104: CHAR[s] pos=6237 blev=0,btyp=L w=16 a+d=25+6 MB
 70 1120: CHAR[ ] pos=0 blev=0,btyp=B w=16 a+d=25+6 MB
 71 1136:  str=0xc8676d[9683324] w=-15971 a+d=147+0 MB PAD N/A [ slice=49485,147,0,0
 72 -14835:  str=0xc8671b[9683580] w=-15715 a+d=147+0 MB PAD AVOID [ slice=49741,147,0,0
 74 -46113: CHAR[c] pos=9551 blev=0,btyp=L w=16 a+d=25+6 face=28 MB
 75 -46097: CHAR[e] pos=9552 blev=0,btyp=L w=16 a+d=25+6 face=28 MB
 76 -46081: CHAR[r] pos=9553 blev=0,btyp=L w=16 a+d=25+6 face=28 MB
 77 -46065: CHAR[t] pos=9554 blev=0,btyp=L w=16 a+d=25+6 face=28 MB
 78 -46049: CHAR[i] pos=9555 blev=0,btyp=L w=16 a+d=25+6 face=28 MB
 79 -46033: CHAR[f] pos=9556 blev=0,btyp=L w=16 a+d=25+6 face=28 MB
 80 -46017: CHAR[i] pos=9557 blev=0,btyp=L w=16 a+d=25+6 face=28 MB
 81 -46001: CHAR[c] pos=9558 blev=0,btyp=L w=16 a+d=25+6 face=28 MB
 82 -45985: CHAR[a] pos=9559 blev=0,btyp=L w=16 a+d=25+6 face=28 MB
 83 -45969: CHAR[t] pos=9560 blev=0,btyp=L w=16 a+d=25+6 face=28 MB
 84 -45953: CHAR[e] pos=9561 blev=0,btyp=L w=16 a+d=25+6 face=28 MB
 85 -45937: CHAR['] pos=9562 blev=0,btyp=L w=16 a+d=25+6 face=28 MB
 86 -45921: CHAR[s] pos=9563 blev=0,btyp=L w=16 a+d=25+6 face=28 MB
 87 -45905: CHAR[ ] pos=9564 blev=0,btyp=L w=16 a+d=25+6 face=28 MB
 88 -45889: CHAR[h] pos=9565 blev=0,btyp=L w=16 a+d=25+6 face=28 MB
 89 -45873: CHAR[o] pos=9566 blev=0,btyp=L w=16 a+d=25+6 face=28 MB
 90 -45857: CHAR[s] pos=9567 blev=0,btyp=L w=16 a+d=25+6 face=28 MB
 91 -45841: CHAR[t] pos=9568 blev=0,btyp=L w=16 a+d=25+6 face=28 MB
 92 -45825: CHAR[ ] pos=9569 blev=0,btyp=L w=16 a+d=25+6 face=28 MB
 93 -45809: CHAR[n] pos=9570 blev=0,btyp=L w=16 a+d=25+6 face=28 MB
 94 -45793: CHAR[a] pos=9571 blev=0,btyp=L w=16 a+d=25+6 face=28 MB
 95 -45777: CHAR[m] pos=9572 blev=0,btyp=L w=16 a+d=25+6 face=28 MB
 96 -45761: CHAR[e] pos=9573 blev=0,btyp=L w=16 a+d=25+6 face=28 MB
 97 -45745: CHAR[.] pos=9574 blev=0,btyp=L w=16 a+d=25+6 face=28 MB
 98 -45729: CHAR[ ] pos=9575 blev=0,btyp=L w=16 a+d=25+6 face=28 MB
 99 -45713: CHAR[ ] pos=9576 blev=0,btyp=L w=16 a+d=25+6 face=28 MB
100 -45697: CHAR[T] pos=9577 blev=0,btyp=L w=16 a+d=25+6 face=28 MB
101 -45681: CHAR[h] pos=9578 blev=0,btyp=L w=16 a+d=25+6 face=28 MB
102 -45665: CHAR[e] pos=9579 blev=0,btyp=L w=16 a+d=25+6 face=28 MB
103 -45649: CHAR[ ] pos=9580 blev=0,btyp=L w=16 a+d=25+6 face=28 MB
104 -45633: CHAR[e] pos=9581 blev=0,btyp=L w=16 a+d=25+6 face=28 MB
105 -45617: CHAR[x] pos=9582 blev=0,btyp=L w=16 a+d=25+6 face=28 MB
106 -45601: CHAR[a] pos=9583 blev=0,btyp=L w=16 a+d=25+6 face=28 MB
107 -45585: CHAR[c] pos=9584 blev=0,btyp=L w=16 a+d=25+6 face=28 MB
108 -45569: CHAR[t] pos=9585 blev=0,btyp=L w=16 a+d=25+6 face=28 MB
109 -45553: CHAR[ ] pos=9586 blev=0,btyp=L w=16 a+d=25+6 face=28 MB
110 -45537: CHAR[v] pos=9587 blev=0,btyp=L w=16 a+d=25+6 face=28 MB
111 -45521: CHAR[e] pos=9588 blev=0,btyp=L w=16 a+d=25+6 face=28 MB
112 -45505: CHAR[r] pos=9589 blev=0,btyp=L w=16 a+d=25+6 face=28 MB
113 -45489: CHAR[i] pos=9590 blev=0,btyp=L w=16 a+d=25+6 face=28 MB
114 -45473: CHAR[f] pos=9591 blev=0,btyp=L w=16 a+d=25+6 face=28 MB
115 -45457: CHAR[i] pos=9592 blev=0,btyp=L w=16 a+d=25+6 face=28 MB
116 -45441: CHAR[c] pos=9593 blev=0,btyp=L w=16 a+d=25+6 face=28 MB
117 -45425: CHAR[a] pos=9594 blev=0,btyp=L w=16 a+d=25+6 face=28 MB
118 -45409: CHAR[t] pos=9595 blev=0,btyp=L w=16 a+d=25+6 face=28 MB
119 -45393: CHAR[i] pos=9596 blev=0,btyp=L w=16 a+d=25+6 face=28 MB
120 -45377: CHAR[o] pos=9597 blev=0,btyp=L w=16 a+d=25+6 face=28 MB
121 -45361: CHAR[n] pos=9598 blev=0,btyp=L w=16 a+d=25+6 face=28 MB
122 -45345: CHAR[ ] pos=9599 blev=0,btyp=L w=16 a+d=25+6 face=28 MB
123 -45329: CHAR[a] pos=9600 blev=0,btyp=L w=16 a+d=25+6 face=28 MB
124 -45313: CHAR[l] pos=9601 blev=0,btyp=L w=16 a+d=25+6 face=28 MB
---Type <return> to continue, or q <return> to quit---
125 -45297: CHAR[g] pos=9602 blev=0,btyp=L w=16 a+d=25+6 face=28 MB
126 -45281: CHAR[o] pos=9603 blev=0,btyp=L w=16 a+d=25+6 face=28 MB
127 -45265: CHAR[r] pos=9604 blev=0,btyp=L w=16 a+d=25+6 face=28 MB
128 -45249: CHAR[i] pos=9605 blev=0,btyp=L w=16 a+d=25+6 face=28 MB
129 -45233: CHAR[t] pos=9606 blev=0,btyp=L w=16 a+d=25+6 face=28 MB
130 -45217: CHAR[h] pos=9607 blev=0,btyp=L w=16 a+d=25+6 face=28 MB
131 -45201: CHAR[m] pos=9608 blev=0,btyp=L w=16 a+d=25+6 face=28 MB
132 -45185: CHAR[ ] pos=9609 blev=0,btyp=L w=16 a+d=25+6 face=28 MB
133 -45169: CHAR[i] pos=9610 blev=0,btyp=L w=16 a+d=25+6 face=28 MB
134 -45153: CHAR[s] pos=9611 blev=0,btyp=L w=16 a+d=25+6 face=28 MB
135 -45137: CHAR[ ] pos=9612 blev=0,btyp=L w=16 a+d=25+6 face=28 MB
136 -45121: CHAR[a] pos=9613 blev=0,btyp=L w=16 a+d=25+6 face=28 MB
137 -45105: CHAR[ ] pos=0 blev=0,btyp=B w=16 a+d=25+6 face=28 MB





Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#27668; Package emacs. (Wed, 12 Jul 2017 15:06:01 GMT) Full text and rfc822 format available.

Message #14 received at submit <at> debbugs.gnu.org (full text, mbox):

From: Eli Zaretskii <eliz <at> gnu.org>
To: bug-gnu-emacs <at> gnu.org
Subject: Re: bug#27668: 26.0.50; Crash with display-line-numbers t
Date: Wed, 12 Jul 2017 18:05:33 +0300
> From: Robert Pluim <rpluim <at> gmail.com>
> Date: Wed, 12 Jul 2017 16:47:57 +0200
> 
> (gdb) pgrowx it->glyph_row
> TEXT: 138 glyphs
>   0    0: CHAR[ ] pos=-1 blev=2,btyp=EN w=16 a+d=25+6 face=23 MB AVOID
>   1   16: CHAR[2] pos=-1 blev=2,btyp=EN w=16 a+d=25+6 face=23 MB AVOID
>   2   32: CHAR[3] pos=-1 blev=2,btyp=EN w=16 a+d=25+6 face=23 MB AVOID
>   3   48: CHAR[7] pos=-1 blev=2,btyp=EN w=16 a+d=25+6 face=23 MB AVOID
>   4   64: CHAR[ ] pos=-1 blev=2,btyp=EN w=16 a+d=25+6 face=23 MB AVOID
>   5   80: CHAR[c] pos=9551 blev=0,btyp=L w=16 a+d=25+6 face=28 MB
>   6   96: CHAR[e] pos=9552 blev=0,btyp=L w=16 a+d=25+6 face=28 MB
>   7  112: CHAR[r] pos=9553 blev=0,btyp=L w=16 a+d=25+6 face=28 MB
>   8  128: CHAR[t] pos=9554 blev=0,btyp=L w=16 a+d=25+6 face=28 MB
>   9  144: CHAR[i] pos=9555 blev=0,btyp=L w=16 a+d=25+6 face=28 MB
>  10  160: CHAR[f] pos=9556 blev=0,btyp=L w=16 a+d=25+6 face=28 MB
>  11  176: CHAR[i] pos=9557 blev=0,btyp=L w=16 a+d=25+6 face=28 MB
>  12  192: CHAR[c] pos=9558 blev=0,btyp=L w=16 a+d=25+6 face=28 MB
>  13  208: CHAR[a] pos=9559 blev=0,btyp=L w=16 a+d=25+6 face=28 MB
>  14  224: CHAR[t] pos=9560 blev=0,btyp=L w=16 a+d=25+6 face=28 MB
>  15  240: CHAR[e] pos=9561 blev=0,btyp=L w=16 a+d=25+6 face=28 MB
>  16  256: CHAR['] pos=9562 blev=0,btyp=L w=16 a+d=25+6 face=28 MB
>  17  272: CHAR[s] pos=9563 blev=0,btyp=L w=16 a+d=25+6 face=28 MB
>  18  288: CHAR[ ] pos=9564 blev=0,btyp=L w=16 a+d=25+6 face=28 MB
>  19  304: CHAR[h] pos=9565 blev=0,btyp=L w=16 a+d=25+6 face=28 MB
>  20  320: CHAR[o] pos=9566 blev=0,btyp=L w=16 a+d=25+6 face=28 MB
>  21  336: CHAR[s] pos=9567 blev=0,btyp=L w=16 a+d=25+6 face=28 MB
>  22  352: CHAR[t] pos=9568 blev=0,btyp=L w=16 a+d=25+6 face=28 MB
>  23  368: CHAR[ ] pos=9569 blev=0,btyp=L w=16 a+d=25+6 face=28 MB
>  24  384: CHAR[n] pos=9570 blev=0,btyp=L w=16 a+d=25+6 face=28 MB
>  25  400: CHAR[a] pos=9571 blev=0,btyp=L w=16 a+d=25+6 face=28 MB
>  26  416: CHAR[m] pos=9572 blev=0,btyp=L w=16 a+d=25+6 face=28 MB
>  27  432: CHAR[e] pos=9573 blev=0,btyp=L w=16 a+d=25+6 face=28 MB
>  28  448: CHAR[.] pos=9574 blev=0,btyp=L w=16 a+d=25+6 face=28 MB
>  29  464: CHAR[ ] pos=9575 blev=0,btyp=L w=16 a+d=25+6 face=28 MB
>  30  480: CHAR[ ] pos=9576 blev=0,btyp=L w=16 a+d=25+6 face=28 MB
>  31  496: CHAR[T] pos=9577 blev=0,btyp=L w=16 a+d=25+6 face=28 MB
>  32  512: CHAR[h] pos=9578 blev=0,btyp=L w=16 a+d=25+6 face=28 MB
>  33  528: CHAR[e] pos=9579 blev=0,btyp=L w=16 a+d=25+6 face=28 MB
>  34  544: CHAR[ ] pos=9580 blev=0,btyp=L w=16 a+d=25+6 face=28 MB
>  35  560: CHAR[e] pos=9581 blev=0,btyp=L w=16 a+d=25+6 face=28 MB
>  36  576: CHAR[x] pos=9582 blev=0,btyp=L w=16 a+d=25+6 face=28 MB
>  37  592: CHAR[a] pos=9583 blev=0,btyp=L w=16 a+d=25+6 face=28 MB
>  38  608: CHAR[c] pos=9584 blev=0,btyp=L w=16 a+d=25+6 face=28 MB
>  39  624: CHAR[t] pos=9585 blev=0,btyp=L w=16 a+d=25+6 face=28 MB
>  40  640: CHAR[ ] pos=9586 blev=0,btyp=L w=16 a+d=25+6 face=28 MB
>  41  656: CHAR[v] pos=9587 blev=0,btyp=L w=16 a+d=25+6 face=28 MB
>  42  672: CHAR[e] pos=9588 blev=0,btyp=L w=16 a+d=25+6 face=28 MB
>  43  688: CHAR[r] pos=9589 blev=0,btyp=L w=16 a+d=25+6 face=28 MB
>  44  704: CHAR[i] pos=9590 blev=0,btyp=L w=16 a+d=25+6 face=28 MB
>  45  720: CHAR[f] pos=9591 blev=0,btyp=L w=16 a+d=25+6 face=28 MB
>  46  736: CHAR[i] pos=9592 blev=0,btyp=L w=16 a+d=25+6 face=28 MB
>  47  752: CHAR[c] pos=9593 blev=0,btyp=L w=16 a+d=25+6 face=28 MB
>  48  768: CHAR[a] pos=9594 blev=0,btyp=L w=16 a+d=25+6 face=28 MB
>  49  784: CHAR[t] pos=9595 blev=0,btyp=L w=16 a+d=25+6 face=28 MB
>  50  800: CHAR[i] pos=9596 blev=0,btyp=L w=16 a+d=25+6 face=28 MB
>  51  816: CHAR[o] pos=9597 blev=0,btyp=L w=16 a+d=25+6 face=28 MB
>  52  832: CHAR[n] pos=9598 blev=0,btyp=L w=16 a+d=25+6 face=28 MB
>  53  848: CHAR[ ] pos=9599 blev=0,btyp=L w=16 a+d=25+6 face=28 MB
>  54  864: CHAR[a] pos=9600 blev=0,btyp=L w=16 a+d=25+6 face=28 MB
>  55  880: CHAR[l] pos=9601 blev=0,btyp=L w=16 a+d=25+6 face=28 MB
>  56  896: CHAR[g] pos=9602 blev=0,btyp=L w=16 a+d=25+6 face=28 MB
>  57  912: CHAR[o] pos=9603 blev=0,btyp=L w=16 a+d=25+6 face=28 MB
>  58  928: CHAR[r] pos=9604 blev=0,btyp=L w=16 a+d=25+6 face=28 MB
>  59  944: CHAR[i] pos=9605 blev=0,btyp=L w=16 a+d=25+6 face=28 MB
>  60  960: CHAR[t] pos=9606 blev=0,btyp=L w=16 a+d=25+6 face=28 MB
>  61  976: CHAR[h] pos=9607 blev=0,btyp=L w=16 a+d=25+6 face=28 MB
> ---Type <return> to continue, or q <return> to quit---
>  62  992: CHAR[m] pos=9608 blev=0,btyp=L w=16 a+d=25+6 face=28 MB
>  63 1008: CHAR[ ] pos=9609 blev=0,btyp=L w=16 a+d=25+6 face=28 MB
>  64 1024: CHAR[i] pos=9610 blev=0,btyp=L w=16 a+d=25+6 face=28 MB
>  65 1040: CHAR[s] pos=9611 blev=0,btyp=L w=16 a+d=25+6 face=28 MB
>  66 1056: CHAR[ ] pos=9612 blev=0,btyp=L w=16 a+d=25+6 face=28 MB
>  67 1072: CHAR[a] pos=9613 blev=0,btyp=L w=16 a+d=25+6 face=28 MB
>  68 1088: CHAR[ ] pos=0 blev=0,btyp=B w=16 a+d=25+6 face=28 MB
>  69 1104: CHAR[s] pos=6237 blev=0,btyp=L w=16 a+d=25+6 MB
>  70 1120: CHAR[ ] pos=0 blev=0,btyp=B w=16 a+d=25+6 MB
>  71 1136:  str=0xc8676d[9683324] w=-15971 a+d=147+0 MB PAD N/A [ slice=49485,147,0,0
>  72 -14835:  str=0xc8671b[9683580] w=-15715 a+d=147+0 MB PAD AVOID [ slice=49741,147,0,0
>  74 -46113: CHAR[c] pos=9551 blev=0,btyp=L w=16 a+d=25+6 face=28 MB

Does the text of this line give you enough hint to tell me what was on
this line?  In particular, does it make sense that the line had 138
glyphs?  Because it looks like everything after glyph 68 is garbage,
although I don't yet have any idea how it ended up there.

Can you reproduce the buffer/window that showed this text (in another
session)?  Because if yes, I'd like some information from there.

Thanks.




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#27668; Package emacs. (Wed, 12 Jul 2017 15:19:02 GMT) Full text and rfc822 format available.

Message #17 received at submit <at> debbugs.gnu.org (full text, mbox):

From: Robert Pluim <rpluim <at> gmail.com>
To: bug-gnu-emacs <at> gnu.org
Subject: Re: bug#27668: 26.0.50; Crash with display-line-numbers t
Date: Wed, 12 Jul 2017 17:17:31 +0200
Eli Zaretskii <eliz <at> gnu.org> writes:

>> From: Robert Pluim <rpluim <at> gmail.com>
>> Date: Wed, 12 Jul 2017 16:47:57 +0200
>>  62  992: CHAR[m] pos=9608 blev=0,btyp=L w=16 a+d=25+6 face=28 MB
>>  63 1008: CHAR[ ] pos=9609 blev=0,btyp=L w=16 a+d=25+6 face=28 MB
>>  64 1024: CHAR[i] pos=9610 blev=0,btyp=L w=16 a+d=25+6 face=28 MB
>>  65 1040: CHAR[s] pos=9611 blev=0,btyp=L w=16 a+d=25+6 face=28 MB
>>  66 1056: CHAR[ ] pos=9612 blev=0,btyp=L w=16 a+d=25+6 face=28 MB
>>  67 1072: CHAR[a] pos=9613 blev=0,btyp=L w=16 a+d=25+6 face=28 MB
>>  68 1088: CHAR[ ] pos=0 blev=0,btyp=B w=16 a+d=25+6 face=28 MB
>>  69 1104: CHAR[s] pos=6237 blev=0,btyp=L w=16 a+d=25+6 MB
>>  70 1120: CHAR[ ] pos=0 blev=0,btyp=B w=16 a+d=25+6 MB
>>  71 1136:  str=0xc8676d[9683324] w=-15971 a+d=147+0 MB PAD N/A [ slice=49485,147,0,0
>>  72 -14835:  str=0xc8671b[9683580] w=-15715 a+d=147+0 MB PAD AVOID [ slice=49741,147,0,0
>>  74 -46113: CHAR[c] pos=9551 blev=0,btyp=L w=16 a+d=25+6 face=28 MB
>
> Does the text of this line give you enough hint to tell me what was on
> this line?  In particular, does it make sense that the line had 138
> glyphs?  Because it looks like everything after glyph 68 is garbage,
> although I don't yet have any idea how it ended up there.
>

Yes, as I said it's line 237 of lisp/net/gnutls.el, it's definitely
not 138 glyphs:

----begin----
certificate's host name.  The exact verification algorithm is a
---end---

> Can you reproduce the buffer/window that showed this text (in another
> session)?  Because if yes, I'd like some information from there.
>

Yes, although as I said I haven't found a reproduction yet, and it's
happened with other files as well (but only with display-line-numbers
t in the buffer displaying the file).

Regards

Robert





Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#27668; Package emacs. (Wed, 12 Jul 2017 16:21:02 GMT) Full text and rfc822 format available.

Message #20 received at submit <at> debbugs.gnu.org (full text, mbox):

From: Eli Zaretskii <eliz <at> gnu.org>
To: bug-gnu-emacs <at> gnu.org
Subject: Re: bug#27668: 26.0.50; Crash with display-line-numbers t
Date: Wed, 12 Jul 2017 19:20:32 +0300
> From: Robert Pluim <rpluim <at> gmail.com>
> Date: Wed, 12 Jul 2017 17:17:31 +0200
> 
> Eli Zaretskii <eliz <at> gnu.org> writes:
> 
> >> From: Robert Pluim <rpluim <at> gmail.com>
> >> Date: Wed, 12 Jul 2017 16:47:57 +0200
> >>  62  992: CHAR[m] pos=9608 blev=0,btyp=L w=16 a+d=25+6 face=28 MB
> >>  63 1008: CHAR[ ] pos=9609 blev=0,btyp=L w=16 a+d=25+6 face=28 MB
> >>  64 1024: CHAR[i] pos=9610 blev=0,btyp=L w=16 a+d=25+6 face=28 MB
> >>  65 1040: CHAR[s] pos=9611 blev=0,btyp=L w=16 a+d=25+6 face=28 MB
> >>  66 1056: CHAR[ ] pos=9612 blev=0,btyp=L w=16 a+d=25+6 face=28 MB
> >>  67 1072: CHAR[a] pos=9613 blev=0,btyp=L w=16 a+d=25+6 face=28 MB
> >>  68 1088: CHAR[ ] pos=0 blev=0,btyp=B w=16 a+d=25+6 face=28 MB
> >>  69 1104: CHAR[s] pos=6237 blev=0,btyp=L w=16 a+d=25+6 MB
> >>  70 1120: CHAR[ ] pos=0 blev=0,btyp=B w=16 a+d=25+6 MB
> >>  71 1136:  str=0xc8676d[9683324] w=-15971 a+d=147+0 MB PAD N/A [ slice=49485,147,0,0
> >>  72 -14835:  str=0xc8671b[9683580] w=-15715 a+d=147+0 MB PAD AVOID [ slice=49741,147,0,0
> >>  74 -46113: CHAR[c] pos=9551 blev=0,btyp=L w=16 a+d=25+6 face=28 MB
> >
> > Does the text of this line give you enough hint to tell me what was on
> > this line?  In particular, does it make sense that the line had 138
> > glyphs?  Because it looks like everything after glyph 68 is garbage,
> > although I don't yet have any idea how it ended up there.
> >
> 
> Yes, as I said it's line 237 of lisp/net/gnutls.el, it's definitely
> not 138 glyphs:

Well, I cannot know what kind of display features you have there; what
is just 63 characters in the file could have all kind of stuff
appended to it on display...

Anyway, what do these 2 show:

  (gdb) p it->glyph_row->enabled_p
  (gdb) p it->glyph_row->displays_text_p

Also, is the previous screen line OK?  This will show:

  (gdb) pgrowx (it->glyph_row-1)

Eventually, if nothing else gives a clue, please continue running
Emacs under GDB, and if the crashes are always in
compute_line_metrics, show the offending glyph_row each time it
crashes.  Perhaps the data will give some hint about what could be
wrong.  (Currently, the only idea I have is that somehow
glyph_row->used[1] is set to a value larger than it should, which
might mean some problem in maybe_produce_line_number, where it
increments the used count, but I'd like first to see if all the
problems manifest themselves with such a large used count.)

Thanks.




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#27668; Package emacs. (Wed, 12 Jul 2017 18:28:01 GMT) Full text and rfc822 format available.

Message #23 received at submit <at> debbugs.gnu.org (full text, mbox):

From: Robert Pluim <rpluim <at> gmail.com>
To: bug-gnu-emacs <at> gnu.org
Subject: Re: bug#27668: 26.0.50; Crash with display-line-numbers t
Date: Wed, 12 Jul 2017 20:26:50 +0200
Eli Zaretskii <eliz <at> gnu.org> writes:

> Well, I cannot know what kind of display features you have there; what
> is just 63 characters in the file could have all kind of stuff
> appended to it on display...
>
> Anyway, what do these 2 show:
>
>   (gdb) p it->glyph_row->enabled_p

$1 = true

>   (gdb) p it->glyph_row->displays_text_p

$2 = true

>
> Also, is the previous screen line OK?  This will show:
>
>   (gdb) pgrowx (it->glyph_row-1)

(gdb) pgrowx (it->glyph_row-1)
TEXT: 134 glyphs
  0    0: CHAR[ ] pos=-1 blev=2,btyp=EN w=16 a+d=25+6 face=23 MB AVOID
  1   16: CHAR[2] pos=-1 blev=2,btyp=EN w=16 a+d=25+6 face=23 MB AVOID
  2   32: CHAR[3] pos=-1 blev=2,btyp=EN w=16 a+d=25+6 face=23 MB AVOID
  3   48: CHAR[6] pos=-1 blev=2,btyp=EN w=16 a+d=25+6 face=23 MB AVOID
  4   64: CHAR[ ] pos=-1 blev=2,btyp=EN w=16 a+d=25+6 face=23 MB AVOID
  5   80: CHAR[w] pos=9489 blev=0,btyp=L w=16 a+d=25+6 face=28 MB
  6   96: CHAR[i] pos=9490 blev=0,btyp=L w=16 a+d=25+6 face=28 MB
  7  112: CHAR[l] pos=9491 blev=0,btyp=L w=16 a+d=25+6 face=28 MB
  8  128: CHAR[l] pos=9492 blev=0,btyp=L w=16 a+d=25+6 face=28 MB
  9  144: CHAR[ ] pos=9493 blev=0,btyp=L w=16 a+d=25+6 face=28 MB
 11  176: CHAR[e] pos=9495 blev=0,btyp=L w=16 a+d=25+6 face=28 MB
 12  192: CHAR[ ] pos=9496 blev=0,btyp=L w=16 a+d=25+6 face=28 MB
 13  208: CHAR[r] pos=9497 blev=0,btyp=L w=16 a+d=25+6 face=28 MB
 14  224: CHAR[a] pos=9498 blev=0,btyp=L w=16 a+d=25+6 face=28 MB
 15  240: CHAR[i] pos=9499 blev=0,btyp=L w=16 a+d=25+6 face=28 MB
 16  256: CHAR[s] pos=9500 blev=0,btyp=L w=16 a+d=25+6 face=28 MB
 17  272: CHAR[e] pos=9501 blev=0,btyp=L w=16 a+d=25+6 face=28 MB
 18  288: CHAR[d] pos=9502 blev=0,btyp=L w=16 a+d=25+6 face=28 MB
 19  304: CHAR[ ] pos=9503 blev=0,btyp=L w=16 a+d=25+6 face=28 MB
 20  320: CHAR[w] pos=9504 blev=0,btyp=L w=16 a+d=25+6 face=28 MB
 21  336: CHAR[h] pos=9505 blev=0,btyp=L w=16 a+d=25+6 face=28 MB
 22  352: CHAR[e] pos=9506 blev=0,btyp=L w=16 a+d=25+6 face=28 MB
 23  368: CHAR[n] pos=9507 blev=0,btyp=L w=16 a+d=25+6 face=28 MB
 24  384: CHAR[ ] pos=9508 blev=0,btyp=L w=16 a+d=25+6 face=28 MB
 25  400: CHAR[t] pos=9509 blev=0,btyp=L w=16 a+d=25+6 face=28 MB
 26  416: CHAR[h] pos=9510 blev=0,btyp=L w=16 a+d=25+6 face=28 MB
 27  432: CHAR[e] pos=9511 blev=0,btyp=L w=16 a+d=25+6 face=28 MB
 28  448: CHAR[ ] pos=9512 blev=0,btyp=L w=16 a+d=25+6 face=28 MB
 29  464: CHAR[h] pos=9513 blev=0,btyp=L w=16 a+d=25+6 face=28 MB
 30  480: CHAR[o] pos=9514 blev=0,btyp=L w=16 a+d=25+6 face=28 MB
 31  496: CHAR[s] pos=9515 blev=0,btyp=L w=16 a+d=25+6 face=28 MB
 32  512: CHAR[t] pos=9516 blev=0,btyp=L w=16 a+d=25+6 face=28 MB
 33  528: CHAR[n] pos=9517 blev=0,btyp=L w=16 a+d=25+6 face=28 MB
 34  544: CHAR[a] pos=9518 blev=0,btyp=L w=16 a+d=25+6 face=28 MB
 35  560: CHAR[m] pos=9519 blev=0,btyp=L w=16 a+d=25+6 face=28 MB
 36  576: CHAR[e] pos=9520 blev=0,btyp=L w=16 a+d=25+6 face=28 MB
 37  592: CHAR[ ] pos=9521 blev=0,btyp=L w=16 a+d=25+6 face=28 MB
 38  608: CHAR[d] pos=9522 blev=0,btyp=L w=16 a+d=25+6 face=28 MB
 39  624: CHAR[o] pos=9523 blev=0,btyp=L w=16 a+d=25+6 face=28 MB
 40  640: CHAR[e] pos=9524 blev=0,btyp=L w=16 a+d=25+6 face=28 MB
 41  656: CHAR[s] pos=9525 blev=0,btyp=L w=16 a+d=25+6 face=28 MB
 42  672: CHAR[ ] pos=9526 blev=0,btyp=L w=16 a+d=25+6 face=28 MB
 43  688: CHAR[n] pos=9527 blev=0,btyp=L w=16 a+d=25+6 face=28 MB
 44  704: CHAR[o] pos=9528 blev=0,btyp=L w=16 a+d=25+6 face=28 MB
 45  720: CHAR[t] pos=9529 blev=0,btyp=L w=16 a+d=25+6 face=28 MB
 46  736: CHAR[ ] pos=9530 blev=0,btyp=L w=16 a+d=25+6 face=28 MB
 47  752: CHAR[m] pos=9531 blev=0,btyp=L w=16 a+d=25+6 face=28 MB
 48  768: CHAR[a] pos=9532 blev=0,btyp=L w=16 a+d=25+6 face=28 MB
 49  784: CHAR[t] pos=9533 blev=0,btyp=L w=16 a+d=25+6 face=28 MB
 50  800: CHAR[c] pos=9534 blev=0,btyp=L w=16 a+d=25+6 face=28 MB
 51  816: CHAR[h] pos=9535 blev=0,btyp=L w=16 a+d=25+6 face=28 MB
 52  832: CHAR[ ] pos=9536 blev=0,btyp=L w=16 a+d=25+6 face=28 MB
 53  848: CHAR[t] pos=9537 blev=0,btyp=L w=16 a+d=25+6 face=28 MB
 54  864: CHAR[h] pos=9538 blev=0,btyp=L w=16 a+d=25+6 face=28 MB
 55  880: CHAR[e] pos=9539 blev=0,btyp=L w=16 a+d=25+6 face=28 MB
 56  896: CHAR[ ] pos=9540 blev=0,btyp=L w=16 a+d=25+6 face=28 MB
 57  912: CHAR[p] pos=9541 blev=0,btyp=L w=16 a+d=25+6 face=28 MB
 58  928: CHAR[r] pos=9542 blev=0,btyp=L w=16 a+d=25+6 face=28 MB
 59  944: CHAR[e] pos=9543 blev=0,btyp=L w=16 a+d=25+6 face=28 MB
 60  960: CHAR[s] pos=9544 blev=0,btyp=L w=16 a+d=25+6 face=28 MB
 61  976: CHAR[e] pos=9545 blev=0,btyp=L w=16 a+d=25+6 face=28 MB
---Type <return> to continue, or q <return> to quit---
 62  992: CHAR[n] pos=9546 blev=0,btyp=L w=16 a+d=25+6 face=28 MB
 63 1008: CHAR[t] pos=9547 blev=0,btyp=L w=16 a+d=25+6 face=28 MB
 64 1024: CHAR[e] pos=9548 blev=0,btyp=L w=16 a+d=25+6 face=28 MB
 65 1040: CHAR[d] pos=9549 blev=0,btyp=L w=16 a+d=25+6 face=28 MB
 66 1056: CHAR[ ] pos=0 blev=0,btyp=B w=16 a+d=25+6 face=28 MB
 67 1072: CHAR[ ] pos=-1 blev=0,btyp=B w=16 a+d=25+6 face=5
 68 1088: CHAR[ ] pos=-1 blev=0,btyp=B w=16 a+d=25+6 face=5
 69 1104: CHAR[ ] pos=-1 blev=0,btyp=B w=16 a+d=25+6 face=5
 70 1120: CHAR[ ] pos=-1 blev=0,btyp=B w=16 a+d=25+6 face=5
 71 1136: CHAR[ ] pos=-1 blev=0,btyp=B w=16 a+d=25+6 face=5
 72 1152: CHAR[w] pos=9489 blev=0,btyp=L w=16 a+d=25+6 face=28 MB
 73 1168: CHAR[i] pos=9490 blev=0,btyp=L w=16 a+d=25+6 face=28 MB
 74 1184: CHAR[l] pos=9491 blev=0,btyp=L w=16 a+d=25+6 face=28 MB
 75 1200: CHAR[l] pos=9492 blev=0,btyp=L w=16 a+d=25+6 face=28 MB
 76 1216: CHAR[ ] pos=9493 blev=0,btyp=L w=16 a+d=25+6 face=28 MB
 77 1232: CHAR[b] pos=9494 blev=0,btyp=L w=16 a+d=25+6 face=28 MB
 78 1248: CHAR[e] pos=9495 blev=0,btyp=L w=16 a+d=25+6 face=28 MB
 79 1264: CHAR[ ] pos=9496 blev=0,btyp=L w=16 a+d=25+6 face=28 MB
 80 1280: CHAR[r] pos=9497 blev=0,btyp=L w=16 a+d=25+6 face=28 MB
 81 1296: CHAR[a] pos=9498 blev=0,btyp=L w=16 a+d=25+6 face=28 MB
 82 1312: CHAR[i] pos=9499 blev=0,btyp=L w=16 a+d=25+6 face=28 MB
 83 1328: CHAR[s] pos=9500 blev=0,btyp=L w=16 a+d=25+6 face=28 MB
 84 1344: CHAR[e] pos=9501 blev=0,btyp=L w=16 a+d=25+6 face=28 MB
 85 1360: CHAR[d] pos=9502 blev=0,btyp=L w=16 a+d=25+6 face=28 MB
 86 1376: CHAR[ ] pos=9503 blev=0,btyp=L w=16 a+d=25+6 face=28 MB
 87 1392: CHAR[w] pos=9504 blev=0,btyp=L w=16 a+d=25+6 face=28 MB
 88 1408: CHAR[h] pos=9505 blev=0,btyp=L w=16 a+d=25+6 face=28 MB
 89 1424: CHAR[e] pos=9506 blev=0,btyp=L w=16 a+d=25+6 face=28 MB
 90 1440: CHAR[n] pos=9507 blev=0,btyp=L w=16 a+d=25+6 face=28 MB
 91 1456: CHAR[ ] pos=9508 blev=0,btyp=L w=16 a+d=25+6 face=28 MB
 92 1472: CHAR[t] pos=9509 blev=0,btyp=L w=16 a+d=25+6 face=28 MB
 93 1488: CHAR[h] pos=9510 blev=0,btyp=L w=16 a+d=25+6 face=28 MB
 94 1504: CHAR[e] pos=9511 blev=0,btyp=L w=16 a+d=25+6 face=28 MB
 95 1520: CHAR[ ] pos=9512 blev=0,btyp=L w=16 a+d=25+6 face=28 MB
 96 1536: CHAR[h] pos=9513 blev=0,btyp=L w=16 a+d=25+6 face=28 MB
 97 1552: CHAR[o] pos=9514 blev=0,btyp=L w=16 a+d=25+6 face=28 MB
 98 1568: CHAR[s] pos=9515 blev=0,btyp=L w=16 a+d=25+6 face=28 MB
 99 1584: CHAR[t] pos=9516 blev=0,btyp=L w=16 a+d=25+6 face=28 MB
100 1600: CHAR[n] pos=9517 blev=0,btyp=L w=16 a+d=25+6 face=28 MB
101 1616: CHAR[a] pos=9518 blev=0,btyp=L w=16 a+d=25+6 face=28 MB
102 1632: CHAR[m] pos=9519 blev=0,btyp=L w=16 a+d=25+6 face=28 MB
103 1648: CHAR[e] pos=9520 blev=0,btyp=L w=16 a+d=25+6 face=28 MB
104 1664: CHAR[ ] pos=9521 blev=0,btyp=L w=16 a+d=25+6 face=28 MB
105 1680: CHAR[d] pos=9522 blev=0,btyp=L w=16 a+d=25+6 face=28 MB
106 1696: CHAR[o] pos=9523 blev=0,btyp=L w=16 a+d=25+6 face=28 MB
107 1712: CHAR[e] pos=9524 blev=0,btyp=L w=16 a+d=25+6 face=28 MB
108 1728: CHAR[s] pos=9525 blev=0,btyp=L w=16 a+d=25+6 face=28 MB
109 1744: CHAR[ ] pos=9526 blev=0,btyp=L w=16 a+d=25+6 face=28 MB
110 1760: CHAR[n] pos=9527 blev=0,btyp=L w=16 a+d=25+6 face=28 MB
111 1776: CHAR[o] pos=9528 blev=0,btyp=L w=16 a+d=25+6 face=28 MB
112 1792: CHAR[t] pos=9529 blev=0,btyp=L w=16 a+d=25+6 face=28 MB
113 1808: CHAR[ ] pos=9530 blev=0,btyp=L w=16 a+d=25+6 face=28 MB
114 1824: CHAR[m] pos=9531 blev=0,btyp=L w=16 a+d=25+6 face=28 MB
115 1840: CHAR[a] pos=9532 blev=0,btyp=L w=16 a+d=25+6 face=28 MB
116 1856: CHAR[t] pos=9533 blev=0,btyp=L w=16 a+d=25+6 face=28 MB
117 1872: CHAR[c] pos=9534 blev=0,btyp=L w=16 a+d=25+6 face=28 MB
118 1888: CHAR[h] pos=9535 blev=0,btyp=L w=16 a+d=25+6 face=28 MB
119 1904: CHAR[ ] pos=9536 blev=0,btyp=L w=16 a+d=25+6 face=28 MB
120 1920: CHAR[t] pos=9537 blev=0,btyp=L w=16 a+d=25+6 face=28 MB
121 1936: CHAR[h] pos=9538 blev=0,btyp=L w=16 a+d=25+6 face=28 MB
122 1952: CHAR[e] pos=9539 blev=0,btyp=L w=16 a+d=25+6 face=28 MB
123 1968: CHAR[ ] pos=9540 blev=0,btyp=L w=16 a+d=25+6 face=28 MB
124 1984: CHAR[p] pos=9541 blev=0,btyp=L w=16 a+d=25+6 face=28 MB
---Type <return> to continue, or q <return> to quit---
125 2000: CHAR[r] pos=9542 blev=0,btyp=L w=16 a+d=25+6 face=28 MB
126 2016: CHAR[e] pos=9543 blev=0,btyp=L w=16 a+d=25+6 face=28 MB
127 2032: CHAR[s] pos=9544 blev=0,btyp=L w=16 a+d=25+6 face=28 MB
128 2048: CHAR[e] pos=9545 blev=0,btyp=L w=16 a+d=25+6 face=28 MB
129 2064: CHAR[n] pos=9546 blev=0,btyp=L w=16 a+d=25+6 face=28 MB
130 2080: CHAR[t] pos=9547 blev=0,btyp=L w=16 a+d=25+6 face=28 MB
131 2096: CHAR[e] pos=9548 blev=0,btyp=L w=16 a+d=25+6 face=28 MB
132 2112: CHAR[d] pos=9549 blev=0,btyp=L w=16 a+d=25+6 face=28 MB
133 2128: CHAR[ ] pos=0 blev=0,btyp=B w=16 a+d=25+6 face=28 MB

Hmm. Is it normal for the text on that line to be shown twice here?
The actual line is only 61 glyphs:

will be raised when the hostname does not match the presented

>
> Eventually, if nothing else gives a clue, please continue running
> Emacs under GDB, and if the crashes are always in
> compute_line_metrics, show the offending glyph_row each time it
> crashes.  Perhaps the data will give some hint about what could be
> wrong.  (Currently, the only idea I have is that somehow
> glyph_row->used[1] is set to a value larger than it should, which
> might mean some problem in maybe_produce_line_number, where it
> increments the used count, but I'd like first to see if all the
> problems manifest themselves with such a large used count.)

The crash is always in compute_line_metrics. I'll continue to run
under gdb, and see if I can find a recipe.

Regards

Robert





Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#27668; Package emacs. (Wed, 12 Jul 2017 19:03:02 GMT) Full text and rfc822 format available.

Message #26 received at submit <at> debbugs.gnu.org (full text, mbox):

From: Eli Zaretskii <eliz <at> gnu.org>
To: bug-gnu-emacs <at> gnu.org
Subject: Re: bug#27668: 26.0.50; Crash with display-line-numbers t
Date: Wed, 12 Jul 2017 22:01:28 +0300
> From: Robert Pluim <rpluim <at> gmail.com>
> Date: Wed, 12 Jul 2017 20:26:50 +0200
> 
> 125 2000: CHAR[r] pos=9542 blev=0,btyp=L w=16 a+d=25+6 face=28 MB
> 126 2016: CHAR[e] pos=9543 blev=0,btyp=L w=16 a+d=25+6 face=28 MB
> 127 2032: CHAR[s] pos=9544 blev=0,btyp=L w=16 a+d=25+6 face=28 MB
> 128 2048: CHAR[e] pos=9545 blev=0,btyp=L w=16 a+d=25+6 face=28 MB
> 129 2064: CHAR[n] pos=9546 blev=0,btyp=L w=16 a+d=25+6 face=28 MB
> 130 2080: CHAR[t] pos=9547 blev=0,btyp=L w=16 a+d=25+6 face=28 MB
> 131 2096: CHAR[e] pos=9548 blev=0,btyp=L w=16 a+d=25+6 face=28 MB
> 132 2112: CHAR[d] pos=9549 blev=0,btyp=L w=16 a+d=25+6 face=28 MB
> 133 2128: CHAR[ ] pos=0 blev=0,btyp=B w=16 a+d=25+6 face=28 MB
> 
> Hmm. Is it normal for the text on that line to be shown twice here?

No, of course not.  Everything beyond the first glyph whose pos is
zero (that's the glyph that stands for the newline, it is there so we
could put the cursor at EOL) shouldn't be there.

> The crash is always in compute_line_metrics. I'll continue to run
> under gdb, and see if I can find a recipe.

If it's always in compute_line_metrics, then please see if the value
of row->used[1] is always about twice the correct one.  If it is,
perhaps we will be able to come up with a breakpoint or watchpoint
condition that will catch the code which is responsible.




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#27668; Package emacs. (Thu, 13 Jul 2017 08:30:02 GMT) Full text and rfc822 format available.

Message #29 received at submit <at> debbugs.gnu.org (full text, mbox):

From: Robert Pluim <rpluim <at> gmail.com>
To: bug-gnu-emacs <at> gnu.org
Subject: Re: bug#27668: 26.0.50; Crash with display-line-numbers t
Date: Thu, 13 Jul 2017 10:28:42 +0200
Eli Zaretskii <eliz <at> gnu.org> writes:

>> From: Robert Pluim <rpluim <at> gmail.com>
>> Date: Wed, 12 Jul 2017 20:26:50 +0200
>> 
>> 125 2000: CHAR[r] pos=9542 blev=0,btyp=L w=16 a+d=25+6 face=28 MB
>> 126 2016: CHAR[e] pos=9543 blev=0,btyp=L w=16 a+d=25+6 face=28 MB
>> 127 2032: CHAR[s] pos=9544 blev=0,btyp=L w=16 a+d=25+6 face=28 MB
>> 128 2048: CHAR[e] pos=9545 blev=0,btyp=L w=16 a+d=25+6 face=28 MB
>> 129 2064: CHAR[n] pos=9546 blev=0,btyp=L w=16 a+d=25+6 face=28 MB
>> 130 2080: CHAR[t] pos=9547 blev=0,btyp=L w=16 a+d=25+6 face=28 MB
>> 131 2096: CHAR[e] pos=9548 blev=0,btyp=L w=16 a+d=25+6 face=28 MB
>> 132 2112: CHAR[d] pos=9549 blev=0,btyp=L w=16 a+d=25+6 face=28 MB
>> 133 2128: CHAR[ ] pos=0 blev=0,btyp=B w=16 a+d=25+6 face=28 MB
>> 
>> Hmm. Is it normal for the text on that line to be shown twice here?
>
> No, of course not.  Everything beyond the first glyph whose pos is
> zero (that's the glyph that stands for the newline, it is there so we
> could put the cursor at EOL) shouldn't be there.
>
>> The crash is always in compute_line_metrics. I'll continue to run
>> under gdb, and see if I can find a recipe.
>
> If it's always in compute_line_metrics, then please see if the value
> of row->used[1] is always about twice the correct one.  If it is,
> perhaps we will be able to come up with a breakpoint or watchpoint
> condition that will catch the code which is responsible.

It's always approximately twice the correct one. In the two cases I
have so far it's 67:138 and 47:98. That's a ratio of n:(2n + 4) in
both cases.

Regards

Robert





Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#27668; Package emacs. (Thu, 13 Jul 2017 16:25:02 GMT) Full text and rfc822 format available.

Message #32 received at submit <at> debbugs.gnu.org (full text, mbox):

From: Eli Zaretskii <eliz <at> gnu.org>
To: bug-gnu-emacs <at> gnu.org
Subject: Re: bug#27668: 26.0.50; Crash with display-line-numbers t
Date: Thu, 13 Jul 2017 19:24:13 +0300
> From: Robert Pluim <rpluim <at> gmail.com>
> Date: Thu, 13 Jul 2017 10:28:42 +0200
> 
> > If it's always in compute_line_metrics, then please see if the value
> > of row->used[1] is always about twice the correct one.  If it is,
> > perhaps we will be able to come up with a breakpoint or watchpoint
> > condition that will catch the code which is responsible.
> 
> It's always approximately twice the correct one. In the two cases I
> have so far it's 67:138 and 47:98. That's a ratio of n:(2n + 4) in
> both cases.

It's nice that a clear pattern emerges, but I still cannot see how
that could happen...

I think next thing to try is to see where does the used[1] count
becomes too large.  I suggest to run Emacs under GDB with the
following breakpoint on a line immediately after the call to
PRODUCE_GLYPHS in display_line:

  (gdb) break xdisp.c:21374 if it->glyph_row->used[1] > 90

This assumes that you're windows are never wider than 90 columns; if
that's not true, enlarge the number as needed to prevent the
breakpoint from breaking in legitimate cases.  When this breaks,
please show the backtrace.

Another idea is to set the following breakpoint inside
maybe_produce_line_number:

  (gdb) break xdisp.c:21010 if it->glyph_row != 0 && it->glyph_row->used[1] > 0

Line 21010 is this:

  short *u = it->glyph_row ? &it->glyph_row->used[TEXT_AREA] : NULL;

There's a hidden assumption in the code that maybe_produce_line_number
is called when no glyphs were produced for the screen line yet.  Maybe
that assumption is wrong.

Btw, what version of GCC do you use?

Thanks.




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#27668; Package emacs. (Thu, 13 Jul 2017 16:30:03 GMT) Full text and rfc822 format available.

Message #35 received at submit <at> debbugs.gnu.org (full text, mbox):

From: Eli Zaretskii <eliz <at> gnu.org>
To: bug-gnu-emacs <at> gnu.org
Subject: Re: bug#27668: 26.0.50; Crash with display-line-numbers t
Date: Thu, 13 Jul 2017 19:29:49 +0300
> From: Robert Pluim <rpluim <at> gmail.com>
> Date: Thu, 13 Jul 2017 10:28:42 +0200
> 
> It's always approximately twice the correct one. In the two cases I
> have so far it's 67:138 and 47:98. That's a ratio of n:(2n + 4) in
> both cases.

A few more questions about your Emacs use patterns:

  . do you use modes that put stuff in the display margins? if so,
    could it be that these crashes happen shortly after you switch
    away from a window with margins to one without margins, or delete
    a window with margins?
  . do you use truncate-lines or split windows with "C-x 3", and if
    so, do these crashes happen shortly after you use those features?
  . do you have any optional display-related features turned on in
    your sessions, like show-trailing-whitespace etc.?

Thanks.




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#27668; Package emacs. (Thu, 13 Jul 2017 16:34:02 GMT) Full text and rfc822 format available.

Message #38 received at submit <at> debbugs.gnu.org (full text, mbox):

From: Robert Pluim <rpluim <at> gmail.com>
To: bug-gnu-emacs <at> gnu.org
Subject: Re: bug#27668: 26.0.50; Crash with display-line-numbers t
Date: Thu, 13 Jul 2017 18:33:08 +0200
Eli Zaretskii <eliz <at> gnu.org> writes:

>> From: Robert Pluim <rpluim <at> gmail.com>
>> Date: Thu, 13 Jul 2017 10:28:42 +0200
>> It's always approximately twice the correct one. In the two cases I
>> have so far it's 67:138 and 47:98. That's a ratio of n:(2n + 4) in
>> both cases.
>
> It's nice that a clear pattern emerges, but I still cannot see how
> that could happen...
>
> I think next thing to try is to see where does the used[1] count
> becomes too large.  I suggest to run Emacs under GDB with the
> following breakpoint on a line immediately after the call to
> PRODUCE_GLYPHS in display_line:
>
>   (gdb) break xdisp.c:21374 if it->glyph_row->used[1] > 90
>

OK, I can try that.

> This assumes that you're windows are never wider than 90 columns; if
> that's not true, enlarge the number as needed to prevent the
> breakpoint from breaking in legitimate cases.  When this breaks,
> please show the backtrace.
>
> Another idea is to set the following breakpoint inside
> maybe_produce_line_number:
>
>   (gdb) break xdisp.c:21010 if it->glyph_row != 0 && it->glyph_row->used[1] > 0
>
> Line 21010 is this:
>
>   short *u = it->glyph_row ? &it->glyph_row->used[TEXT_AREA] : NULL;
>
> There's a hidden assumption in the code that maybe_produce_line_number
> is called when no glyphs were produced for the screen line yet.  Maybe
> that assumption is wrong.
>

I'll try that if method 1 doesn't get me anywhere.

> Btw, what version of GCC do you use?

It's the standard system gcc for Ubuntu 16.04:

$ gcc -v
Using built-in specs.
COLLECT_GCC=gcc
COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-linux-gnu/5/lto-wrapper
Target: x86_64-linux-gnu
Configured with: ../src/configure -v --with-pkgversion='Ubuntu 5.4.0-6ubuntu1~16.04.4' --with-bugurl=file:///usr/share/doc/gcc-5/README.Bugs --enable-languages=c,ada,c++,java,go,d,fortran,objc,obj-c++ --prefix=/usr --program-suffix=-5 --enable-shared --enable-linker-build-id --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --libdir=/usr/lib --enable-nls --with-sysroot=/ --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --with-default-libstdcxx-abi=new --enable-gnu-unique-object --disable-vtable-verify --enable-libmpx --enable-plugin --with-system-zlib --disable-browser-plugin --enable-java-awt=gtk --enable-gtk-cairo --with-java-home=/usr/lib/jvm/java-1.5.0-gcj-5-amd64/jre --enable-java-home --with-jvm-root-dir=/usr/lib/jvm/java-1.5.0-gcj-5-amd64 --with-jvm-jar-dir=/usr/lib/jvm-exports/java-1.5.0-gcj-5-amd64 --with-arch-directory=amd64 --with-ecj-jar=/usr/share/java/eclipse-ecj.jar --enable-objc-gc --enable-multiarch --disable-werror --with-arch-32=i686 --with-abi=m64 --with-multilib-list=m32,m64,mx32 --enable-multilib --with-tune=generic --enable-checking=release --build=x86_64-linux-gnu --host=x86_64-linux-gnu --target=x86_64-linux-gnu
Thread model: posix
gcc version 5.4.0 20160609 (Ubuntu 5.4.0-6ubuntu1~16.04.4) 





Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#27668; Package emacs. (Thu, 13 Jul 2017 16:44:01 GMT) Full text and rfc822 format available.

Message #41 received at submit <at> debbugs.gnu.org (full text, mbox):

From: Robert Pluim <rpluim <at> gmail.com>
To: bug-gnu-emacs <at> gnu.org
Subject: Re: bug#27668: 26.0.50; Crash with display-line-numbers t
Date: Thu, 13 Jul 2017 18:42:49 +0200
Eli Zaretskii <eliz <at> gnu.org> writes:

>> From: Robert Pluim <rpluim <at> gmail.com>
>> Date: Thu, 13 Jul 2017 10:28:42 +0200
>> 
>> It's always approximately twice the correct one. In the two cases I
>> have so far it's 67:138 and 47:98. That's a ratio of n:(2n + 4) in
>> both cases.
>
> A few more questions about your Emacs use patterns:
>
>   . do you use modes that put stuff in the display margins? if so,
>     could it be that these crashes happen shortly after you switch
>     away from a window with margins to one without margins, or delete
>     a window with margins?

Apart from display-line-numbers, I don't think so. Of course I don't
have that switched on in all my buffers.

>   . do you use truncate-lines or split windows with "C-x 3", and if
>     so, do these crashes happen shortly after you use those
>     features?

I do use C-x 3, but that doesn't seem correlated.

>   . do you have any optional display-related features turned on in
>     your sessions, like show-trailing-whitespace etc.?

In buffers with line-numbers I tend to have whitespace-mode enabled,
but I don't use show-trailing-whitespace directly. However, your
second gdb suggestion just got me:

(gdb) break xdisp.c:21010 if it->glyph_row != 0 && it->glyph_row->used[1] > 0
Breakpoint 4 at 0x45baaf: file xdisp.c, line 21010.
(gdb) run
Starting program: /home/rpluim/repos/emacs-master/src/emacs 
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".
[New Thread 0x7fffe4de5700 (LWP 19567)]
[New Thread 0x7fffdffff700 (LWP 19568)]
[New Thread 0x7fffdf5f1700 (LWP 19569)]

Thread 1 "emacs" hit Breakpoint 4, maybe_produce_line_number (it=it <at> entry=0x7fffffff8130) at xdisp.c:21010
21010	  short *u = it->glyph_row ? &it->glyph_row->used[TEXT_AREA] : NULL;


I was in the process of switching from a non-line-number to a
line-number buffer when that hit.

Regards

Robert





Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#27668; Package emacs. (Thu, 13 Jul 2017 17:58:02 GMT) Full text and rfc822 format available.

Message #44 received at submit <at> debbugs.gnu.org (full text, mbox):

From: Eli Zaretskii <eliz <at> gnu.org>
To: bug-gnu-emacs <at> gnu.org
Subject: Re: bug#27668: 26.0.50; Crash with display-line-numbers t
Date: Thu, 13 Jul 2017 20:56:49 +0300
> From: Robert Pluim <rpluim <at> gmail.com>
> Date: Thu, 13 Jul 2017 18:42:49 +0200
> 
> (gdb) break xdisp.c:21010 if it->glyph_row != 0 && it->glyph_row->used[1] > 0
> Breakpoint 4 at 0x45baaf: file xdisp.c, line 21010.
> (gdb) run
> Starting program: /home/rpluim/repos/emacs-master/src/emacs 
> [Thread debugging using libthread_db enabled]
> Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".
> [New Thread 0x7fffe4de5700 (LWP 19567)]
> [New Thread 0x7fffdffff700 (LWP 19568)]
> [New Thread 0x7fffdf5f1700 (LWP 19569)]
> 
> Thread 1 "emacs" hit Breakpoint 4, maybe_produce_line_number (it=it <at> entry=0x7fffffff8130) at xdisp.c:21010
> 21010	  short *u = it->glyph_row ? &it->glyph_row->used[TEXT_AREA] : NULL;
> 
> 
> I was in the process of switching from a non-line-number to a
> line-number buffer when that hit.

OK, thanks.  What is the value of it->glyph_row->used[TEXT_AREA], and
what is the backtrace?




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#27668; Package emacs. (Thu, 13 Jul 2017 18:19:02 GMT) Full text and rfc822 format available.

Message #47 received at submit <at> debbugs.gnu.org (full text, mbox):

From: Robert Pluim <rpluim <at> gmail.com>
To: bug-gnu-emacs <at> gnu.org
Subject: Re: bug#27668: 26.0.50; Crash with display-line-numbers t
Date: Thu, 13 Jul 2017 20:17:51 +0200
Eli Zaretskii <eliz <at> gnu.org> writes:

>> From: Robert Pluim <rpluim <at> gmail.com>
>> Date: Thu, 13 Jul 2017 18:42:49 +0200
>> 
>> (gdb) break xdisp.c:21010 if it->glyph_row != 0 && it->glyph_row->used[1] > 0
>> Breakpoint 4 at 0x45baaf: file xdisp.c, line 21010.
>> (gdb) run
>> Starting program: /home/rpluim/repos/emacs-master/src/emacs 
>> [Thread debugging using libthread_db enabled]
>> Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".
>> [New Thread 0x7fffe4de5700 (LWP 19567)]
>> [New Thread 0x7fffdffff700 (LWP 19568)]
>> [New Thread 0x7fffdf5f1700 (LWP 19569)]
>> 
>> Thread 1 "emacs" hit Breakpoint 4, maybe_produce_line_number (it=it <at> entry=0x7fffffff8130) at xdisp.c:21010
>> 21010	  short *u = it->glyph_row ? &it->glyph_row->used[TEXT_AREA] : NULL;
>> 
>> 
>> I was in the process of switching from a non-line-number to a
>> line-number buffer when that hit.
>
> OK, thanks.  What is the value of it->glyph_row->used[TEXT_AREA], and
> what is the backtrace?

(gdb) p  it->glyph_row->used[TEXT_AREA]
$1 = 66

(gdb) bt
#0  terminate_due_to_signal (sig=sig <at> entry=6, backtrace_limit=backtrace_limit <at> entry=2147483647) at emacs.c:363
#1  0x00000000005a5084 in die (msg=msg <at> entry=0x6987d8 "pdl->kind == SPECPDL_BACKTRACE", file=file <at> entry=0x698448 "eval.c", line=line <at> entry=150) at alloc.c:7348
#2  0x0000000000419f3b in backtrace_function (pdl=<optimized out>) at eval.c:150
#3  <function called from gdb>
#4  maybe_produce_line_number (it=it <at> entry=0x7fffffff8130) at xdisp.c:21010
#5  0x0000000000465365 in display_line (it=it <at> entry=0x7fffffff8130, cursor_vpos=cursor_vpos <at> entry=16) at xdisp.c:21225
#6  0x00000000004672bd in try_window (window=..., window <at> entry=XIL(0x146d7d5), pos=..., flags=flags <at> entry=1) at xdisp.c:17544
#7  0x000000000047f9ab in redisplay_window (window=XIL(0x146d7d5), just_this_one_p=just_this_one_p <at> entry=false) at xdisp.c:16991
#8  0x00000000004831fb in redisplay_window_0 (window=..., window <at> entry=XIL(0x146d7d5)) at xdisp.c:14751
#9  0x00000000005c7cf4 in internal_condition_case_1 (bfun=bfun <at> entry=0x4831d0 <redisplay_window_0>, arg=..., handlers=..., hfun=hfun <at> entry=0x435960 <redisplay_window_error>) at eval.c:1350
#10 0x000000000043d160 in redisplay_windows (window=...) at xdisp.c:14731
#11 0x000000000043d129 in redisplay_windows (window=...) at xdisp.c:14725
#12 0x000000000046c945 in redisplay_internal () at xdisp.c:14220
#13 0x000000000046eed5 in redisplay () at xdisp.c:13440
#14 0x0000000000545cfb in read_char (commandflag=commandflag <at> entry=1, map=..., map <at> entry=XIL(0x35b6253), prev_event=..., used_mouse_menu=used_mouse_menu <at> entry=0x7fffffffd6cb, end_time=end_time <at> entry=0x0) at keyboard.c:2484
#15 0x0000000000548ddb in read_key_sequence (keybuf=keybuf <at> entry=0x7fffffffd7b0, prompt=..., prompt <at> entry=XIL(0), dont_downcase_last=dont_downcase_last <at> entry=false, can_return_switch_frame=can_return_switch_frame <at> entry=true, 
    fix_current_buffer=fix_current_buffer <at> entry=true, prevent_redisplay=prevent_redisplay <at> entry=false, bufsize=30) at keyboard.c:9151
#16 0x000000000054b096 in command_loop_1 () at keyboard.c:1372
#17 0x00000000005c7c27 in internal_condition_case (bfun=bfun <at> entry=0x54adf0 <command_loop_1>, handlers=..., handlers <at> entry=XIL(0x4fb0), hfun=hfun <at> entry=0x53e770 <cmd_error>) at eval.c:1326
#18 0x00000000005380dc in command_loop_2 (ignore=..., ignore <at> entry=XIL(0)) at keyboard.c:1114
#19 0x00000000005c7b6c in internal_catch (tag=..., tag <at> entry=XIL(0xc1e0), func=func <at> entry=0x5380c0 <command_loop_2>, arg=..., arg <at> entry=XIL(0)) at eval.c:1091
#20 0x0000000000538099 in command_loop () at keyboard.c:1093
#21 0x000000000053e296 in recursive_edit_1 () at keyboard.c:699
#22 0x000000000053e613 in Frecursive_edit () at keyboard.c:770
#23 0x000000000041ad4b in main (argc=<optimized out>, argv=0x7fffffffdb58) at emacs.c:1706






Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#27668; Package emacs. (Thu, 13 Jul 2017 19:24:02 GMT) Full text and rfc822 format available.

Message #50 received at submit <at> debbugs.gnu.org (full text, mbox):

From: Eli Zaretskii <eliz <at> gnu.org>
To: bug-gnu-emacs <at> gnu.org
Subject: Re: bug#27668: 26.0.50; Crash with display-line-numbers t
Date: Thu, 13 Jul 2017 22:22:49 +0300
> From: Robert Pluim <rpluim <at> gmail.com>
> Date: Thu, 13 Jul 2017 20:17:51 +0200
> 
> (gdb) p  it->glyph_row->used[TEXT_AREA]
> $1 = 66
> 
> (gdb) bt
> #0  terminate_due_to_signal (sig=sig <at> entry=6, backtrace_limit=backtrace_limit <at> entry=2147483647) at emacs.c:363
> #1  0x00000000005a5084 in die (msg=msg <at> entry=0x6987d8 "pdl->kind == SPECPDL_BACKTRACE", file=file <at> entry=0x698448 "eval.c", line=line <at> entry=150) at alloc.c:7348
> #2  0x0000000000419f3b in backtrace_function (pdl=<optimized out>) at eval.c:150
> #3  <function called from gdb>
> #4  maybe_produce_line_number (it=it <at> entry=0x7fffffff8130) at xdisp.c:21010
> #5  0x0000000000465365 in display_line (it=it <at> entry=0x7fffffff8130, cursor_vpos=cursor_vpos <at> entry=16) at xdisp.c:21225
> #6  0x00000000004672bd in try_window (window=..., window <at> entry=XIL(0x146d7d5), pos=..., flags=flags <at> entry=1) at xdisp.c:17544
> #7  0x000000000047f9ab in redisplay_window (window=XIL(0x146d7d5), just_this_one_p=just_this_one_p <at> entry=false) at xdisp.c:16991
> #8  0x00000000004831fb in redisplay_window_0 (window=..., window <at> entry=XIL(0x146d7d5)) at xdisp.c:14751

Curiouser and curiouser...

OK, in frame #5, the one in display_line, what do these produce:

  (gdb) p it->current
  (gdb) pgrowx it->glyph_row




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#27668; Package emacs. (Thu, 13 Jul 2017 19:37:02 GMT) Full text and rfc822 format available.

Message #53 received at submit <at> debbugs.gnu.org (full text, mbox):

From: Robert Pluim <rpluim <at> gmail.com>
To: bug-gnu-emacs <at> gnu.org
Subject: Re: bug#27668: 26.0.50; Crash with display-line-numbers t
Date: Thu, 13 Jul 2017 21:35:45 +0200
Eli Zaretskii <eliz <at> gnu.org> writes:

>> From: Robert Pluim <rpluim <at> gmail.com>
>> Date: Thu, 13 Jul 2017 20:17:51 +0200
>> 
>> (gdb) p  it->glyph_row->used[TEXT_AREA]
>> $1 = 66
>> 
>> (gdb) bt
>> #0  terminate_due_to_signal (sig=sig <at> entry=6, backtrace_limit=backtrace_limit <at> entry=2147483647) at emacs.c:363
>> #1  0x00000000005a5084 in die (msg=msg <at> entry=0x6987d8 "pdl->kind == SPECPDL_BACKTRACE", file=file <at> entry=0x698448 "eval.c", line=line <at> entry=150) at alloc.c:7348
>> #2  0x0000000000419f3b in backtrace_function (pdl=<optimized out>) at eval.c:150
>> #3  <function called from gdb>
>> #4  maybe_produce_line_number (it=it <at> entry=0x7fffffff8130) at xdisp.c:21010
>> #5  0x0000000000465365 in display_line (it=it <at> entry=0x7fffffff8130, cursor_vpos=cursor_vpos <at> entry=16) at xdisp.c:21225
>> #6  0x00000000004672bd in try_window (window=..., window <at> entry=XIL(0x146d7d5), pos=..., flags=flags <at> entry=1) at xdisp.c:17544
>> #7  0x000000000047f9ab in redisplay_window (window=XIL(0x146d7d5), just_this_one_p=just_this_one_p <at> entry=false) at xdisp.c:16991
>> #8  0x00000000004831fb in redisplay_window_0 (window=..., window <at> entry=XIL(0x146d7d5)) at xdisp.c:14751
>
> Curiouser and curiouser...
>
> OK, in frame #5, the one in display_line, what do these produce:
>
>   (gdb) p it->current
>   (gdb) pgrowx it->glyph_row

(gdb) p it->current
$2 = {
  pos = {
    charpos = 37180, 
    bytepos = 37180
  }, 
  overlay_string_index = -1, 
  string_pos = {
    charpos = -1, 
    bytepos = -1
  }, 
  dpvec_index = -1
}
(gdb) pgrowx it->glyph_row
TEXT: 66 glyphs
  0    0: CHAR[ ] pos=-1 blev=2,btyp=EN w=16 a+d=25+6 face=51 MB AVOID
  1   16: CHAR[1] pos=-1 blev=2,btyp=EN w=16 a+d=25+6 face=51 MB AVOID
  2   32: CHAR[2] pos=-1 blev=2,btyp=EN w=16 a+d=25+6 face=51 MB AVOID
  3   48: CHAR[6] pos=-1 blev=2,btyp=EN w=16 a+d=25+6 face=51 MB AVOID
  4   64: CHAR[1] pos=-1 blev=2,btyp=EN w=16 a+d=25+6 face=51 MB AVOID
  5   80: CHAR[ ] pos=-1 blev=2,btyp=EN w=16 a+d=25+6 face=51 MB AVOID
  6   96: CHAR[ ] pos=37180 blev=0,btyp=L w=16 a+d=25+6 MB
  7  112: CHAR[ ] pos=37181 blev=0,btyp=L w=16 a+d=25+6 MB
  8  128: CHAR[ ] pos=37182 blev=0,btyp=L w=16 a+d=25+6 MB
  9  144: CHAR[ ] pos=37183 blev=0,btyp=L w=16 a+d=25+6 MB
 10  160: CHAR[ ] pos=37184 blev=0,btyp=L w=16 a+d=25+6 MB
 11  176: CHAR[ ] pos=37185 blev=0,btyp=L w=16 a+d=25+6 MB
 12  192: CHAR[/] pos=37186 blev=0,btyp=L w=16 a+d=25+6 face=50 MB
 13  208: CHAR[*] pos=37187 blev=0,btyp=L w=16 a+d=25+6 face=50 MB
 14  224: CHAR[ ] pos=37188 blev=0,btyp=L w=16 a+d=25+6 face=50 MB
 15  240: CHAR[A] pos=37189 blev=0,btyp=L w=16 a+d=25+6 face=50 MB
 16  256: CHAR[d] pos=37190 blev=0,btyp=L w=16 a+d=25+6 face=50 MB
 17  272: CHAR[j] pos=37191 blev=0,btyp=L w=16 a+d=25+6 face=50 MB
 18  288: CHAR[u] pos=37192 blev=0,btyp=L w=16 a+d=25+6 face=50 MB
 19  304: CHAR[s] pos=37193 blev=0,btyp=L w=16 a+d=25+6 face=50 MB
 20  320: CHAR[t] pos=37194 blev=0,btyp=L w=16 a+d=25+6 face=50 MB
 21  336: CHAR[ ] pos=37195 blev=0,btyp=L w=16 a+d=25+6 face=50 MB
 22  352: CHAR[c] pos=37196 blev=0,btyp=L w=16 a+d=25+6 face=50 MB
 23  368: CHAR[o] pos=37197 blev=0,btyp=L w=16 a+d=25+6 face=50 MB
 24  384: CHAR[o] pos=37198 blev=0,btyp=L w=16 a+d=25+6 face=50 MB
 25  400: CHAR[r] pos=37199 blev=0,btyp=L w=16 a+d=25+6 face=50 MB
 26  416: CHAR[d] pos=37200 blev=0,btyp=L w=16 a+d=25+6 face=50 MB
 27  432: CHAR[i] pos=37201 blev=0,btyp=L w=16 a+d=25+6 face=50 MB
 28  448: CHAR[n] pos=37202 blev=0,btyp=L w=16 a+d=25+6 face=50 MB
---Type <return> to continue, or q <return> to quit---
 29  464: CHAR[a] pos=37203 blev=0,btyp=L w=16 a+d=25+6 face=50 MB
 30  480: CHAR[t] pos=37204 blev=0,btyp=L w=16 a+d=25+6 face=50 MB
 31  496: CHAR[e] pos=37205 blev=0,btyp=L w=16 a+d=25+6 face=50 MB
 32  512: CHAR[s] pos=37206 blev=0,btyp=L w=16 a+d=25+6 face=50 MB
 33  528: CHAR[ ] pos=37207 blev=0,btyp=L w=16 a+d=25+6 face=50 MB
 34  544: CHAR[t] pos=37208 blev=0,btyp=L w=16 a+d=25+6 face=50 MB
 35  560: CHAR[o] pos=37209 blev=0,btyp=L w=16 a+d=25+6 face=50 MB
 36  576: CHAR[ ] pos=37210 blev=0,btyp=L w=16 a+d=25+6 face=50 MB
 37  592: CHAR[b] pos=37211 blev=0,btyp=L w=16 a+d=25+6 face=50 MB
 38  608: CHAR[e] pos=37212 blev=0,btyp=L w=16 a+d=25+6 face=50 MB
 39  624: CHAR[ ] pos=37213 blev=0,btyp=L w=16 a+d=25+6 face=50 MB
 40  640: CHAR[r] pos=37214 blev=0,btyp=L w=16 a+d=25+6 face=50 MB
 41  656: CHAR[o] pos=37215 blev=0,btyp=L w=16 a+d=25+6 face=50 MB
 42  672: CHAR[o] pos=37216 blev=0,btyp=L w=16 a+d=25+6 face=50 MB
 43  688: CHAR[t] pos=37217 blev=0,btyp=L w=16 a+d=25+6 face=50 MB
 44  704: CHAR[-] pos=37218 blev=0,btyp=L w=16 a+d=25+6 face=50 MB
 45  720: CHAR[w] pos=37219 blev=0,btyp=L w=16 a+d=25+6 face=50 MB
 46  736: CHAR[i] pos=37220 blev=0,btyp=L w=16 a+d=25+6 face=50 MB
 47  752: CHAR[n] pos=37221 blev=0,btyp=L w=16 a+d=25+6 face=50 MB
 48  768: CHAR[d] pos=37222 blev=0,btyp=L w=16 a+d=25+6 face=50 MB
 49  784: CHAR[o] pos=37223 blev=0,btyp=L w=16 a+d=25+6 face=50 MB
 50  800: CHAR[w] pos=37224 blev=0,btyp=L w=16 a+d=25+6 face=50 MB
 51  816: CHAR[-] pos=37225 blev=0,btyp=L w=16 a+d=25+6 face=50 MB
 52  832: CHAR[r] pos=37226 blev=0,btyp=L w=16 a+d=25+6 face=50 MB
 53  848: CHAR[e] pos=37227 blev=0,btyp=L w=16 a+d=25+6 face=50 MB
 54  864: CHAR[l] pos=37228 blev=0,btyp=L w=16 a+d=25+6 face=50 MB
 55  880: CHAR[a] pos=37229 blev=0,btyp=L w=16 a+d=25+6 face=50 MB
 56  896: CHAR[t] pos=37230 blev=0,btyp=L w=16 a+d=25+6 face=50 MB
 57  912: CHAR[i] pos=37231 blev=0,btyp=L w=16 a+d=25+6 face=50 MB
 58  928: CHAR[v] pos=37232 blev=0,btyp=L w=16 a+d=25+6 face=50 MB
---Type <return> to continue, or q <return> to quit---
 59  944: CHAR[e] pos=37233 blev=0,btyp=L w=16 a+d=25+6 face=50 MB
 60  960: CHAR[.] pos=37234 blev=0,btyp=L w=16 a+d=25+6 face=50 MB
 61  976: CHAR[ ] pos=37235 blev=0,btyp=L w=16 a+d=25+6 face=50 MB
 62  992: CHAR[ ] pos=37236 blev=0,btyp=L w=16 a+d=25+6 face=50 MB
 63 1008: CHAR[*] pos=37237 blev=0,btyp=L w=16 a+d=25+6 face=50 MB
 64 1024: CHAR[/] pos=37238 blev=0,btyp=L w=16 a+d=25+6 face=50 MB
 65 1040: CHAR[ ] pos=0 blev=0,btyp=B w=16 a+d=25+6 MB
(gdb) 






Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#27668; Package emacs. (Fri, 14 Jul 2017 08:04:02 GMT) Full text and rfc822 format available.

Message #56 received at submit <at> debbugs.gnu.org (full text, mbox):

From: Eli Zaretskii <eliz <at> gnu.org>
To: bug-gnu-emacs <at> gnu.org
Subject: Re: bug#27668: 26.0.50; Crash with display-line-numbers t
Date: Fri, 14 Jul 2017 11:03:48 +0300
> From: Robert Pluim <rpluim <at> gmail.com>
> Date: Thu, 13 Jul 2017 21:35:45 +0200
> 
> Eli Zaretskii <eliz <at> gnu.org> writes:
> 
> >> From: Robert Pluim <rpluim <at> gmail.com>
> >> Date: Thu, 13 Jul 2017 20:17:51 +0200
> >> 
> >> (gdb) p  it->glyph_row->used[TEXT_AREA]
> >> $1 = 66
> >> 
> >> (gdb) bt
> >> #0  terminate_due_to_signal (sig=sig <at> entry=6, backtrace_limit=backtrace_limit <at> entry=2147483647) at emacs.c:363
> >> #1  0x00000000005a5084 in die (msg=msg <at> entry=0x6987d8 "pdl->kind == SPECPDL_BACKTRACE", file=file <at> entry=0x698448 "eval.c", line=line <at> entry=150) at alloc.c:7348
> >> #2  0x0000000000419f3b in backtrace_function (pdl=<optimized out>) at eval.c:150
> >> #3  <function called from gdb>
> >> #4  maybe_produce_line_number (it=it <at> entry=0x7fffffff8130) at xdisp.c:21010
> >> #5  0x0000000000465365 in display_line (it=it <at> entry=0x7fffffff8130, cursor_vpos=cursor_vpos <at> entry=16) at xdisp.c:21225
> >> #6  0x00000000004672bd in try_window (window=..., window <at> entry=XIL(0x146d7d5), pos=..., flags=flags <at> entry=1) at xdisp.c:17544
> >> #7  0x000000000047f9ab in redisplay_window (window=XIL(0x146d7d5), just_this_one_p=just_this_one_p <at> entry=false) at xdisp.c:16991
> >> #8  0x00000000004831fb in redisplay_window_0 (window=..., window <at> entry=XIL(0x146d7d5)) at xdisp.c:14751
> >
> > Curiouser and curiouser...
> >
> > OK, in frame #5, the one in display_line, what do these produce:
> >
> >   (gdb) p it->current
> >   (gdb) pgrowx it->glyph_row
> 
> (gdb) p it->current
> $2 = {
>   pos = {
>     charpos = 37180, 
>     bytepos = 37180
>   }, 
>   overlay_string_index = -1, 
>   string_pos = {
>     charpos = -1, 
>     bytepos = -1
>   }, 
>   dpvec_index = -1
> }
> (gdb) pgrowx it->glyph_row
> TEXT: 66 glyphs
>   0    0: CHAR[ ] pos=-1 blev=2,btyp=EN w=16 a+d=25+6 face=51 MB AVOID
>   1   16: CHAR[1] pos=-1 blev=2,btyp=EN w=16 a+d=25+6 face=51 MB AVOID
>   2   32: CHAR[2] pos=-1 blev=2,btyp=EN w=16 a+d=25+6 face=51 MB AVOID
>   3   48: CHAR[6] pos=-1 blev=2,btyp=EN w=16 a+d=25+6 face=51 MB AVOID
>   4   64: CHAR[1] pos=-1 blev=2,btyp=EN w=16 a+d=25+6 face=51 MB AVOID
>   5   80: CHAR[ ] pos=-1 blev=2,btyp=EN w=16 a+d=25+6 face=51 MB AVOID
>   6   96: CHAR[ ] pos=37180 blev=0,btyp=L w=16 a+d=25+6 MB

Hmm...  I'm not sure how this happened, but I have a theory.  I've now
made a change in master based on that theory, and also added an
assertion where you previously had to set a breakpoint.  Please see if
the current master fixes the problem and doesn't hit the assertion in
maybe_produce_line_number.

Thanks.




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#27668; Package emacs. (Fri, 14 Jul 2017 09:00:01 GMT) Full text and rfc822 format available.

Message #59 received at submit <at> debbugs.gnu.org (full text, mbox):

From: Robert Pluim <rpluim <at> gmail.com>
To: bug-gnu-emacs <at> gnu.org
Subject: Re: bug#27668: 26.0.50; Crash with display-line-numbers t
Date: Fri, 14 Jul 2017 10:59:17 +0200
Eli Zaretskii <eliz <at> gnu.org> writes:

>> From: Robert Pluim <rpluim <at> gmail.com>
>> (gdb) pgrowx it->glyph_row
>> TEXT: 66 glyphs
>>   0    0: CHAR[ ] pos=-1 blev=2,btyp=EN w=16 a+d=25+6 face=51 MB AVOID
>>   1   16: CHAR[1] pos=-1 blev=2,btyp=EN w=16 a+d=25+6 face=51 MB AVOID
>>   2   32: CHAR[2] pos=-1 blev=2,btyp=EN w=16 a+d=25+6 face=51 MB AVOID
>>   3   48: CHAR[6] pos=-1 blev=2,btyp=EN w=16 a+d=25+6 face=51 MB AVOID
>>   4   64: CHAR[1] pos=-1 blev=2,btyp=EN w=16 a+d=25+6 face=51 MB AVOID
>>   5   80: CHAR[ ] pos=-1 blev=2,btyp=EN w=16 a+d=25+6 face=51 MB AVOID
>>   6   96: CHAR[ ] pos=37180 blev=0,btyp=L w=16 a+d=25+6 MB
>
> Hmm...  I'm not sure how this happened, but I have a theory.  I've now
> made a change in master based on that theory, and also added an
> assertion where you previously had to set a breakpoint.  Please see if
> the current master fixes the problem and doesn't hit the assertion in
> maybe_produce_line_number.

git describe  HEAD
emacs-24.5-rc3-fixed-13053-g60d24e1681

(gdb) run
Starting program: /home/rpluim/repos/emacs-master/src/emacs 
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".
[New Thread 0x7fffe4de5700 (LWP 6631)]
[New Thread 0x7fffdffff700 (LWP 6632)]
[New Thread 0x7fffdf5f1700 (LWP 6633)]

xdisp.c:21012: Emacs fatal error: assertion failed: it->glyph_row == NULL || it->glyph_row->used[TEXT_AREA] == 0

Thread 1 "emacs" hit Breakpoint 1, terminate_due_to_signal (sig=sig <at> entry=6, 
    backtrace_limit=backtrace_limit <at> entry=2147483647) at emacs.c:363
363	{
(gdb) bt
#0  terminate_due_to_signal (sig=sig <at> entry=6, backtrace_limit=backtrace_limit <at> entry=2147483647) at emacs.c:363
#1  0x00000000005a4ed4 in die (msg=msg <at> entry=0x67aec0 "it->glyph_row == NULL || it->glyph_row->used[TEXT_AREA] == 0", 
    file=file <at> entry=0x678e68 "xdisp.c", line=line <at> entry=21012) at alloc.c:7348
#2  0x000000000045befb in maybe_produce_line_number (it=it <at> entry=0x7fffffff8130) at xdisp.c:21012
#3  0x0000000000465335 in display_line (it=it <at> entry=0x7fffffff8130, cursor_vpos=cursor_vpos <at> entry=9) at xdisp.c:21227
#4  0x000000000046728d in try_window (window=..., window <at> entry=XIL(0x146e6c5), pos=..., flags=flags <at> entry=1)
    at xdisp.c:17544
#5  0x000000000047f8fb in redisplay_window (window=XIL(0x146e6c5), just_this_one_p=just_this_one_p <at> entry=false)
    at xdisp.c:16991
#6  0x000000000048314b in redisplay_window_0 (window=..., window <at> entry=XIL(0x146e6c5)) at xdisp.c:14751
#7  0x00000000005c7b44 in internal_condition_case_1 (bfun=bfun <at> entry=0x483120 <redisplay_window_0>, arg=..., 
    handlers=..., hfun=hfun <at> entry=0x435900 <redisplay_window_error>) at eval.c:1350
#8  0x000000000043d100 in redisplay_windows (window=...) at xdisp.c:14731
#9  0x000000000043d0c9 in redisplay_windows (window=...) at xdisp.c:14725
#10 0x000000000046c915 in redisplay_internal () at xdisp.c:14220
#11 0x000000000046eea5 in redisplay () at xdisp.c:13440
#12 0x0000000000545b4b in read_char (commandflag=commandflag <at> entry=1, map=..., map <at> entry=XIL(0x346a793), 
    prev_event=..., used_mouse_menu=used_mouse_menu <at> entry=0x7fffffffd6cb, end_time=end_time <at> entry=0x0)
    at keyboard.c:2484
#13 0x0000000000548c2b in read_key_sequence (keybuf=keybuf <at> entry=0x7fffffffd7b0, prompt=..., prompt <at> entry=XIL(0), 
    dont_downcase_last=dont_downcase_last <at> entry=false, can_return_switch_frame=can_return_switch_frame <at> entry=true, 
    fix_current_buffer=fix_current_buffer <at> entry=true, prevent_redisplay=prevent_redisplay <at> entry=false, bufsize=30)
    at keyboard.c:9151
#14 0x000000000054aee6 in command_loop_1 () at keyboard.c:1372
#15 0x00000000005c7a77 in internal_condition_case (bfun=bfun <at> entry=0x54ac40 <command_loop_1>, handlers=..., 
    handlers <at> entry=XIL(0x4fb0), hfun=hfun <at> entry=0x53e5c0 <cmd_error>) at eval.c:1326
#16 0x0000000000537f2c in command_loop_2 (ignore=..., ignore <at> entry=XIL(0)) at keyboard.c:1114
#17 0x00000000005c79bc in internal_catch (tag=..., tag <at> entry=XIL(0xc1e0), func=func <at> entry=0x537f10 <command_loop_2>, 
    arg=..., arg <at> entry=XIL(0)) at eval.c:1091
#18 0x0000000000537ee9 in command_loop () at keyboard.c:1093
#19 0x000000000053e0e6 in recursive_edit_1 () at keyboard.c:699
#20 0x000000000053e463 in Frecursive_edit () at keyboard.c:770
#21 0x000000000041aceb in main (argc=<optimized out>, argv=0x7fffffffdb58) at emacs.c:1706

Lisp Backtrace:

eval.c:150: Emacs fatal error: assertion failed: pdl->kind == SPECPDL_BACKTRACE

Thread 1 "emacs" hit Breakpoint 1, terminate_due_to_signal (sig=sig <at> entry=6, 
    backtrace_limit=backtrace_limit <at> entry=2147483647) at emacs.c:363
363	{

I was looking at a commit in Magit, and had just hit enter in a diff
hunk to view the source file containing the change, so it's happening
when we switch from non-line-number to line-number mode.

Robert





Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#27668; Package emacs. (Fri, 14 Jul 2017 09:48:02 GMT) Full text and rfc822 format available.

Message #62 received at submit <at> debbugs.gnu.org (full text, mbox):

From: Robert Pluim <rpluim <at> gmail.com>
To: bug-gnu-emacs <at> gnu.org
Subject: Re: bug#27668: 26.0.50; Crash with display-line-numbers t
Date: Fri, 14 Jul 2017 11:47:03 +0200
Robert Pluim <rpluim <at> gmail.com> writes:

> Eli Zaretskii <eliz <at> gnu.org> writes:
>
>>> From: Robert Pluim <rpluim <at> gmail.com>
>>> (gdb) pgrowx it->glyph_row
>>> TEXT: 66 glyphs
>>>   0    0: CHAR[ ] pos=-1 blev=2,btyp=EN w=16 a+d=25+6 face=51 MB AVOID
>>>   1   16: CHAR[1] pos=-1 blev=2,btyp=EN w=16 a+d=25+6 face=51 MB AVOID
>>>   2   32: CHAR[2] pos=-1 blev=2,btyp=EN w=16 a+d=25+6 face=51 MB AVOID
>>>   3   48: CHAR[6] pos=-1 blev=2,btyp=EN w=16 a+d=25+6 face=51 MB AVOID
>>>   4   64: CHAR[1] pos=-1 blev=2,btyp=EN w=16 a+d=25+6 face=51 MB AVOID
>>>   5   80: CHAR[ ] pos=-1 blev=2,btyp=EN w=16 a+d=25+6 face=51 MB AVOID
>>>   6   96: CHAR[ ] pos=37180 blev=0,btyp=L w=16 a+d=25+6 MB
>>
>> Hmm...  I'm not sure how this happened, but I have a theory.  I've now
>> made a change in master based on that theory, and also added an
>> assertion where you previously had to set a breakpoint.  Please see if
>> the current master fixes the problem and doesn't hit the assertion in
>> maybe_produce_line_number.
>
> git describe  HEAD
> emacs-24.5-rc3-fixed-13053-g60d24e1681

All this TLS discussion has at least yielded something useful: a reproduction
recipe:

src/emacs -Q
; Put the following in *scratch*
(setq display-line-number t)
C-x C-e 
M-x eww https://revoked.badssl.com/
q
*boom*

Regards

Robert





Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#27668; Package emacs. (Fri, 14 Jul 2017 09:52:01 GMT) Full text and rfc822 format available.

Message #65 received at submit <at> debbugs.gnu.org (full text, mbox):

From: Eli Zaretskii <eliz <at> gnu.org>
To: bug-gnu-emacs <at> gnu.org
Subject: Re: bug#27668: 26.0.50; Crash with display-line-numbers t
Date: Fri, 14 Jul 2017 12:51:06 +0300
> From: Robert Pluim <rpluim <at> gmail.com>
> Date: Fri, 14 Jul 2017 10:59:17 +0200
> 
> xdisp.c:21012: Emacs fatal error: assertion failed: it->glyph_row == NULL || it->glyph_row->used[TEXT_AREA] == 0
> 
> Thread 1 "emacs" hit Breakpoint 1, terminate_due_to_signal (sig=sig <at> entry=6, 
>     backtrace_limit=backtrace_limit <at> entry=2147483647) at emacs.c:363
> 363	{
> (gdb) bt
> #0  terminate_due_to_signal (sig=sig <at> entry=6, backtrace_limit=backtrace_limit <at> entry=2147483647) at emacs.c:363
> #1  0x00000000005a4ed4 in die (msg=msg <at> entry=0x67aec0 "it->glyph_row == NULL || it->glyph_row->used[TEXT_AREA] == 0", 
>     file=file <at> entry=0x678e68 "xdisp.c", line=line <at> entry=21012) at alloc.c:7348
> #2  0x000000000045befb in maybe_produce_line_number (it=it <at> entry=0x7fffffff8130) at xdisp.c:21012
> #3  0x0000000000465335 in display_line (it=it <at> entry=0x7fffffff8130, cursor_vpos=cursor_vpos <at> entry=9) at xdisp.c:21227
> #4  0x000000000046728d in try_window (window=..., window <at> entry=XIL(0x146e6c5), pos=..., flags=flags <at> entry=1)
>     at xdisp.c:17544
> #5  0x000000000047f8fb in redisplay_window (window=XIL(0x146e6c5), just_this_one_p=just_this_one_p <at> entry=false)
>     at xdisp.c:16991

In this frame #5, in redisplay_window, which of the conditions in the
following 'if' clause are true?

      /* Try to redisplay starting at same place as before.
         If point has not moved off frame, accept the results.  */
      if (!current_matrix_up_to_date_p
	  /* Don't use try_window_reusing_current_matrix in this case
	     because a window scroll function can have changed the
	     buffer.  */
	  || !NILP (Vwindow_scroll_functions)
	  || MINI_WINDOW_P (w)
	  || !(used_current_matrix_p
	       = try_window_reusing_current_matrix (w)))
	{
	  IF_DEBUG (debug_method_add (w, "1"));
	  if (try_window (window, startp, TRY_WINDOW_CHECK_MARGINS) < 0)

It cannot be MINI_WINDOW_P, so it's either current_matrix_up_to_date_p
is false, or your window-scroll-functions is non-nil, or we called
try_window_reusing_current_matrix.  In the latter case, I'd expect my
recent change to fix the problem, so I guess that function wasn't
called, and some other condition caused us to call try_window.  Or
maybe I'm missing something here.

> I was looking at a commit in Magit, and had just hit enter in a diff
> hunk to view the source file containing the change, so it's happening
> when we switch from non-line-number to line-number mode.

How do you "switch from non-line-number to line-number mode"?  I tried
several ways I could think about, but couldn't reproduce the issue.  I
wonder what's different in your case that you hit this problem so
frequently.

Did the previous times also happened when switching from a Magit
buffer to a buffer under display-line-numbers?




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#27668; Package emacs. (Fri, 14 Jul 2017 10:05:02 GMT) Full text and rfc822 format available.

Message #68 received at submit <at> debbugs.gnu.org (full text, mbox):

From: Eli Zaretskii <eliz <at> gnu.org>
To: bug-gnu-emacs <at> gnu.org
Subject: Re: bug#27668: 26.0.50; Crash with display-line-numbers t
Date: Fri, 14 Jul 2017 13:04:04 +0300
> From: Robert Pluim <rpluim <at> gmail.com>
> Date: Fri, 14 Jul 2017 11:47:03 +0200
> 
> src/emacs -Q
> ; Put the following in *scratch*
> (setq display-line-number t)
> C-x C-e 
> M-x eww https://revoked.badssl.com/
> q
> *boom*

Thanks.

Unfortunately, it doesn't crash here...




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#27668; Package emacs. (Fri, 14 Jul 2017 11:37:02 GMT) Full text and rfc822 format available.

Message #71 received at submit <at> debbugs.gnu.org (full text, mbox):

From: Robert Pluim <rpluim <at> gmail.com>
To: bug-gnu-emacs <at> gnu.org
Subject: Re: bug#27668: 26.0.50; Crash with display-line-numbers t
Date: Fri, 14 Jul 2017 13:36:16 +0200
Eli Zaretskii <eliz <at> gnu.org> writes:

>> From: Robert Pluim <rpluim <at> gmail.com>
>> Date: Fri, 14 Jul 2017 11:47:03 +0200
>> 
>> src/emacs -Q
>> ; Put the following in *scratch*
>> (setq display-line-number t)
>> C-x C-e 
>> M-x eww https://revoked.badssl.com/
>> q
>> *boom*
>
> Thanks.
>
> Unfortunately, it doesn't crash here...

Even if you fix my typo and use display-line-numbers instead of display-line-number?





Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#27668; Package emacs. (Fri, 14 Jul 2017 11:46:01 GMT) Full text and rfc822 format available.

Message #74 received at submit <at> debbugs.gnu.org (full text, mbox):

From: Robert Pluim <rpluim <at> gmail.com>
To: bug-gnu-emacs <at> gnu.org
Subject: Re: bug#27668: 26.0.50; Crash with display-line-numbers t
Date: Fri, 14 Jul 2017 13:45:04 +0200
Eli Zaretskii <eliz <at> gnu.org> writes:

>> From: Robert Pluim <rpluim <at> gmail.com>
>>
> In this frame #5, in redisplay_window, which of the conditions in the
> following 'if' clause are true?
>
>       /* Try to redisplay starting at same place as before.
>          If point has not moved off frame, accept the results.  */
>       if (!current_matrix_up_to_date_p
> 	  /* Don't use try_window_reusing_current_matrix in this case
> 	     because a window scroll function can have changed the
> 	     buffer.  */
> 	  || !NILP (Vwindow_scroll_functions)
> 	  || MINI_WINDOW_P (w)
> 	  || !(used_current_matrix_p
> 	       = try_window_reusing_current_matrix (w)))
> 	{
> 	  IF_DEBUG (debug_method_add (w, "1"));
> 	  if (try_window (window, startp, TRY_WINDOW_CHECK_MARGINS) < 0)
>
> It cannot be MINI_WINDOW_P, so it's either current_matrix_up_to_date_p
> is false, or your window-scroll-functions is non-nil, or we called
> try_window_reusing_current_matrix.  In the latter case, I'd expect my
> recent change to fix the problem, so I guess that function wasn't
> called, and some other condition caused us to call try_window.  Or
> maybe I'm missing something here.
>

(gdb) p used_current_matrix_p
$1 = false
(gdb) p Vwindow_scroll_functions
$2 = XIL(0)
(gdb) p w
$3 = <optimized out>
(gdb) p current_matrix_up_to_date_p
$4 = false

Would you like me to try an unoptimised build? CFLAGS=-O0 -ggdb or
similar?

>> I was looking at a commit in Magit, and had just hit enter in a diff
>> hunk to view the source file containing the change, so it's happening
>> when we switch from non-line-number to line-number mode.
>
> How do you "switch from non-line-number to line-number mode"?  I tried
> several ways I could think about, but couldn't reproduce the issue.  I
> wonder what's different in your case that you hit this problem so
> frequently.
>

Basically, I have a buffer where display-line-numbers is nil, then I
either switch to a buffer where it's t or visit a file where the
mode-hook sets it to t. In this case I was looking at a diff hunk,
where Magit does all sorts of highlighting and font-locking, and it
visits the underlying file for you when you hit RET

> Did the previous times also happened when switching from a Magit
> buffer to a buffer under display-line-numbers?

No, previous times were when calling C-x C-f from a buffer with
display-line-numbers t

Regards

Robert





Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#27668; Package emacs. (Fri, 14 Jul 2017 12:40:02 GMT) Full text and rfc822 format available.

Message #77 received at submit <at> debbugs.gnu.org (full text, mbox):

From: Eli Zaretskii <eliz <at> gnu.org>
To: bug-gnu-emacs <at> gnu.org
Subject: Re: bug#27668: 26.0.50; Crash with display-line-numbers t
Date: Fri, 14 Jul 2017 15:39:03 +0300
> From: Robert Pluim <rpluim <at> gmail.com>
> Date: Fri, 14 Jul 2017 13:36:16 +0200
> 
> Eli Zaretskii <eliz <at> gnu.org> writes:
> 
> >> From: Robert Pluim <rpluim <at> gmail.com>
> >> Date: Fri, 14 Jul 2017 11:47:03 +0200
> >> 
> >> src/emacs -Q
> >> ; Put the following in *scratch*
> >> (setq display-line-number t)
> >> C-x C-e 
> >> M-x eww https://revoked.badssl.com/
> >> q
> >> *boom*
> >
> > Thanks.
> >
> > Unfortunately, it doesn't crash here...
> 
> Even if you fix my typo and use display-line-numbers instead of display-line-number?

Yes, even then.




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#27668; Package emacs. (Fri, 14 Jul 2017 13:29:01 GMT) Full text and rfc822 format available.

Message #80 received at submit <at> debbugs.gnu.org (full text, mbox):

From: Eli Zaretskii <eliz <at> gnu.org>
To: bug-gnu-emacs <at> gnu.org
Subject: Re: bug#27668: 26.0.50; Crash with display-line-numbers t
Date: Fri, 14 Jul 2017 16:28:22 +0300
> From: Robert Pluim <rpluim <at> gmail.com>
> Date: Fri, 14 Jul 2017 13:45:04 +0200
> 
> >       /* Try to redisplay starting at same place as before.
> >          If point has not moved off frame, accept the results.  */
> >       if (!current_matrix_up_to_date_p
> > 	  /* Don't use try_window_reusing_current_matrix in this case
> > 	     because a window scroll function can have changed the
> > 	     buffer.  */
> > 	  || !NILP (Vwindow_scroll_functions)
> > 	  || MINI_WINDOW_P (w)
> > 	  || !(used_current_matrix_p
> > 	       = try_window_reusing_current_matrix (w)))
> > 	{
> > 	  IF_DEBUG (debug_method_add (w, "1"));
> > 	  if (try_window (window, startp, TRY_WINDOW_CHECK_MARGINS) < 0)
> >
> > It cannot be MINI_WINDOW_P, so it's either current_matrix_up_to_date_p
> > is false, or your window-scroll-functions is non-nil, or we called
> > try_window_reusing_current_matrix.  In the latter case, I'd expect my
> > recent change to fix the problem, so I guess that function wasn't
> > called, and some other condition caused us to call try_window.  Or
> > maybe I'm missing something here.
> >
> 
> (gdb) p used_current_matrix_p
> $1 = false
> (gdb) p Vwindow_scroll_functions
> $2 = XIL(0)
> (gdb) p w
> $3 = <optimized out>
> (gdb) p current_matrix_up_to_date_p
> $4 = false

So the trigger is current_matrix_up_to_date_p, which is false.  That
explains why my recent changes didn't solve the problem: the function
where I made those changes wasn't called.

> Would you like me to try an unoptimised build? CFLAGS=-O0 -ggdb or
> similar?

It cannot hurt, so please do.  Maybe this will give some valuable
hints.  (Please use "-gdwarf-4 -g3" instead of -ggdb, it should
provide a better debug info.)  Btw, I already did an optimized build,
but was unable to reproduce the problem there as well.

> Basically, I have a buffer where display-line-numbers is nil, then I
> either switch to a buffer where it's t or visit a file where the
> mode-hook sets it to t. In this case I was looking at a diff hunk,
> where Magit does all sorts of highlighting and font-locking, and it
> visits the underlying file for you when you hit RET
> 
> > Did the previous times also happened when switching from a Magit
> > buffer to a buffer under display-line-numbers?
> 
> No, previous times were when calling C-x C-f from a buffer with
> display-line-numbers t

That's what I tried, but the problem didn't happen.

When the assertion in maybe_produce_line_number is hit, what are the
values of it->vpos and it->glyph_row->y?  Are they always the same
values?  If they are, maybe we could put a watchpoint on the
corresponding glyph row and see who changes it.

The problem seems to be that display_line starts producing glyphs in a
glyph row which wasn't cleared, i.e. its used[1] counter is non-zero.
The call to prepare_desired_row at the beginning of display_line is
supposed to do that, but only if the row->enabled_p flag is reset.
This flag should be reset for all the glyph rows of the window's
desired_matrix, because redisplay calls clear_glyph_matrix for
w->desired_matrix, directly and indirectly, in many places.  Somehow
in your case either those calls to clear_glyph_matrix are bypassed or
some code sets the enabled_p flag at some point and doesn't reset it
before the call to try_window on line 16991 of xdisp.c.  I'm trying to
establish where does this happen and why.

Just to make sure I'm on the right track: if you make the change
below, does the problem go away?

diff --git a/src/xdisp.c b/src/xdisp.c
index 2aceb89..341a1e3 100644
--- a/src/xdisp.c
+++ b/src/xdisp.c
@@ -16988,6 +16988,7 @@ redisplay_window (Lisp_Object window, bool just_this_one_p)
 	       = try_window_reusing_current_matrix (w)))
 	{
 	  IF_DEBUG (debug_method_add (w, "1"));
+	  clear_glyph_matrix (w->desired_matrix);
 	  if (try_window (window, startp, TRY_WINDOW_CHECK_MARGINS) < 0)
 	    /* -1 means we need to scroll.
 	       0 means we need new matrices, but fonts_changed




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#27668; Package emacs. (Fri, 14 Jul 2017 14:49:01 GMT) Full text and rfc822 format available.

Message #83 received at submit <at> debbugs.gnu.org (full text, mbox):

From: Robert Pluim <rpluim <at> gmail.com>
To: bug-gnu-emacs <at> gnu.org
Subject: Re: bug#27668: 26.0.50; Crash with display-line-numbers t
Date: Fri, 14 Jul 2017 16:47:56 +0200
Eli Zaretskii <eliz <at> gnu.org> writes:

>> From: Robert Pluim <rpluim <at> gmail.com>
>> Would you like me to try an unoptimised build? CFLAGS=-O0 -ggdb or
>> similar?
>
> It cannot hurt, so please do.  Maybe this will give some valuable
> hints.  (Please use "-gdwarf-4 -g3" instead of -ggdb, it should
> provide a better debug info.)  Btw, I already did an optimized build,
> but was unable to reproduce the problem there as well.
>

I'll try that next, I think you're on the right track.

> When the assertion in maybe_produce_line_number is hit, what are the
> values of it->vpos and it->glyph_row->y?  Are they always the same
> values?  If they are, maybe we could put a watchpoint on the
> corresponding glyph row and see who changes it.

They're both always 0.

21012	  eassert (it->glyph_row == NULL || it->glyph_row->used[TEXT_AREA] == 0);
(gdb) p it->vpos
$5 = 0
(gdb) p it->glyph_row->y
$6 = 0

> The problem seems to be that display_line starts producing glyphs in a
> glyph row which wasn't cleared, i.e. its used[1] counter is non-zero.
> The call to prepare_desired_row at the beginning of display_line is
> supposed to do that, but only if the row->enabled_p flag is reset.
> This flag should be reset for all the glyph rows of the window's
> desired_matrix, because redisplay calls clear_glyph_matrix for
> w->desired_matrix, directly and indirectly, in many places.  Somehow
> in your case either those calls to clear_glyph_matrix are bypassed or
> some code sets the enabled_p flag at some point and doesn't reset it
> before the call to try_window on line 16991 of xdisp.c.  I'm trying to
> establish where does this happen and why.
>
> Just to make sure I'm on the right track: if you make the change
> below, does the problem go away?
>

Yes. Without the patch I ran my eww recipe three times, it crashed
three times. With the patch, I ran it three times in 3 separate
instances of emacs, no crash so far (and I tried a bunch of the magit
related operations as well for good measure, and I'm using the
resulting emacs to send this).

Regards

Robert





Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#27668; Package emacs. (Fri, 14 Jul 2017 15:08:02 GMT) Full text and rfc822 format available.

Message #86 received at submit <at> debbugs.gnu.org (full text, mbox):

From: Robert Pluim <rpluim <at> gmail.com>
To: bug-gnu-emacs <at> gnu.org
Subject: Re: bug#27668: 26.0.50; Crash with display-line-numbers t
Date: Fri, 14 Jul 2017 17:07:17 +0200
Robert Pluim <rpluim <at> gmail.com> writes:

> Eli Zaretskii <eliz <at> gnu.org> writes:
>
>>> From: Robert Pluim <rpluim <at> gmail.com>
>>> Would you like me to try an unoptimised build? CFLAGS=-O0 -ggdb or
>>> similar?
>>
>> It cannot hurt, so please do.  Maybe this will give some valuable
>> hints.  (Please use "-gdwarf-4 -g3" instead of -ggdb, it should
>> provide a better debug info.)  Btw, I already did an optimized build,
>> but was unable to reproduce the problem there as well.
>>
>
> I'll try that next, I think you're on the right track.
>

Two more data points:

- building with CFLAGS='-gdwarf-4 -g3 -O0' results in an emacs that I
can't get to crash
- building with default CFLAGS='-g3 -O2', but using the previous
system compiler also results in an emacs that I can't crash. That one
reports:

$ gcc-4.9 -v
Using built-in specs.
COLLECT_GCC=gcc-4.9
COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-linux-gnu/4.9/lto-wrapper
Target: x86_64-linux-gnu
Configured with: ../src/configure -v --with-pkgversion='Ubuntu 4.9.3-13ubuntu2' --with-bugurl=file:///usr/share/doc/gcc-4.9/README.Bugs --enable-languages=c,c++,java,go,d,fortran,objc,obj-c++ --prefix=/usr --program-suffix=-4.9 --enable-shared --enable-linker-build-id --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --with-gxx-include-dir=/usr/include/c++/4.9 --libdir=/usr/lib --enable-nls --with-sysroot=/ --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --enable-gnu-unique-object --disable-vtable-verify --enable-plugin --with-system-zlib --disable-browser-plugin --enable-java-awt=gtk --enable-gtk-cairo --with-java-home=/usr/lib/jvm/java-1.5.0-gcj-4.9-amd64/jre --enable-java-home --with-jvm-root-dir=/usr/lib/jvm/java-1.5.0-gcj-4.9-amd64 --with-jvm-jar-dir=/usr/lib/jvm-exports/java-1.5.0-gcj-4.9-amd64 --with-arch-directory=amd64 --with-ecj-jar=/usr/share/java/eclipse-ecj.jar --enable-objc-gc --enable-multiarch --disable-werror --with-arch-32=i686 --with-abi=m64 --with-multilib-list=m32,m64,mx32 --enable-multilib --with-tune=generic --enable-checking=release --build=x86_64-linux-gnu --host=x86_64-linux-gnu --target=x86_64-linux-gnu
Thread model: posix
gcc version 4.9.3 (Ubuntu 4.9.3-13ubuntu2) 

Regards

Robert





Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#27668; Package emacs. (Fri, 14 Jul 2017 15:15:01 GMT) Full text and rfc822 format available.

Message #89 received at submit <at> debbugs.gnu.org (full text, mbox):

From: Eli Zaretskii <eliz <at> gnu.org>
To: bug-gnu-emacs <at> gnu.org
Subject: Re: bug#27668: 26.0.50; Crash with display-line-numbers t
Date: Fri, 14 Jul 2017 18:14:44 +0300
> From: Robert Pluim <rpluim <at> gmail.com>
> Date: Fri, 14 Jul 2017 16:47:56 +0200
> 
> > When the assertion in maybe_produce_line_number is hit, what are the
> > values of it->vpos and it->glyph_row->y?  Are they always the same
> > values?  If they are, maybe we could put a watchpoint on the
> > corresponding glyph row and see who changes it.
> 
> They're both always 0.
> 
> 21012	  eassert (it->glyph_row == NULL || it->glyph_row->used[TEXT_AREA] == 0);
> (gdb) p it->vpos
> $5 = 0
> (gdb) p it->glyph_row->y
> $6 = 0

That's the first row of desired_matrix.

> > The problem seems to be that display_line starts producing glyphs in a
> > glyph row which wasn't cleared, i.e. its used[1] counter is non-zero.
> > The call to prepare_desired_row at the beginning of display_line is
> > supposed to do that, but only if the row->enabled_p flag is reset.
> > This flag should be reset for all the glyph rows of the window's
> > desired_matrix, because redisplay calls clear_glyph_matrix for
> > w->desired_matrix, directly and indirectly, in many places.  Somehow
> > in your case either those calls to clear_glyph_matrix are bypassed or
> > some code sets the enabled_p flag at some point and doesn't reset it
> > before the call to try_window on line 16991 of xdisp.c.  I'm trying to
> > establish where does this happen and why.
> >
> > Just to make sure I'm on the right track: if you make the change
> > below, does the problem go away?
> >
> 
> Yes. Without the patch I ran my eww recipe three times, it crashed
> three times. With the patch, I ran it three times in 3 separate
> instances of emacs, no crash so far (and I tried a bunch of the magit
> related operations as well for good measure, and I'm using the
> resulting emacs to send this).

Great, thanks.  So here's the next step: we set a hardware watchpoint
on the enabled_p flag of that glyph row, and see who sets it.  You
will need to remove that line which fixed the problem, I guess.

Below please find the transcript of what I did to set up the snare:

 (gdb) break Fredraw_display
 (gdb) r -Q

Inside Emacs:

  ; Put the following in *scratch*
  (setq display-line-number t)
  C-x C-e 
  M-x eww RET https://revoked.badssl.com/ RET
  M-x redraw-display RET

Now GDB kicks in, so:

  3031      FOR_EACH_FRAME (tail, frame)
  (gdb) p selected_window
  $1 = XIL(0xa000000001b4e6f0)
  (gdb) p XWINDOW(selected_window)->contents
  $2 = XIL(0xa000000007047b30)
  (gdb) p XWINDOW(selected_window)
  $3 = (struct window *) 0x1b4e6f0 <dumped_data+3998768>
  (gdb) p XWINDOW(selected_window)->contents
  $4 = XIL(0xa000000007047b30)
  (gdb) xtype
  Lisp_Vectorlike
  PVEC_BUFFER
  (gdb) xbuffer
  $5 = (struct buffer *) 0x7047b30
  (unsigned char *) 0x6ffc1ec "*eww*"
  (gdb) p XWINDOW(selected_window)->desired_matrix
  $6 = (struct glyph_matrix *) 0x6850008
  (gdb) p XWINDOW(selected_window)->desired_matrix->rows
  $7 = (struct glyph_row *) 0xfae158
  (gdb) p XWINDOW(selected_window)->desired_matrix->rows->enabled_p
  $8 = false
  (gdb) watch -l $3->desired_matrix->rows->enabled_p
  Hardware watchpoint 4: -location $3->desired_matrix->rows->enabled_p
  (gdb) commands
  Type commands for breakpoint(s) 4, one per line.
  End with a line saying just "end".
  >bt
  >continue
  >end
  (gdb) c
  Continuing.

(Note that the $3 thing could be a different number in your case: it
depends on the number GDB gives to the output where it shows the
'struct window' of the selected-window.  The commands I typed after
that were just to make sure I'm in the right buffer and so the window
is indeed the one we are interested in.)

Back in Emacs, type 'q'.  This should produce several hits of the
watchpoint, and show the backtraces; post them here.

In my case, I see that prepare_desired_row sets the flag, then
update_window calls clear_glyph_matrix which resets the flag.  This is
the expected sequence: update_window is called after we've actually
redrawn the window to the glass, so it clears the glyph matrix in
preparation for the next redisplay.  In your case, I expect to see
at least one more hit, and the assertion violation.




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#27668; Package emacs. (Mon, 17 Jul 2017 14:40:02 GMT) Full text and rfc822 format available.

Message #92 received at submit <at> debbugs.gnu.org (full text, mbox):

From: Robert Pluim <rpluim <at> gmail.com>
To: bug-gnu-emacs <at> gnu.org
Subject: Re: bug#27668: 26.0.50; Crash with display-line-numbers t
Date: Mon, 17 Jul 2017 16:38:48 +0200
Eli Zaretskii <eliz <at> gnu.org> writes:

> Great, thanks.  So here's the next step: we set a hardware watchpoint
> on the enabled_p flag of that glyph row, and see who sets it.  You
> will need to remove that line which fixed the problem, I guess.

Eli, I haven't forgotten about this, but my reproduction recipe has
stopped working :-(

If it starts crashing again I'll look again. In the meantime I don't
think anyone else has reported any similar problems, so it must be
something very specific in my setup.

Thanks

Robert





Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#27668; Package emacs. (Mon, 17 Jul 2017 15:35:01 GMT) Full text and rfc822 format available.

Message #95 received at submit <at> debbugs.gnu.org (full text, mbox):

From: Eli Zaretskii <eliz <at> gnu.org>
To: bug-gnu-emacs <at> gnu.org
Subject: Re: bug#27668: 26.0.50; Crash with display-line-numbers t
Date: Mon, 17 Jul 2017 18:34:23 +0300
> From: Robert Pluim <rpluim <at> gmail.com>
> Date: Mon, 17 Jul 2017 16:38:48 +0200
> 
> Eli, I haven't forgotten about this, but my reproduction recipe has
> stopped working :-(
> 
> If it starts crashing again I'll look again. In the meantime I don't
> think anyone else has reported any similar problems, so it must be
> something very specific in my setup.

OK, thanks for your efforts.  If this is a real problem, it will be
back.




Merged 27668 28710. Request was from Eli Zaretskii <eliz <at> gnu.org> to control <at> debbugs.gnu.org. (Fri, 06 Oct 2017 08:40:02 GMT) Full text and rfc822 format available.

bug archived. Request was from Debbugs Internal Request <help-debbugs <at> gnu.org> to internal_control <at> debbugs.gnu.org. (Tue, 07 Nov 2017 12:24:03 GMT) Full text and rfc822 format available.

This bug report was last modified 6 years and 164 days ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.