Subject: bug#59038: loading this base64 file makes emacs -Q 28.2 peg a core infinitely

From: Eli Zaretskii <[email-masked]>
Date: Sun, 06 Nov 2022 15:52:33 +0200

> Date: Sun, 06 Nov 2022 09:18:23 +0000
> From: Gregory Heytings <[email-masked]>
> cc: Eli Zaretskii <[email-masked]>, 
>     Gerd Möllmann <[email-masked]>, 
>     [email-masked], [email-masked], [email-masked]
> 
> 
> >> That file opens just fine in other modes
> >
> > It also opens fine in c-mode, with global-font-lock-mode disabled.
> >
> 
> Indeed, obviously it's a c-mode font-locking related bug.
> 
> >> Note that this bug has nothing to do with long lines.
> >
> > I imagine that the font-lock issue is related to the line being in 
> > excess of 21,000 chars (but general redisplay obviously doesn't have 
> > problems with lines this 'small').
> >
> > Reduced to 10,208 chars that file opens instantly under emacs -Q in 
> > c-mode with font-lock enabled; but at 10,209 chars it hangs Emacs (I 
> > killed it after waiting 4 minutes).
> >
> 
> Interesting, thanks for the bisection!

It's an infloop in c-brace-stack-at.

What happens is that c-brace-stack-at calls c-update-brace-stack with
arguments: (nil 1) 8160 13160.  c-update-brace-stack then calls
c-syntactic-re-search-forward, which finds nothing interesting and
returns with point at 13160, but then c-update-brace-stack calls
c-beginning-of-current-token, which returns point back to 8160.  And
it goes on and on and on...

Alan, what can be done with this?