Gentoo Websites Logo
Go to: Gentoo Home Documentation Forums Lists Bugs Planet Store Wiki Get Gentoo!

Bug 475450

Summary: media-sound/mpd-0.17.4-r2 crashes on boot
Product: Gentoo Linux Reporter: aditsu <aditsu>
Component: Current packagesAssignee: Christoph Mende (RETIRED) <angelos>
Status: RESOLVED FIXED    
Severity: normal CC: hwoarang, romockee, sound
Priority: Normal    
Version: unspecified   
Hardware: All   
OS: Linux   
Whiteboard:
Package list:
Runtime testing required: ---

Description aditsu 2013-07-01 19:03:49 UTC
I installed mpd and set it to start automatically (with rc-update). However, every time I boot my computer, mpd service status is "crashed". mpd people say the network may not be up (when the service is starting), and they are probably right.

Reproducible: Always

Steps to Reproduce:
1. rc-update add mpd default
2. reboot
3. rc-status
Actual Results:  
crashed

Expected Results:  
started

# emerge --info mpd
Portage 2.1.12.2 (default/linux/amd64/13.0/desktop, gcc-4.6.3, glibc-2.15-r3, 3.8.13-gentoo x86_64)
=================================================================
                        System Settings
=================================================================
System uname: Linux-3.8.13-gentoo-x86_64-Intel-R-_Core-TM-_i5-3317U_CPU_@_1.70GHz-with-gentoo-2.2
KiB Mem:     8057040 total,    501512 free
KiB Swap:          0 total,         0 free
Timestamp of tree: Sat, 29 Jun 2013 20:00:01 +0000
ld GNU ld (GNU Binutils) 2.22
app-shells/bash:          4.2_p45
dev-java/java-config:     2.1.12-r1
dev-lang/python:          2.7.3-r3, 3.2.3-r2
dev-util/cmake:           2.8.10.2-r2
dev-util/pkgconfig:       0.28
sys-apps/baselayout:      2.2
sys-apps/openrc:          0.11.8
sys-apps/sandbox:         2.6-r1
sys-devel/autoconf:       2.13, 2.69
sys-devel/automake:       1.9.6-r3, 1.11.6, 1.12.6
sys-devel/binutils:       2.22-r1
sys-devel/gcc:            4.6.3
sys-devel/gcc-config:     1.7.3
sys-devel/libtool:        2.4-r1
sys-devel/make:           3.82-r4
sys-kernel/linux-headers: 3.7 (virtual/os-headers)
sys-libs/glibc:           2.15-r3
Repositories: gentoo sunrise kde qt aditsu
ACCEPT_KEYWORDS="amd64"
ACCEPT_LICENSE="* -@EULA"
CBUILD="x86_64-pc-linux-gnu"
CFLAGS="-O2 -pipe -march=native"
CHOST="x86_64-pc-linux-gnu"
CONFIG_PROTECT="/etc /usr/share/config /usr/share/gnupg/qualified.txt /usr/share/polkit-1/actions"
CONFIG_PROTECT_MASK="/etc/ca-certificates.conf /etc/env.d /etc/fonts/fonts.conf /etc/gconf /etc/gentoo-release /etc/revdep-rebuild /etc/sandbox.d /etc/terminfo"
CXXFLAGS="-O2 -pipe -march=native"
DISTDIR="/usr/portage/distfiles"
FCFLAGS="-O2 -pipe"
FEATURES="assume-digests binpkg-logs config-protect-if-modified distlocks ebuild-locks fixlafiles merge-sync news parallel-fetch preserve-libs protect-owned sandbox sfperms strict unknown-features-warn unmerge-logs unmerge-orphans userfetch"
FFLAGS="-O2 -pipe"
GENTOO_MIRRORS="http://gentoo.aditsu.net"
LANG="en_US.UTF-8"
LDFLAGS="-Wl,-O1 -Wl,--as-needed"
MAKEOPTS="-j3"
PKGDIR="/usr/portage/packages"
PORTAGE_CONFIGROOT="/"
PORTAGE_RSYNC_OPTS="--recursive --links --safe-links --perms --times --compress --force --whole-file --delete --stats --human-readable --timeout=180 --exclude=/distfiles --exclude=/local --exclude=/packages"
PORTAGE_TMPDIR="/var/tmp"
PORTDIR="/usr/portage"
PORTDIR_OVERLAY="/var/lib/layman/sunrise /var/lib/layman/kde /var/lib/layman/qt /home/aditsu/ebuilds"
SYNC="rsync://rsync.gentoo.org/gentoo-portage"
USE="X a52 aac acl acpi alsa amd64 berkdb bluetooth branding bzip2 cairo cdda cdr cli consolekit cracklib crypt cups cxx dbus dri dts dvd dvdr emboss encode exif fam firefox flac fortran ftp gdbm gif gimp gpm gtk iconv icu ipv6 java javascript jpeg kde lcms libcaca libnotify mad mercurial mmx mng modules mp3 mp4 mpeg mudflap multilib ncurses nls nptl ogg opengl openmp pam pango pcre pdf png policykit portaudio ppds qt3support qt4 readline samba sdl session spell sse sse2 ssl startup-notification svg symlink tcpd threads tiff truetype udev udisks unicode upower usb vnc vorbis webkit wxwidgets x264 xcb xinerama xml xv xvid zlib zsh-completion" ABI_X86="64" ALSA_CARDS="ali5451 als4000 atiixp atiixp-modem bt87x ca0106 cmipci emu10k1x ens1370 ens1371 es1938 es1968 fm801 hda-intel intel8x0 intel8x0m maestro3 trident usb-audio via82xx via82xx-modem ymfpci" APACHE2_MODULES="authn_core authz_core socache_shmcb unixd actions alias auth_basic authn_alias authn_anon authn_dbm authn_default authn_file authz_dbm authz_default authz_groupfile authz_host authz_owner authz_user autoindex cache cgi cgid dav dav_fs dav_lock deflate dir disk_cache env expires ext_filter file_cache filter headers include info log_config logio mem_cache mime mime_magic negotiation rewrite setenvif speling status unique_id userdir usertrack vhost_alias" CALLIGRA_FEATURES="kexi words flow plan sheets stage tables krita karbon braindump author" CAMERAS="ptp2" COLLECTD_PLUGINS="df interface irq load memory rrdtool swap syslog" ELIBC="glibc" GPSD_PROTOCOLS="ashtech aivdm earthmate evermore fv18 garmin garmintxt gpsclock itrax mtk3301 nmea ntrip navcom oceanserver oldstyle oncore rtcm104v2 rtcm104v3 sirf superstar2 timing tsip tripmate tnt ubx" INPUT_DEVICES="evdev synaptics" KERNEL="linux" LCD_DEVICES="bayrad cfontz cfontz633 glk hd44780 lb216 lcdm001 mtxorb ncurses text" LIBREOFFICE_EXTENSIONS="presenter-console presenter-minimizer" OFFICE_IMPLEMENTATION="libreoffice" PHP_TARGETS="php5-3" PYTHON_SINGLE_TARGET="python2_7" PYTHON_TARGETS="python2_7 python3_2" RUBY_TARGETS="ruby19" USERLAND="GNU" VIDEO_CARDS="vesa virtualbox intel" XTABLES_ADDONS="quota2 psd pknock lscan length2 ipv4options ipset ipp2p iface geoip fuzzy condition tee tarpit sysrq steal rawnat logmark ipmark dhcpmac delude chaos account"
Unset:  CPPFLAGS, CTARGET, EMERGE_DEFAULT_OPTS, INSTALL_MASK, LC_ALL, PORTAGE_BUNZIP2_COMMAND, PORTAGE_COMPRESS, PORTAGE_COMPRESS_FLAGS, PORTAGE_RSYNC_EXTRA_OPTS, USE_PYTHON

=================================================================
                        Package Settings
=================================================================

media-sound/mpd-0.17.4-r2 was built with the following:
USE="aac alsa bzip2 curl ffmpeg fifo flac id3tag ipv6 mad (multilib) network ogg tcpd unicode vorbis -ao -audiofile -cdio -debug -fluidsynth -gme -inotify -jack -lame -lastfmradio -libsamplerate -mikmod -mms -modplug -mpg123 -musepack -openal -oss -pipe -pulseaudio -recorder -sid -sndfile -soundcloud -soup -sqlite (-systemd) -twolame -wavpack -wildmidi -zeroconf -zip" ABI_X86="64"
LDFLAGS="-Wl,-O1 -Wl,--as-needed -L/usr/lib64/sidplay/builders"
Comment 1 Jeroen Roovers (RETIRED) gentoo-dev 2013-07-02 14:25:29 UTC
It should have printed something relevant in your syslog (or /var/lib/mpd/log by default).
Comment 2 aditsu 2013-07-02 15:27:57 UTC
(In reply to Jeroen Roovers from comment #1)
> It should have printed something relevant in your syslog (or
> /var/lib/mpd/log by default).

Maybe it should have, but it didn't. I even enabled verbose logging in mpd.conf
Comment 3 Christoph Mende (RETIRED) gentoo-dev 2013-07-02 17:52:07 UTC
Well, sorry, but I can't help you without any error message/backtrace/anything.
I guess it doesn't crash if you don't start it on boot and start it manually?
Comment 4 aditsu 2013-07-14 16:26:30 UTC
(In reply to Christoph Mende from comment #3)
> Well, sorry, but I can't help you without any error
> message/backtrace/anything.

Well, you have the steps to reproduce it, it happens 100% of the time. In fact, now I found a new and better way to reproduce it:

# /etc/init.d/net.wifi stop   
 * Stopping sshd ...                                                                                                                                                                                                        [ ok ]
 * Unmounting network filesystems ...                                                                                                                                                                                       [ ok ]
 * Bringing down interface wifi
 *   Stopping dhcpcd on wifi ...                                                                                                                                                                                            [ ok ]
 *   Stopping wpa_cli on wifi ...                                                                                                                                                                                           [ ok ]
 *   Stopping wpa_supplicant on wifi ...                                                                                                                                                                                    [ ok ]
# /etc/init.d/mpd stop
 * Stopping Music Player Daemon ...                                                                                                                                                                                         [ ok ]
# /etc/init.d/mpd start
 * Bringing up interface wifi
 *   Starting wpa_supplicant on wifi ...
ioctl[SIOCSIWAP]: Operation not permitted                                                                                                                                                                                   [ ok ]
 *   Starting wpa_cli on wifi ...                                                                                                                                                                                           [ ok ]
 *   Backgrounding ... ...
 * WARNING: net.wifi has started, but is inactive
 * WARNING: netmount is scheduled to start when net.wifi has started
 * Starting Music Player Daemon ...                                                                                                                                                                                         [ ok ]
# rc-status|grep mpd   
 mpd                                                               [  crashed  ]

> I guess it doesn't crash if you don't start it on boot and start it manually?

If I start it when I'm online, everything is fine.
Comment 5 Christoph Mende (RETIRED) gentoo-dev 2014-03-22 18:24:23 UTC
I can't reproduce this on 0.18.9, please reopen if it still happens.
Comment 6 aditsu 2014-03-22 20:43:28 UTC
# /etc/init.d/net.wifi stop
 * Stopping noip ...                                                                                                                                                                                                        [ ok ]
 * Setting noip addresses to 0.0.0.0 ...                                                                                                                                                                                    [ ok ]
 * Stopping nginx ...                                                                                                                                                                                                       [ ok ]
 * Unmounting network filesystems ...                                                                                                                                                                                       [ ok ]
 * Bringing down interface wifi
 *   Stopping dhcpcd on wifi ...                                                                                                                                                                                            [ ok ]
 *   Stopping wpa_cli on wifi ...                                                                                                                                                                                           [ ok ]
 *   Stopping wpa_supplicant on wifi ...                                                                                                                                                                                    [ ok ]
# /etc/init.d/mpd stop
 * Stopping Music Player Daemon ...                                                                                                                                                                                         [ ok ]
# /etc/init.d/mpd start
 * Bringing up interface wifi
 *   Starting wpa_supplicant on wifi ...
Successfully initialized wpa_supplicant
ioctl[SIOCSIWAP]: Operation not permitted                                                                                                                                                                                   [ ok ]
 *   Starting wpa_cli on wifi ...                                                                                                                                                                                           [ ok ]
 *   Backgrounding ... ...
 * WARNING: net.wifi has started, but is inactive
 * WARNING: netmount is scheduled to start when net.wifi has started
 * Starting Music Player Daemon ...                                                                                                                                                                                         [ ok ]
# rc-status|grep mpd
 mpd                                                               [  crashed  ]
# eix -e media-sound/mpd
[I] media-sound/mpd
     Available versions:  0.17.4-r2 0.17.6 ~0.18.4 ~0.18.5 ~0.18.7 ~0.18.8 (~)0.18.9 {aac adplug +alsa ao audiofile bzip2 cdio +curl debug faad +ffmpeg +fifo flac fluidsynth gme +id3tag inotify ipv6 jack lame lastfmradio libmpdclient libsamplerate +mad mikmod mms modplug mpg123 musepack +network ogg openal opus oss pipe pulseaudio recorder sid sndfile soundcloud soup sqlite systemd tcpd twolame unicode vorbis wavpack wildmidi zeroconf zip}
     Installed versions:  0.18.9(04:34:38 23/03/2014)(alsa bzip2 curl ffmpeg fifo flac id3tag ipv6 mad network ogg opus tcpd unicode vorbis -adplug -ao -audiofile -cdio -debug -faad -fluidsynth -gme -inotify -jack -lame -libmpdclient -libsamplerate -mikmod -mms -modplug -mpg123 -musepack -openal -oss -pipe -pulseaudio -recorder -sid -sndfile -soundcloud -sqlite -systemd -twolame -wavpack -wildmidi -zeroconf -zip)
     Homepage:            http://www.musicpd.org
     Description:         The Music Player Daemon (mpd)
Comment 7 Christoph Mende (RETIRED) gentoo-dev 2014-03-29 10:29:28 UTC
What if you stop network and start mpd by hand instead of the init script? If that also crashes, you should be able to get a backtrace.
Comment 8 aditsu 2014-03-29 13:30:56 UTC
(In reply to Christoph Mende from comment #7)
> What if you stop network and start mpd by hand instead of the init script?
> If that also crashes, you should be able to get a backtrace.

If I do that, all I get is:
socket: Failed to bind to '<my.local.ip.address>:6600': Cannot assign requested address
Comment 9 aditsu 2014-03-29 13:35:51 UTC
Just to clarify, it's a 10.x.y.z address, not 127.x.y.z
Comment 10 Christoph Mende (RETIRED) gentoo-dev 2014-03-30 07:49:54 UTC
Oh, now I get it. MPD doesn't really crash. s-s-d just doesn't catch its error.
I've added --wait to the init script so instead of showing a successful startup, you'll now see an error.
The fact that mpd doesn't start is not a bug at all though. You're telling mpd to listen on a specific interface, so you need to ensure it is up. This can be done by either setting rc_depend_strict to YES in /etc/rc.conf or by overriding the dependencies in /etc/conf.d/mpd with rc_need="!net net.wifi".
I'm not sure if s-s-d behavior (requiring --wait or just claiming startup was successful) is intended here. I'll ask the openrc people and file a bug for that if it's not.
Comment 11 aditsu 2014-04-02 02:49:07 UTC
(In reply to Christoph Mende from comment #10)
> The fact that mpd doesn't start is not a bug at all though. You're telling
> mpd to listen on a specific interface, so you need to ensure it is up. This
> can be done by either setting rc_depend_strict to YES in /etc/rc.conf or by
> overriding the dependencies in /etc/conf.d/mpd with rc_need="!net net.wifi".

Well, several things here:
1. When I start mpd, it actually already starts net.wifi automatically as you can see above. However, it doesn't seem to wait until it is fully started (including getting an ip address).
2. rc-status is only showing net.wifi, no other net.* service (although net.lo is also started). rc_depends_strict is not making any difference (I tried it now), or do I need to restart something else?
3. rc_need="!net net.wifi" in /etc/conf.d/mpd (new file) actually works - it schedules mpd to start when net.wifi is ready

Thanks for the help
Comment 12 Christoph Mende (RETIRED) gentoo-dev 2014-04-02 08:43:00 UTC
(In reply to aditsu from comment #11)
> Well, several things here:
> 1. When I start mpd, it actually already starts net.wifi automatically as
> you can see above. However, it doesn't seem to wait until it is fully
> started (including getting an ip address).

That's because it also starts net.lo which satisfied the "net" dependency.

> 2. rc-status is only showing net.wifi, no other net.* service (although
> net.lo is also started). rc_depends_strict is not making any difference (I
> tried it now), or do I need to restart something else?

In case you really used "rc_depends_strict", it's "rc_depend_strict", you got an extra "s". Otherwise, not sure why that didn't make a difference.

> 3. rc_need="!net net.wifi" in /etc/conf.d/mpd (new file) actually works - it
> schedules mpd to start when net.wifi is ready

That's actually the proper solution (preferred over rc_depend_strict) anyway.
Comment 13 aditsu 2014-04-18 07:46:57 UTC
(In reply to Christoph Mende from comment #12)
> In case you really used "rc_depends_strict", it's "rc_depend_strict", you
> got an extra "s".

Typo, sorry. It was rc_depend_strict.

> Otherwise, not sure why that didn't make a difference.

I tested again, indeed it doesn't. Maybe it considers it started even though it's still inactive?

Anyway, it works now with rc_need; I wonder if a note should be added for users that want mpd to listen on a specific ip?
Comment 14 Christoph Mende (RETIRED) gentoo-dev 2014-04-19 08:54:15 UTC
(In reply to aditsu from comment #13)
> Anyway, it works now with rc_need; I wonder if a note should be added for
> users that want mpd to listen on a specific ip?

This issue is not specific to mpd, it is specific to openrc and every service that binds to a specific IP address. It is also documented in the official Gentoo wiki: https://wiki.gentoo.org/wiki/OpenRC#Dependency_behaviour