Re: 4.18-rc* regression: x86-32 troubles (with timers?)

From: Arnd Bergmann
Date: Thu Jul 05 2018 - 07:04:30 EST


On Thu, Jul 5, 2018 at 11:54 AM, Meelis Roos <mroos@xxxxxxxx> wrote:
>> > I tried 4.18.0-rc1-00023-g9ffc59d57228 and now
>> > 4.18.0-rc3-00113-gfc36def997cf on a 32-bit server and then some other
>> > 32-bit machines, and got half-failed bootup - kernel and userspace come
>> > up but some services fail to start, including network and
>> > systemd-journald:
>> >
>> > systemd-journald[85]: Assertion 'clock_gettime(map_clock_id(clock_id), &ts) == 0' failed at ../src/basic/time-util.c:53, function now(). Aborting.
>> >
>> > I then tried multiple other machines. All x86-64 machines seem
>> > unaffected, some x86-32 machines are affected (Athlon with AMD750
>> > chipset, Fujitsu RX100-S2 with P4-3.4, and P4 with Intel 865 chipset),
>> > some very similar x86-32 machines are unaffected. I have different
>> > customized kernel configuration on them, so far I have not pinpointed
>> > any configuration option to be at fault.
>> >
>> > All machines run Debian unstable.
>> >
>> > 4.17.0 was working fine.
>> >
>> > Will continue with bisecting between 4.17.0 and
>> > 4.18.0-rc1-00023-g9ffc59d57228.
>>
>> That does sound like it is related to my patches indeed. If you are not
>> yet done bisecting, please checkout commit e27c49291a7f ("x86: Convert
>> x86_platform_ops to timespec64") before you try anything else, that
>> one is the top of the branch with my changes. If that fails, the bisection
>> will be much quicker.
>
> This commit was fine. So it's likely something else.

Ok, at least that's a relief for me, even if it didn't help you ;-)

I looked at the sources a bit and found that the assertion is triggered
in systemd whenever we try to read a clock that the kernel does not
provide. You have CONFIG_POSIX_TIMERS and
CLOCK_RTC_CLASS set, so all the normal clocks should be
operational, and I don't see anything unusual being passed into
clock_gettime() from systemd.

If you are able to find out what clock_id is passed in here, and what
the return code is, that might still lead to a solution more quickly
than continuing the bisection.

Arnd