Subject: Re: bug#17392: 24.3.90; cursor blinks faster and faster

From: Eli Zaretskii <[email-masked]>
Date: Wed, 14 May 2014 17:59:55 +0300

> Date: Wed, 14 May 2014 05:43:16 +0300
> From: Eli Zaretskii <[email-masked]>
> Cc: [email-masked], [email-masked]
> 
> > How 'bout: the list contains two timers, we copy it, then run the first
> > which removes the second, then run the second which doesn't find itself
> > in the list.
> 
> I thought about this, but (a) I don't see where the blink-cursor timer
> removes any other timers

Actually, this is inaccurate: blink-cursor-timer-function, which runs
off a regular (non-idle) timer, sometimes calls blink-cursor-suspend,
which cancels the blink-cursor-idle-timer.

But this looks perfectly normal, and indeed if Michael's advice runs
when the idle timer expired, it might find that the idle timer that
runs was already deleted from timer-idle-list, because we invoke the
timers from a copy of the list.  If this is what happens, then what
Michael's code reveals is an artifact of a perfectly normal and
expected operation.  I cannot see how this could cause more than one
blink-cursor-idle-timer be in the list at the same time.

> (b) I don't see why this scenario would be a problem that could lead
> to the issue in point in the first place.

So this still stands.