Subject: 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 10:17:59 +0300

> From: Kaushal Modi <[email-masked]>
> Date: Thu, 25 Apr 2019 16:39:29 -0400
> Cc: [email-masked]
> 
>  Any chance for a more accurate time frame?  Or maybe even bisection?
> 
> Sorry, I don't have a to consistent way to reproduce this. But I have noticed that no crash has happened since
> I disabled the beacon package. 

I doubt that the beacon package is where the bug is, so I was asking
whether a previous version of master didn't have this problem.  Or are
you saying that you only started using the beacon package a few weeks
ago?

>  Thanks.  Unfortunately, the backtrace makes no sense to me.  The
>  buffer was pure ASCII, right?  
> 
> 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?

Are the box drawing characters part of buffer text, or are they
displayed via overlays and display properties?

> This time, I enabled logging to a file as there was no way I would be able to copy all that info screen by screen
> into the email. Does that option optimize out certain variables?

No.

>  I would suggest to try an unoptimized build, 
> 
> Hmm, I am already building Emacs with your suggested switches of -ggdb3 and -Og (from an earlier gdb
> debug in a different thread). Let me know if a different set of switches are needed.  

By "unoptimized" I mean '-O0 -ggdb3'.  -Og still optimizes, it just
avoids optimizations that make debugging exceptionally hard.

>  and if the same crashes
>  happen there as well, perhaps the backtrace will tell something more
>  useful.  It would help to know the value of bytepos argument to
>  init_iterator, and if it indeed is equal to charpos, the next thing to
>  look at is the buffer's markers.
> 
> I still have the gdb session alive if you want me to run some debug commands for you. 

What are the values of these:

  (gdb) p current_buffer->pt
  (gdb) p current_buffer->pt_byte
  (gdb) p current_buffer->text->gpt
  (gdb) p current_buffer->text->gpt_byte
  (gdb) p current_buffer->begv
  (gdb) p current_buffer->begv_byte
  (gdb) p current_buffer->zv
  (gdb) p current_buffer->zv_byte