Bug#854911: dbus fails to start on package installation on very minimal systems

Simon McVittie smcv at debian.org
Sat Feb 11 21:22:29 GMT 2017


On Sat, 11 Feb 2017 at 21:38:42 +0100, Alexander Kurtz wrote:
> I have marked this as serious since I experienced other packages (i.e.
> avahi-daemon) failing to install because of this. However, please feel
> free to downgrade the severity if you think it's appropriate!

I'm not sure whether this should be considered release-critical
(I think it depends how niche the circumstances are where it happens),
but I'll leave it like that for while we discuss it.

> I have a few VMs running a very minimal Debian installation (they are
> created with debootstrap and afterwards a kernel is installed, but
> nothing else).

What exact setup? Can you send a complete package list or debootstrap
command line to reproduce one of these?

> postinst silently fails to correctly start the dbus daemon:
...
> 	dpkg-preconfigure: unable to re-open stdin: No such file or directory

I wonder whether that's a bad sign. Are /dev, /dev/pts and /proc correctly
mounted in this VM?

> 	root at localhost:/root# systemctl status dbus.service dbus.socket
> 	● dbus.service - D-Bus System Message Bus
> 	   Loaded: loaded (/lib/systemd/system/dbus.service; static; vendor preset: enabled)
> 	   Active: failed (Result: exit-code) since Sat 2017-02-11 20:21:42 UTC; 11s ago
> 	     Docs: man:dbus-daemon(1)
> 	 Main PID: 444 (code=exited, status=1/FAILURE)
> 
> 	Feb 11 20:21:42 localhost systemd[1]: Started D-Bus System Message Bus.
> 	Feb 11 20:21:42 localhost dbus-daemon[444]: Failed to start message bus: No socket received.
> 	Feb 11 20:21:42 localhost systemd[1]: dbus.service: Main process exited, code=exited, status=1/FAILURE

This does indeed look as though systemd has started dbus.service without
passing in the listening fd that dbus.socket should have given it.
I feel as though that shouldn't happen, because dbus.service Requires
dbus.socket?

Or for the case where it's only recently been started, does it need to be
After the socket as well?

> I *think* this might be a race condition between systemd learning about
> dbus.socket and dbus.service being started by the postinst. Any
> thoughts?

update-rc.d blocks on `systemctl reload` before the postinst gets as far
as running invoke-rc.d, so I hope not?

I've cc'd the systemd maintainers in case they have any insights.

    S



More information about the Pkg-systemd-maintainers mailing list