Subject: bug#58767: telega makes emacs crash (under an EXWM session?)

From: Eli Zaretskii <[email-masked]>
Date: Tue, 25 Oct 2022 16:31:16 +0300

> Cc: [email-masked], [email-masked]
> Date: Tue, 25 Oct 2022 15:50:50 +0300
> From: Eli Zaretskii <[email-masked]>
> 
> > Date: Tue, 25 Oct 2022 14:10:12 +0200 (CEST)
> > From: [email-masked]
> > Cc: Po Lu <[email-masked]>, [email-masked]
> > 
> > What I do that makes emacs crash is just launch telega. Either via a keybind or m-x. 
> 
> So just "M-x telega RET" is enough to cause the crash?

FTR: I tried to reproduce the crash, but couldn't get far enough:
running "M-x telega" requires some server, which I don't have, and
won't install.  So someone who has that installed will need to debug
this and tell me how come this code crashes.

The abort is in this code in bidi.c:

  /* Don't move at end of buffer/string.  */
  else if (bidi_it->charpos < (string_p ? bidi_it->string.schars : ZV))
    {
      /* Advance to the next character, skipping characters covered by
	 display strings (nchars > 1).  */
      if (bidi_it->nchars <= 0)
	emacs_abort ();
      bidi_it->charpos += bidi_it->nchars;
      if (bidi_it->ch_len == 0)
	emacs_abort ();
      bidi_it->bytepos += bidi_it->ch_len;
      prev_type = bidi_it->orig_type;
    }

The backtrace points to the first call to emacs_abort, but since this
is an optimized build, it could be the second one as well.  These
situations "should not happen", ever.  So I must understand what kind
of buffer or string text we bumped into that caused this, it should be
something highly unusual.