On Tue, May 17, 2016 at 12:29 PM, Per Jessen
Andrei Borzenkov wrote:
On Tue, May 17, 2016 at 11:09 AM, Per Jessen
wrote: Andrei Borzenkov wrote:
On Tue, May 17, 2016 at 10:47 AM, Per Jessen
wrote: Try at least removing "quiet" from kernel command line, can you still reproduce it?
I rarely use "quiet", so yes, always reproducable without.
Can you make available full "journalctl -b" after boot with this problem? Without "quiet" logs should contain at least timing of services start.
Yep, this is the most recent one: http://files.jessen.ch/temp78-journal-system-is-booting-up.txt
Well ...
May 17 10:04:20 temp78 systemd[1]: Starting Create Volatile Files and Directories... May 17 10:04:20 temp78 systemd[1]: Started Permit User Sessions. May 17 10:04:20 temp78 systemd[1]: Started Permit User Sessions. May 17 10:04:20 temp78 systemd[1]: Started Create Volatile Files and Directories.
So they are started basically at the same time. Whoever wins.
Now something is extremely wrong. "Create Volatile Files and Directories" should run BEFORE sysinit.target, which means before any other service including "Permit User Sessions". I am sure you have some loop in service dependencies. Could you please start once more with log_level.debug and this time provide full output of "journalctl -b", not just the lines you think are relevant.
Okay:
http://files.jessen.ch/temp78-journal-with-systemd-loglevel-debug.txt
Well ... that's actually upstream bug and I'm immensely surprised it was not hit more often. Here is what happens. Normally systemd is started first in initrd; before switching root it saves its state (which includes information about units that are active) on "disk" (tmpfs actually) and reloads its state after it is started second time from real root. When systemd is started in initrd, it goes via sequence very close to real-root initialization, that includes also sysinit.target and basic.target (standard targets for low level system initialization). These targets are expected to be stopped before switching root, but in your case root is switched too fast, so systemd records sysinit.target and basic.target states as Started. It means that all other services that normally would wait for basic.target are started immediately, causing great confusion. Note that your logs show Cannot add dependency job for unit initrd-udevadm-cleanup-db.service, ignoring: Unit initrd-udevadm-cleanup-db.service failed to load: No such file or directory. Root switch is ordered after initrd-udevadm-cleanup-db.service, and it is the *ONLY* service that would add some delay to root switching. It is possible that some bug was introduced that made this unit unavailable, thus exposing this race condition. But adding initrd-udevadm-cleanup-db.service is not real fix, it just hides fundamental issue. So it's bugzilla time. -- To unsubscribe, e-mail: opensuse+unsubscribe@opensuse.org To contact the owner, e-mail: opensuse+owner@opensuse.org