Messages in this thread | | | From | Arnd Bergmann <> | Date | Thu, 5 Jul 2018 13:04:23 +0200 | Subject | Re: 4.18-rc* regression: x86-32 troubles (with timers?) |
| |
On Thu, Jul 5, 2018 at 11:54 AM, Meelis Roos <mroos@linux.ee> 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
| |