Subject: Re: bug#28850: 26.0.90; Error running timer 'jit-lock-stealth-fontify': (error "Invalid search bound (wrong side of point)")

From: Alan Mackenzie <[email-masked]>
Date: Tue, 30 Apr 2019 09:24:25 +0000

Hello, Basil.

On Tue, Apr 30, 2019 at 02:51:03 +0100, Basil L. Contovounesios wrote:
> Eli Zaretskii <[email-masked]> writes:

> >> Date: Wed, 25 Oct 2017 19:11:37 +0000
> >> Cc: [email-masked]
> >> From: Alan Mackenzie <[email-masked]>

> >> Actually, it wasn't that difficult to amend that form generator.  Would
> >> you please try out the patch below, which should apply cleanly to
> >> master.

> > I think you've solved the problem, because I let Emacs run idle for 10
> > hours, and it didn't hit this error even once.

> It seems to have returned in some way.  I can't reproduce this on Emacs
> 26, but on latest master, the following steps:

> 0. emacs -Q
> 1. (progn (setq debug-on-error t)
>           (setq jit-lock-stealth-nice nil)
>           (setq jit-lock-stealth-time 0)
>           (find-function #'next-property-change))
> 2. C-x C-e

> almost immediately lead to the following backtrace:

> Debugger entered--Lisp error: (error "Invalid search bound (wrong side of point)")
>   search-forward-regexp("\\<\\(\\(?:enum\\)\\)\\>[^][{};/#=]*{" 1673 t)
>   c-font-lock-enum-body(1673)
>   font-lock-fontify-keywords-region(1123 1673 nil)
>   font-lock-default-fontify-region(1123 1673 nil)
>   c-font-lock-fontify-region(1173 1673 nil)
>   font-lock-fontify-region(1173 1673)
>   #f(compiled-function (fun) #<bytecode 0x1565bb8a9581>)(font-lock-fontify-region)
>   run-hook-wrapped(#f(compiled-function (fun) #<bytecode 0x1565bb8a9581>) font-lock-fontify-region)
>   jit-lock--run-functions(1173 1673)
>   jit-lock-fontify-now(1173 1673)
>   jit-lock-stealth-fontify(t)
>   apply(jit-lock-stealth-fontify t)
>   timer-event-handler([t 0 0 974323 nil jit-lock-stealth-fontify (t) idle 261000])

Yes, I see this too, on master.  However, I don't see it on Emacs 26.2,
even while running an up to date CC Mode.  So I think it's likely to be
the breaking of some (possibly implicit) interface requirement with CC Mode.

> I'm not sure if this says anything, but when the *Backtrace* buffer is
> displayed, the textprop.c buffer is marked as modified.  Could this be
> related to the before/after change machinery?

It could.  There's a macro in CC Mode, c-tentative-buffer-changes, which
executes a ,@body, then undoes its changes when the result of ,@body is
nil.  Possibly the exception happened there.

> A similar error I occasionally see, but have not yet figured out how to
> reproduce:

>   Error during redisplay: (jit-lock-function 19569)
>     signaled (error "Invalid search bound (wrong side of point)")

Maybe that's the same bug.  :-)

I'll look into this problem with find-function.

> Thanks,

> -- 
> Basil

[ .... ]

-- 
Alan Mackenzie (Nuremberg, Germany).