Subject: Re: bug#28710: 27.0.50; eassert failure in maybe_produce_line_number

From: Alex <[email-masked]>
Date: Thu, 05 Oct 2017 17:51:41 -0600

Eli Zaretskii <[email-masked]> writes:

>> From: Alex <[email-masked]>
>> Date: Wed, 04 Oct 2017 16:31:33 -0600
>> 
>> 1. Open up a diff in magit (e.g., M-x magit-status then RET on the first
>> line).
>> 2. Press RET on an added line.
>> 3. In the opened buffer, do M-: (setq display-line-numbers t)
>> 4. C-x b RET
>> 5. Press RET on the line again.
>
> It doesn't crash for me here.  But since it's hardly repeatable for
> you, I'm not surprised.

What about using the below recipe?

>> #2  0x00000000006233ad in die (msg=0x72ad60 "it->glyph_row == NULL || it->glyph_row->used[TEXT_AREA] == 0", file=0x726c3d "xdisp.c", line=21061) at alloc.c:7419
>> #3  0x0000000000483af6 in maybe_produce_line_number (it=0x7ffef1f01900) at xdisp.c:21061
>
> If you go to frame #3, in maybe_produce_line_number, and type
>
>   (gdb) pgrowx it->glyph_row
>
> what does that produce?  (You will need to source src/.gdbinit for the
> pgrowx command to work.)

TEXT: 34 glyphs
  0    0: CHAR[ ] pos=-1 blev=2,btyp=EN w=9 a+d=14+4 face=35 MB AVOID
  1    9: CHAR[3] pos=-1 blev=2,btyp=EN w=9 a+d=14+4 face=35 MB AVOID
  2   18: CHAR[1] pos=-1 blev=2,btyp=EN w=9 a+d=14+4 face=35 MB AVOID
  3   27: CHAR[3] pos=-1 blev=2,btyp=EN w=9 a+d=14+4 face=35 MB AVOID
  4   36: CHAR[0] pos=-1 blev=2,btyp=EN w=9 a+d=14+4 face=35 MB AVOID
  5   45: CHAR[ ] pos=-1 blev=2,btyp=EN w=9 a+d=14+4 face=35 MB AVOID
  6   54: CHAR[@] pos=123808 blev=0,btyp=L w=9 a+d=14+4 MB
  7   63: CHAR[c] pos=123809 blev=0,btyp=L w=9 a+d=14+4 face=30 MB
  8   72: CHAR[o] pos=123810 blev=0,btyp=L w=9 a+d=14+4 face=30 MB
  9   81: CHAR[d] pos=123811 blev=0,btyp=L w=9 a+d=14+4 face=30 MB
 10   90: CHAR[e] pos=123812 blev=0,btyp=L w=9 a+d=14+4 face=30 MB
 11   99: CHAR[{] pos=123813 blev=0,btyp=L w=9 a+d=14+4 MB
 12  108: CHAR[f] pos=123814 blev=0,btyp=L w=9 a+d=14+4 face=33 MB
 13  117: CHAR[i] pos=123815 blev=0,btyp=L w=9 a+d=14+4 face=33 MB
 14  126: CHAR[l] pos=123816 blev=0,btyp=L w=9 a+d=14+4 face=33 MB
 15  135: CHAR[e] pos=123817 blev=0,btyp=L w=9 a+d=14+4 face=33 MB
 16  144: CHAR[-] pos=123818 blev=0,btyp=L w=9 a+d=14+4 face=33 MB
 17  153: CHAR[n] pos=123819 blev=0,btyp=L w=9 a+d=14+4 face=33 MB
 18  162: CHAR[a] pos=123820 blev=0,btyp=L w=9 a+d=14+4 face=33 MB
 19  171: CHAR[m] pos=123821 blev=0,btyp=L w=9 a+d=14+4 face=33 MB
 20  180: CHAR[e] pos=123822 blev=0,btyp=L w=9 a+d=14+4 face=33 MB
 21  189: CHAR[-] pos=123823 blev=0,btyp=L w=9 a+d=14+4 face=33 MB
 22  198: CHAR[d] pos=123824 blev=0,btyp=L w=9 a+d=14+4 face=33 MB
 23  207: CHAR[i] pos=123825 blev=0,btyp=L w=9 a+d=14+4 face=33 MB
 24  216: CHAR[r] pos=123826 blev=0,btyp=L w=9 a+d=14+4 face=33 MB
 25  225: CHAR[e] pos=123827 blev=0,btyp=L w=9 a+d=14+4 face=33 MB
 26  234: CHAR[c] pos=123828 blev=0,btyp=L w=9 a+d=14+4 face=33 MB
 27  243: CHAR[t] pos=123829 blev=0,btyp=L w=9 a+d=14+4 face=33 MB
 28  252: CHAR[o] pos=123830 blev=0,btyp=L w=9 a+d=14+4 face=33 MB
 29  261: CHAR[r] pos=123831 blev=0,btyp=L w=9 a+d=14+4 face=33 MB
 30  270: CHAR[y] pos=123832 blev=0,btyp=L w=9 a+d=14+4 face=33 MB
 31  279: CHAR[}] pos=123833 blev=0,btyp=L w=9 a+d=14+4 MB
 32  288: CHAR[,] pos=123834 blev=0,btyp=L w=9 a+d=14+4 MB
 33  297: CHAR[ ] pos=0 blev=0,btyp=B w=9 a+d=14+4 MB
 
> Btw, your recipe didn't quite work for me: the first step failed when
> I pressed RET "on the first line" of the buffer presented by "M-x
> magit-status" in the current release branch tip.  It said there was
> nothing to show about that line.  I needed to find a suitable line
> further down in the buffer.  Am I missing something here?  Can you
> specify precise steps, assuming I know nothing about using Magit?

That's odd, since I believe unless there was a git error the first line
should start with "Head:" and pressing RET on it shows the commit at
HEAD. Maybe there's another situation where that's not the case.

Anyway, this might be more consistent:

1. emacs -Q in a directory containing a git repository
2. M-x package-initialize if needed
2. M-x magit-show-commit RET RET (should default to master)
This should bring up a *magit-revision buffer.
3. Move point to an added line (or any line in a hunk, under the @@
lines) and press RET
4. M-: (setq display-line-numbers t)
5. C-x b RET (should take you back to the *magit-revision buffer)
6. RET

Just to specify a commit, try M-x magit-show-commit RET 92045f45 RET in
an Emacs repo and press RET on the following line:
+@code{file-symlink-p}, @code{file-system-info}