Hi Ryan (and Max please see below): > and have the following minimal mpd.conf: > > -------------------------------------------------- > music_directory "/var/lib/mpd/music" > db_file "/var/lib/mpd/tag_cache" > pid_file "/run/mpd/pid" > state_file "/var/lib/mpd/state" > log_level "verbose" > > user "mpd" > bind_to_address "127.0.0.1" > > audio_output { > type "null" > name "null" > } > --------------------------------------------------
please, for now, delete or comment out the pid_file line > Attempting to start mpd results in: > > -------------------------------------------------- > rak@zeta:~$ sudo service mpd start > Job for mpd.service failed because a fatal signal was delivered to the > control process. > See "systemctl status mpd.service" and "journalctl -xeu mpd.service" for > details. > rak@zeta:~$ sudo systemctl status mpd.service > × mpd.service - Music Player Daemon > Loaded: loaded (/usr/lib/systemd/system/mpd.service; enabled; vendor > preset: enabled) > Active: failed (Result: signal) since Thu 2021-11-04 13:49:36 EDT; 2s ago > TriggeredBy: × mpd.socket > Docs: man:mpd(1) > man:mpd.conf(5) > file:///usr/share/doc/mpd/html/user.html > Process: 474546 ExecStart=/usr/bin/mpd --no-daemon $MPDCONF (code=killed, > signal=ABRT) > Main PID: 474546 (code=killed, signal=ABRT) > CPU: 175ms > > Nov 04 13:49:36 zeta mpd[474546]: sndfile: libsndfile-1.0.31 > Nov 04 13:49:36 zeta mpd[474546]: hybrid_dsd: The Hybrid DSD decoder is > disabled because it was not explicitly enabled > Nov 04 13:49:36 zeta mpd[474546]: adplug: adplug 2.3.3 > Nov 04 13:49:36 zeta mpd[474546]: exception: Failed to open > '/var/lib/mpd/tag_cache': No such file or directory > Nov 04 13:49:36 zeta mpd[474546]: curl: version 7.74.0 > Nov 04 13:49:36 zeta mpd[474546]: curl: with GnuTLS/3.7.2 > Nov 04 13:49:36 zeta mpd[474546]: mpd: ../src/event/Loop.cxx:60: > EventLoop::~EventLoop(): Assertion `sockets.empty()' failed. > Nov 04 13:49:36 zeta systemd[1]: mpd.service: Main process exited, > code=killed, status=6/ABRT > Nov 04 13:49:36 zeta systemd[1]: mpd.service: Failed with result 'signal'. > Nov 04 13:49:36 zeta systemd[1]: Failed to start Music Player Daemon. The tag_cache exception is non-fatal. The problem here is the Assertion failure, which is #998310 and fixed in mpd 0.23.3-2 However, Max: behind this hides another problem, which is why I asked Ryan to delete the pid_file configuration: as part of 0.23.3 you added the "RuntimeDirectory=mpd" directive to both mpd.service units. In the absence of User and Group directives, this causes /run/mpd to change ownership from mpd:audio (as created by our /usr/lib/tmpfiles.d/mpd.conf) to root:root, which means that mpd would have to be run as root in order to be able to create a socket or a pidfile (yes, legacy) there. I think that's broken from an upstream perspective as well, and only works when running mpd as user. I suppose the best way forward is to specify User=mpd and Group=audio in the system unit, however this immediately hits a snag when mpd tries to open its log file /var/log/mpd/mpd.log, which up to now is created as root. This we could probably work around in Debian, and defaulting to log to syslog/journal also feels sensible, but I'm not sure if there may be other things that mpd might want to be root for when starting up as a system service? Florian