Hello list,

I run Debian Wheezy with native mpd-0.16.7-2. This has worked fine for
a few years as long as I do not choose a radiostream that is broken. In that 
case
I need to -SIGKILL mpd. This afternoon I compiled a
vanilla 0.19.12 and the reproducible problem is still there:

Step 1: download the m3u list to the playlist dir, it's this particular 
playlist:

http://wwww.xaq.nl/web.m3u

Step 2: remove the state file:

# rm -f /var/run/mpd/state (this is what I use)
removed `/var/run/mpd/state'

Step 3: start the daemon:

~/mpd/mpd-0.19.12/src>./mpd --no-daemon --stderr --verbose /etc/mpd.conf
config_file: loading file /etc/mpd.conf
server_socket: bind to '0.0.0.0:6600' failed: Address already in use 
(continuing anyway, because binding to '[::]:6600' succeeded)
path: SetFSCharset: fs charset is: UTF-8
libsamplerate: libsamplerate converter 'Fastest Sinc Interpolator'
vorbis: Xiph.Org libVorbis 1.3.2
opus: libopus 0.9.14
sndfile: libsndfile-1.0.25
db: reading DB
curl: version 7.26.0
curl: with GnuTLS/2.12.20
state_file: Loading state file /var/run/mpd/state
errno: Failed to open /var/run/mpd/state: No such file or directory

Step 4:
$ mpc load web

client: [0] opened from 127.0.0.1:37867
client: [0] process command list
client: process command "load "web""
client: command returned 0
client: [0] process command list returned 0
client: [0] closed

Step 5:
$ mpc play 1 (this works):

client: [1] process command "status"
client: [1] command returned 0
client: [1] process command "play "0""
playlist: play 0:"http://amp.cesnet.cz:8000/cro-d-dur-256.ogg";
client: [1] command returned 0
playlist: queue song 1:"http://lr3mp0.latvijasradio.lv:8004/";
client: [1] process command list
client: process command "status"
client: command returned 0
client: process command "currentsong"
client: command returned 0
client: [1] process command list returned 0
client: [1] closed
decoder_thread: probing plugin vorbis
decoder: audio_format=48000:f:2, seekable=false
alsa_output: opened default type=PLUG
alsa_output: format=FLOAT_LE (Float 32 bit Little Endian)
alsa_output: buffer: size=26..131072 time=541..2730667
alsa_output: period: size=13..65536 time=270..1365334
alsa_output: default period_time = buffer_time/4 = 500000/4 = 125000
alsa_output: buffer_size=24000 period_size=6000
output: opened plugin=alsa name="ALSA1" audio_format=48000:f:2
state_file: Saving state file /var/run/mpd/state

Step 6:
Now, load entry 7 (which does not work, it generates a 404), then mpd skips to 
the next entry (which doesn't work either) and now mpd hangs:

client: [2] opened from 127.0.0.1:37870
client: [2] process command "status"
client: [2] command returned 0
client: [2] process command "play "6""
playlist: play 
6:"http://radioclasica.rtveradio.cires21.com/radioclasica/mp3/icecast.audio";
player: played "http://amp.cesnet.cz:8000/cro-d-dur-256.ogg";
client: [2] command returned 0
playlist: queue song 7:"mmsh://mediau.yle.fi/liveklassinen"
client: [2] process command list
client: process command "status"
client: command returned 0
client: process command "currentsong"
client: command returned 0
client: [2] process command list returned 0
client: [2] closed
curl: curl failed: The requested URL returned error: 404
player: played 
"http://radioclasica.rtveradio.cires21.com/radioclasica/mp3/icecast.audio";
playlist: play 7:"mmsh://mediau.yle.fi/liveklassinen"
playlist: queue song 8:"http://109.123.116.202:8020";

It will somehow react to a command, like "next":

client: [1] opened from 127.0.0.1:37880
client: [1] process command "next"
playlist: play 8:"http://109.123.116.202:8020";

$ mpc next
error: Timeout

Now mpd hangs:

# strace -f -p 16906
Process 16906 attached with 6 threads - interrupt to quit
[pid 16912] read(10,  <unfinished ...>
[pid 16910] futex(0x8b39e60, FUTEX_WAIT_PRIVATE, 9, NULL <unfinished ...>
[pid 16909] futex(0xb2a25bd8, FUTEX_WAIT, 16912, NULL <unfinished ...>
[pid 16908] futex(0x8b2988c, FUTEX_WAIT_PRIVATE, 293, NULL <unfinished ...>
[pid 16907] clock_gettime(CLOCK_MONOTONIC, {26813, 616325802}) = 0
[pid 16907] clock_gettime(CLOCK_MONOTONIC, {26813, 616946386}) = 0
[pid 16907] epoll_wait(4,  <unfinished ...>
[pid 16906] futex(0x8b298bc, FUTEX_WAIT_PRIVATE, 33, NULL

Only a -SIGKILL will stop mpd.

Is this reproducable for you as well?

R.

BTW:

server_socket: bind to '0.0.0.0:6600' failed: Address already in use 
(continuing anyway, because binding to '[::]:6600' succeeded)

I have seen this every time mpd starts, but mpd sees this I suppose: 
tcp6       1      1 127.0.0.1:6600      127.0.0.1:37880   LAST_ACK


-- 
___________________________________________________________________
It is better to remain silent and be thought a fool, than to speak
aloud and remove all doubt.

+------------------------------------------------------------------+
| Richard Lucassen, Utrecht                                        |
+------------------------------------------------------------------+
_______________________________________________
mpd-devel mailing list
mpd-devel@musicpd.org
http://mailman.blarg.de/listinfo/mpd-devel

Reply via email to