Subject: Re: bug#35429: 27.0.50; Arbitrary xdisp.c related crashes when working with overlay-using packages

From: Eli Zaretskii <[email-masked]>
Date: Fri, 26 Apr 2019 21:08:40 +0300

> From: Kaushal Modi <[email-masked]>
> Date: Fri, 26 Apr 2019 10:08:30 -0400
> Cc: [email-masked]
> 
>  > If you mean the presence of Unicode characters, then I have the unicode box drawing characters too.
>  The Org
>  > file content is not 100% 8-bit ASCII. 
> 
>  Not even its first 2874 characters?
> 
> Those characters are in the buffer, not overlay. And they are not in the first 2874 characters.
> Here are the roughly first 3000 chars of that Org buffer: http://ix.io/1Hgv

That's strange, because the data you printed in GDB says there's at
least one non-ASCII character within the first 1406 character
positions.

> Note that at many places in that snippet, I have "=>" characters which I replace with a unicode symbol via
> prettify-symbols mode. E.g. "=>" is replaced with:
> 
>              position: 5434 of 8347 (65%), column: 35
>             character:  (displayed as ) (codepoint 59428, #o164044, #xe824)
>               charset: unicode (Unicode (ISO10646))
> code point in charset: 0xE824
>                syntax: w     which means: word
>              category: L:Left-to-right (strong)
>              to input: type "C-x 8 RET e824"
>           buffer code: #xEE #xA0 #xA4
>             file code: #xEE #xA0 #xA4 (encoded by coding system utf-8-unix)
>               display: by this font (glyph code)
>     xft:-unknown-PragmataPro-normal-normal-normal-*-17-*-*-*-*-0-iso10646-1 (#x11D5)
> 
> Character code properties: customize what to show
>   general-category: Co (Other, Private Use)
>   decomposition: (59428) ('')

Why are you using PU characters?  They will only work with specific
fonts, not in general.  I advise against that.  But I don't think this
is the reason, as no valid Unicode point should ever cause a crash.

> (gdb) p current_buffer->pt
> $1 = 1406
> (gdb) p current_buffer->pt_byte
> $2 = 1418

This is inconsistent both with the image of the buffer you posted
above and with the fact that character position 2874 corresponds to a
byte position 2874.

Are you sure the current buffer is your Org buffer?  What do the
following commands display?

 (gdb) p current_buffer->name_
 (gdb) xstring
 (gdb) fr 2
 (gdb) p w->contents
 (gdb) xtype
 (gdb) xbuffer