Subject: bug#22287: 25.1.50; Sudden jumping point in buffer

From: Eli Zaretskii <[email-masked]>
Date: Mon, 04 Jan 2016 17:22:10 +0200

> From: David Engster <[email-masked]>
> Date: Sun, 03 Jan 2016 16:47:29 +0100
> Cc: [email-masked]
> 
> > | *** handle atimers [540 times]
> > | *** sem start: buffer intervals.c 49722
> > | *** sem: buffer intervals.c 49722
> > | *** input: rc=nil 49722 49722
> > | *** out: rc=nil 49722 49722
> > | *** sem: buffer intervals.c 49722
> > | *** input: rc=nil 49722 49722
> > | *** out: rc=nil 49722 49722
> > | *** sem: buffer intervals.c 49722
> > | *** input: rc=nil 49722 49722
> > | *** out: rc=nil 49722 49722
> > | *** sem: buffer intervals.c 49722
> > | *** input: rc=nil 49722 49722
> > | *** out: rc=nil 49722 49722
> > | *** sem: buffer intervals.c 49722
> > | *** input: rc=nil 49722 49722
> > | *** out: rc=nil 49722 49722
> > | *** sem: buffer intervals.c 49722
> > | *** input: rc=nil 49722 49722
> > | *** out: rc=nil 49722 49722
> > | *** handle atimers [10 times]
> 
> That's interesting. Why do timers run here at all?

These are _atimers_, not timers.  An entirely different beast.  See
atimer.c.

Grep the C sources for start_atimer and turn_on_atimers, to see which
code uses atimers.  One such place is the poll timer used to poll for
user input (see keyboard.c), another is the hour-glass mouse pointer
feature shown when Emacs is busy (see xdisp.c).  We also turn them off
while waiting for input in wait_reading_process_output (see
process.c).