Subject: bug#21730: 25.0.50; Random errors in redisplay--pre-redisplay-functions

From: Eli Zaretskii <[email-masked]>
Date: Tue, 25 Jul 2017 17:21:50 +0300

> From: Sergio Durigan Junior <[email-masked]>
> Cc: Philipp Stephani <[email-masked]>,  [email-masked],  [email-masked]
> Date: Mon, 24 Jul 2017 22:06:56 -0400
> 
>   Debugger entered--Lisp error: (args-out-of-range 0)
>     get-char-property(0 cursor-sensor-functions)
>     cursor-sensor--detect(#<window 5650 on *Group*>)
>                           ^^^^^^^^^^^^^^^^^^^^^^^^^
>     run-hook-with-args(cursor-sensor--detect #<window 5650 on *Group*>)
>     redisplay--pre-redisplay-functions(t)
>     apply(redisplay--pre-redisplay-functions t)
>     [ lots of other functions not interesting for us ]
> 
> I took the liberty to mark the interesting part above, which is the
> argument to cursor-sensor--detect.  As you can notice, it's working on
> the *Group* window, from Gnus.  Now, the interesting part that I noticed
> and was able to verify is that this only happens when (a) I am not
> working in that buffer, (b) the point is at (point-min) at that buffer,
> but (c) the point is not (point-min) at the buffer I'm currently in.  In
> this case, Emacs does some wrong calculations with point and ends up
> with the value of 0, which makes sense if you consider that
> (window-point) of that window is 1, but (bobp) is not t (because, as I
> explained, I'm working in another buffer, and the value of point there
> is not 1).
> 
> With all that said, I came to the conclusion that Phillip's rationale
> makes sense and therefore his patch seems to be the best shot we have at
> fixing this annoying bug.

Thanks for following up.

Phillip's hypothesis assumes that there's another function in
pre-redisplay-function, which is called before cursor-sensor--detect
and switches to another buffer, leaving us there.  Do you indeed have
other functions on that list?  If so, what are they?

I'm asking because I'd like to be sure we are on the right track with
the root cause.