Re: UML time-travel warning from __run_timers

From: Johannes Berg
Date: Sun Apr 03 2022 - 13:13:45 EST


On Sun, 2022-04-03 at 18:18 +0200, Thomas Gleixner wrote:
> On Sat, Apr 02 2022 at 16:09, Johannes Berg wrote:
> > At init, we get
> >
> > init_timer_cpu(0) base 0 clk=0xffff8ad0, next_expiry=0x13fff8acf
> > init_timer_cpu(0) base 1 clk=0xffff8ad0, next_expiry=0x13fff8acf
> >
> > which makes sense, jiffies is set up to wrap very quickly after boot.
> >
> > The warning triggers when we have jiffies=0x13fff9600, so it's just
> > after the "next_expiry", so in this code:
>
> which does not make sense.

If you say so, I have no idea :)

> If next_expiry is 0x13fff8acf and jiffies
> advanced to 0x13fff9600 when the warning triggered, then either it
> missed to expire the timer at 0x13fff8acf or it failed to recalculate
> next_expiry.

There was no timer. If there's ever a timer on this base (BASE_DEF) then
this doesn't happen.

So it has to be the latter, but I'm trying to understand in the code
where it would*ever* recalculate next_expiry if it in fact never
expires?

> Could you enable all [hr]timer tracepoints on the kernel command line,
> set panic on warn and ftrace_dump_on_oops which should spill out the
> tracebuffer on the console and provide the output. That should at least
> give us an hint what's going on.
>

Sure, but since we simulate ~50 days of uptime, that's a massive number
of events and lots of them are not there:

https://p.sipsolutions.net/fb491cbbde82c600.txt

johannes