Description of problem: Last night I did a bit of PA testing: started VirtualBox, played some Youtube music in there, looked at some Youtube clips in Firefox on linux -- it all worked well. This morning I tried again Youtube in Firefox on linux, it worked fine. One hour later, I tried again a different Flash video, this time I got no more sound. Youtube no longer works, neither does sound from VirtualBox. All this worked just fine an hour ago, I didn't do much on the box since then other than reply to emails and a bit of work with CVS. Version-Release number of selected component (if applicable): pulseaudio-0.9.15-11.fc11.i586 How reproducible: Often. Steps to Reproduce: 1. Listen to sound 2. Do some work 3. A while later sound no longer works. Additional info: I've had similar problems for a long time. Before PA used to crash, and I'd have to manually restart it with pulseaudio -D. Now PA seems to be working in the background, but sound is not working. Maybe it re-started itself, and existing apps lost connection with it? One more piece of information: if I start a brand new browser instance (different for FF, say Epiphany) sound works! Which makes me believe that PA died, restarted itself, but apps did not reconnect somehow to the new PA instance.
Pleas run PA in a terminal "pulseaudio -vvvv" and paste the output when this issue happens. You might need to terminate the running pa first by issuing 'pulseaudio -k'.
OK, I did that, now I have to recreate it somehow...
OK, one more data point -- restarting Firefox fixed the sound problem in Flash. However, I had to kill it forceably, it was stuck on something and it wouldn't exit.
I've left Rhythmbox playing for a few hours, I found it stopped but the sound playing over and over again (in a loop) the same ~2s sample. Since I was running PA with -vvvv, this is the last few lines of the output: [ ... a lot of these lines ...] D: alsa-sink.c: Wakeup from ALSA! D: alsa-sink.c: Wakeup from ALSA! D: alsa-sink.c: Wakeup from ALSA! D: alsa-sink.c: Wakeup from ALSA! D: alsa-sink.c: Wakeup from ALSA! D: alsa-sink.c: Wakeup from ALSA! D: alsa-sink.c: Wakeup from ALSA! D: alsa-sink.c: Wakeup from ALSA! D: sink-input.c: Requesting rewind due to corking D: sink-input.c: Requesting rewind due to uncorking D: alsa-sink.c: Requested to rewind 352768 bytes. D: alsa-sink.c: Limited to 1700 bytes. D: alsa-sink.c: before: 425 D: alsa-sink.c: after: 425 D: alsa-sink.c: Rewound 1700 bytes. D: sink.c: Processing rewind... D: sink-input.c: Have to rewind 1700 bytes on render memblockq. D: source.c: Processing rewind... D: module-suspend-on-idle.c: Sink alsa_output.pci_8086_284b_sound_card_0 becomes busy. D: protocol-native.c: Requesting rewind due to end of underrun. D: protocol-native.c: Requesting rewind due to end of underrun. D: protocol-native.c: Requesting rewind due to end of underrun. D: protocol-native.c: Requesting rewind due to end of underrun. D: alsa-sink.c: Wakeup from ALSA! D: alsa-sink.c: Wakeup from ALSA! D: alsa-sink.c: Wakeup from ALSA! D: alsa-sink.c: Wakeup from ALSA! D: alsa-sink.c: Wakeup from ALSA! D: alsa-sink.c: Wakeup from ALSA! D: alsa-sink.c: Wakeup from ALSA! D: alsa-sink.c: Wakeup from ALSA! D: alsa-sink.c: Wakeup from ALSA! D: alsa-sink.c: Wakeup from ALSA! D: alsa-sink.c: Wakeup from ALSA! D: alsa-sink.c: Wakeup from ALSA! D: alsa-sink.c: Wakeup from ALSA! D: alsa-sink.c: Wakeup from ALSA! D: alsa-sink.c: Wakeup from ALSA! D: alsa-sink.c: Wakeup from ALSA! D: alsa-sink.c: Wakeup from ALSA! D: alsa-sink.c: Wakeup from ALSA! D: alsa-sink.c: Wakeup from ALSA! D: alsa-sink.c: Wakeup from ALSA! D: alsa-sink.c: Wakeup from ALSA! D: alsa-sink.c: Wakeup from ALSA! D: alsa-sink.c: Wakeup from ALSA! W: ratelimit.c: 1 events suppressed D: alsa-sink.c: Wakeup from ALSA! D: alsa-sink.c: Wakeup from ALSA! D: alsa-sink.c: Wakeup from ALSA! D: alsa-sink.c: Wakeup from ALSA! D: alsa-sink.c: Wakeup from ALSA! D: alsa-sink.c: Wakeup from ALSA! D: alsa-sink.c: Wakeup from ALSA! D: alsa-sink.c: Wakeup from ALSA! D: alsa-sink.c: Wakeup from ALSA! D: alsa-sink.c: Wakeup from ALSA! D: alsa-sink.c: Wakeup from ALSA! D: alsa-sink.c: Wakeup from ALSA! D: alsa-sink.c: Wakeup from ALSA! D: alsa-sink.c: Wakeup from ALSA! D: alsa-sink.c: Wakeup from ALSA! D: alsa-sink.c: Wakeup from ALSA! D: alsa-sink.c: Wakeup from ALSA! D: alsa-sink.c: Wakeup from ALSA! W: ratelimit.c: 2 events suppressed D: alsa-sink.c: Wakeup from ALSA! D: alsa-sink.c: Wakeup from ALSA! D: alsa-sink.c: Wakeup from ALSA! D: sink-input.c: Requesting rewind due to corking D: alsa-sink.c: Requested volume: 0: 100% 1: 100% D: alsa-sink.c: Got hardware volume: 0: 100% 1: 100% D: alsa-sink.c: Calculated software volume: 0: 100% 1: 100% D: alsa-sink.c: Latency set to 136.00ms D: alsa-sink.c: hwbuf_unused=328780 D: alsa-sink.c: setting avail_min=82637 D: alsa-sink.c: Requested to rewind 352768 bytes. D: alsa-sink.c: Limited to 1508 bytes. D: alsa-sink.c: before: 377 D: alsa-sink.c: after: 377 D: alsa-sink.c: Rewound 1508 bytes. D: sink.c: Processing rewind... D: sink-input.c: Have to rewind 1508 bytes on render memblockq. D: source.c: Processing rewind... I: sink-input.c: Freeing input 72 "Playback Stream" I: client.c: Freed 50 "Rhythmbox" I: protocol-native.c: Connection died. I: client.c: Created 137 "Native client (UNIX socket client)" D: protocol-native.c: Protocol version: remote 15, local 15 I: protocol-native.c: Got credentials: uid=500 gid=500 success=1 D: protocol-native.c: SHM possible: yes D: protocol-native.c: Negotiated SHM: yes D: module-augment-properties.c: Looking for .desktop file for rhythmbox D: module-suspend-on-idle.c: Sink alsa_output.pci_8086_284b_sound_card_0 becomes busy. I: resampler.c: Forcing resampler 'copy', because of fixed, identical sample rates. D: resampler.c: Channel matrix: D: resampler.c: I00 D: resampler.c: +------ D: resampler.c: O00 | 1.000 D: resampler.c: O01 | 1.000 I: resampler.c: Using resampler 'copy' I: resampler.c: Using float32le as working format. D: memblockq.c: memblockq requested: maxlength=33554432, tlength=0, base=4, prebuf=0, minreq=1 maxrewind=0 D: memblockq.c: memblockq sanitized: maxlength=33554432, tlength=33554432, base=4, prebuf=0, minreq=4 maxrewind=0 I: sink-input.c: Created input 234 "Playback Stream" on alsa_output.pci_8086_284b_sound_card_0 with sample spec float32le 1ch 44100Hz and channel map mono I: protocol-native.c: Requested tlength=200.00 ms, minreq=10.00 ms D: protocol-native.c: Adjust latency mode enabled, configuring sink latency to half of overall latency. D: memblockq.c: memblockq requested: maxlength=70560, tlength=27520, base=4, prebuf=25760, minreq=1764 maxrewind=0 D: memblockq.c: memblockq sanitized: maxlength=70560, tlength=27520, base=4, prebuf=25760, minreq=1764 maxrewind=0 I: protocol-native.c: Final latency 292.01 ms = 136.01 ms + 2*10.00 ms + 136.00 ms D: alsa-sink.c: Requested volume: 0: 100% 1: 100% D: alsa-sink.c: Got hardware volume: 0: 100% 1: 100% D: alsa-sink.c: Calculated software volume: 0: 100% 1: 100% D: alsa-sink.c: Latency set to 136.00ms D: alsa-sink.c: hwbuf_unused=328780 D: alsa-sink.c: setting avail_min=82637 D: sink-input.c: Requesting rewind due to uncorking D: alsa-sink.c: Requested to rewind 352768 bytes. D: alsa-sink.c: Limited to 1156 bytes. D: alsa-sink.c: before: 289 D: alsa-sink.c: after: 289 D: alsa-sink.c: Rewound 1156 bytes. D: sink.c: Processing rewind... D: sink-input.c: Have to rewind 1156 bytes on render memblockq. D: source.c: Processing rewind... D: module-suspend-on-idle.c: Sink alsa_output.pci_8086_284b_sound_card_0 becomes busy. D: protocol-native.c: Requesting rewind due to end of underrun. D: protocol-native.c: Requesting rewind due to end of underrun. D: sink-input.c: Requesting rewind due to corking D: sink-input.c: Requesting rewind due to uncorking D: module-suspend-on-idle.c: Sink alsa_output.pci_8086_284b_sound_card_0 becomes busy. D: protocol-native.c: Requesting rewind due to end of underrun. D: protocol-native.c: Requesting rewind due to end of underrun. D: alsa-sink.c: Wakeup from ALSA! D: alsa-sink.c: Wakeup from ALSA! D: alsa-sink.c: Wakeup from ALSA! D: alsa-sink.c: Wakeup from ALSA! D: alsa-sink.c: Wakeup from ALSA! D: alsa-sink.c: Wakeup from ALSA! D: alsa-sink.c: Wakeup from ALSA! D: alsa-sink.c: Wakeup from ALSA! D: alsa-sink.c: Wakeup from ALSA! D: alsa-sink.c: Wakeup from ALSA! D: alsa-sink.c: Wakeup from ALSA! D: alsa-sink.c: Wakeup from ALSA! D: alsa-sink.c: Wakeup from ALSA! D: alsa-sink.c: Wakeup from ALSA! D: alsa-sink.c: Wakeup from ALSA! D: alsa-sink.c: Wakeup from ALSA! D: alsa-sink.c: Wakeup from ALSA! D: alsa-sink.c: Wakeup from ALSA! W: ratelimit.c: 3 events suppressed D: alsa-sink.c: Wakeup from ALSA! D: alsa-sink.c: Wakeup from ALSA! D: alsa-sink.c: Wakeup from ALSA! D: alsa-sink.c: Wakeup from ALSA! D: alsa-sink.c: Wakeup from ALSA! D: alsa-sink.c: Wakeup from ALSA! D: alsa-sink.c: Wakeup from ALSA! D: alsa-sink.c: Wakeup from ALSA! D: alsa-sink.c: Wakeup from ALSA! D: alsa-sink.c: Wakeup from ALSA! D: alsa-sink.c: Wakeup from ALSA! D: alsa-sink.c: Wakeup from ALSA! D: alsa-sink.c: Wakeup from ALSA! D: alsa-sink.c: Wakeup from ALSA! D: alsa-sink.c: Wakeup from ALSA! D: alsa-sink.c: Wakeup from ALSA! D: alsa-sink.c: Wakeup from ALSA! D: alsa-sink.c: Wakeup from ALSA! D: alsa-sink.c: Wakeup from ALSA! D: alsa-sink.c: Wakeup from ALSA! D: alsa-sink.c: Wakeup from ALSA! D: alsa-sink.c: Wakeup from ALSA! D: alsa-sink.c: Wakeup from ALSA! D: alsa-sink.c: Wakeup from ALSA! D: alsa-sink.c: Wakeup from ALSA! D: alsa-sink.c: Wakeup from ALSA! D: alsa-sink.c: Wakeup from ALSA! D: alsa-sink.c: Wakeup from ALSA! D: alsa-sink.c: Wakeup from ALSA! D: alsa-sink.c: Wakeup from ALSA! D: alsa-sink.c: Wakeup from ALSA! D: alsa-sink.c: Wakeup from ALSA! D: alsa-sink.c: Wakeup from ALSA! D: alsa-sink.c: Wakeup from ALSA! D: alsa-sink.c: Wakeup from ALSA! D: alsa-sink.c: Wakeup from ALSA! D: alsa-sink.c: Wakeup from ALSA! D: alsa-sink.c: Wakeup from ALSA! D: alsa-sink.c: Wakeup from ALSA! D: alsa-sink.c: Wakeup from ALSA! D: alsa-sink.c: Wakeup from ALSA! D: alsa-sink.c: Wakeup from ALSA! D: alsa-sink.c: Wakeup from ALSA! D: alsa-sink.c: Wakeup from ALSA! D: alsa-sink.c: Wakeup from ALSA! D: alsa-sink.c: Wakeup from ALSA! D: alsa-sink.c: Wakeup from ALSA! D: alsa-sink.c: Wakeup from ALSA! D: alsa-sink.c: Wakeup from ALSA! D: alsa-sink.c: Wakeup from ALSA! D: alsa-sink.c: Wakeup from ALSA! D: alsa-sink.c: Wakeup from ALSA! D: alsa-sink.c: Wakeup from ALSA! D: alsa-sink.c: Wakeup from ALSA! D: alsa-sink.c: Wakeup from ALSA! D: alsa-sink.c: Wakeup from ALSA! D: alsa-sink.c: Wakeup from ALSA! D: alsa-sink.c: Wakeup from ALSA! D: alsa-sink.c: Wakeup from ALSA! D: alsa-sink.c: Wakeup from ALSA! D: alsa-sink.c: Wakeup from ALSA! D: alsa-sink.c: Wakeup from ALSA! D: alsa-sink.c: Wakeup from ALSA! D: alsa-sink.c: Wakeup from ALSA! D: alsa-sink.c: Wakeup from ALSA! D: alsa-sink.c: Wakeup from ALSA! D: alsa-sink.c: Wakeup from ALSA! D: alsa-sink.c: Wakeup from ALSA! D: alsa-sink.c: Wakeup from ALSA! D: alsa-sink.c: Wakeup from ALSA! D: alsa-sink.c: Wakeup from ALSA! D: alsa-sink.c: Wakeup from ALSA! D: alsa-sink.c: Wakeup from ALSA! D: alsa-sink.c: Wakeup from ALSA! D: alsa-sink.c: Wakeup from ALSA! D: alsa-sink.c: Wakeup from ALSA! D: alsa-sink.c: Wakeup from ALSA! D: alsa-sink.c: Wakeup from ALSA! D: alsa-sink.c: Wakeup from ALSA! D: sink-input.c: Requesting rewind due to corking D: alsa-sink.c: Requested volume: 0: 100% 1: 100% D: alsa-sink.c: Got hardware volume: 0: 100% 1: 100% D: alsa-sink.c: Calculated software volume: 0: 100% 1: 100% D: alsa-sink.c: Latency set to 136.00ms D: alsa-sink.c: hwbuf_unused=328780 D: alsa-sink.c: setting avail_min=82637 D: alsa-sink.c: Requested to rewind 352768 bytes. D: alsa-sink.c: Limited to 97732 bytes. D: alsa-sink.c: before: 24433 D: alsa-sink.c: after: 24433 D: alsa-sink.c: Rewound 97732 bytes. D: sink.c: Processing rewind... D: sink-input.c: Have to rewind 97732 bytes on render memblockq. D: source.c: Processing rewind... I: sink-input.c: Freeing input 234 "Playback Stream" I: client.c: Freed 137 "Rhythmbox" I: protocol-native.c: Connection died. D: core-scache.c: Playing sample "window-close" on "alsa_output.pci_8086_284b_sound_card_0" D: memblockq.c: memblockq requested: maxlength=54526, tlength=0, base=2, prebuf=1, minreq=1 maxrewind=0 D: memblockq.c: memblockq sanitized: maxlength=54526, tlength=54526, base=2, prebuf=2, minreq=2 maxrewind=0 I: module-stream-restore.c: Restoring volume for sink input sink-input-by-media-role:event. I: module-stream-restore.c: Restoring mute state for sink input sink-input-by-media-role:event. D: module-suspend-on-idle.c: Sink alsa_output.pci_8086_284b_sound_card_0 becomes busy. I: resampler.c: Forcing resampler 'copy', because of fixed, identical sample rates. D: resampler.c: Channel matrix: D: resampler.c: I00 D: resampler.c: +------ D: resampler.c: O00 | 1.000 D: resampler.c: O01 | 1.000 I: resampler.c: Using resampler 'copy' I: resampler.c: Using s16le as working format. D: memblockq.c: memblockq requested: maxlength=33554432, tlength=0, base=4, prebuf=0, minreq=1 maxrewind=0 D: memblockq.c: memblockq sanitized: maxlength=33554432, tlength=33554432, base=4, prebuf=0, minreq=4 maxrewind=0 I: sink-input.c: Created input 235 "window-close" on alsa_output.pci_8086_284b_sound_card_0 with sample spec s16le 1ch 44100Hz and channel map mono D: core-util.c: posix_madvise() worked fine! D: alsa-sink.c: Requested volume: 0: 100% 1: 100% D: alsa-sink.c: Got hardware volume: 0: 100% 1: 100% D: alsa-sink.c: Calculated software volume: 0: 100% 1: 100% D: alsa-sink.c: Requested to rewind 352768 bytes. D: alsa-sink.c: Limited to 114308 bytes. D: alsa-sink.c: before: 28577 D: alsa-sink.c: after: 28577 D: alsa-sink.c: Rewound 114308 bytes. D: sink.c: Processing rewind... D: sink-input.c: Have to rewind 114308 bytes on render memblockq. D: source.c: Processing rewind...
After killing PA (via ^C, to get out of the above loop), I've restarted it manually with -vvvv, but this time Flash stopped working again (in the browser that was opened during the crash). I'll attach the output.
Created attachment 341274 [details] pulseaudio -vvvv This is the output after I restarted PA.
The above loop? What do you mean? The output you pasted shows nothing bad... It shows that the stream got corked at the end, i.e. you apparently paused it in Rb. Please elaborate on what should be wrong here.
[NOTE: I don't know how to interpret the output from PA, so I'm not saying anything based on that output] So once again, this is what happened: 1. I've left Rhythmbox playing for a few hours, left home Also, just before running Rhythmbox, I went to Youtube in FF, and played a clip to test the sound. It worked. I also left FF running, with the Youtube clip opened. 2. On my return, I found Rhythmbox stopped but in my speakers I could here, over and over again (infinite loop) a small part of a song (about 2s long). 3. Rhythmbox could not play another sound, so I killed PA to stop the infinite loop, and since PA was running with -vvvv, I also captured its output which I pasted inline: https://bugzilla.redhat.com/show_bug.cgi?id=497550#c4 4. After killing PA, I've restarted it with -vvvv 5. After restarting PA, I switched to my FF window showing the Youtube clip, and press Play. No sound. This seemed very close to the original situation that resulted in this bug, so I captured the output from PA, and attached to this bug: https://bugzilla.redhat.com/attachment.cgi?id=341274 6. I tried to close FF, but again, it didn't close. I had to manually kill(1) the processes to close it, it seems related to the fact that PA died while FF was running. 7. After restarting FF, sound started working again in Flash. Notes: - I didn't pause anything in Rb, I ran unattended, I wasn't home at the time
Hmm, Ok. This smells as if snd_pcm_rewind() hangs on your driver. We had a report about that already. If snd_pcm_rewind() hangs this is a driver bug. To verify this, may I ask you to reproduce this once again and then attach gdb to the PA process and get me a full backtrace over all threads? Do you think you can do that? If not, just ask I'll help you through the gdb usage.
There are two distinct bugs here: 1. The infinite loop playing ~2s snippet 2. The fact that sound in FF stops working after a PA crash I'm not sure which one you're referring to. If it is (1), I doubt I can reproduce it, it is the first time I'm seeing it. But just in case it happens again, I can use some pointers on how I can use gdb to get you the info (I don't use debuggers much, I prefer print statements :)). On the other hand (2) is easily reproducible...
Flash never checks for error codes returned by functions. Due to that if PA dies for some reason the worst things can happen in Flash. It's closed source sw, so we cannot fix that. Flash just has no code for handling sound devices going away. So, yes, I am interested in issue #1. So here's what you should be doing when this happens again: In a second terminal you install debuginfo symbols for PA. 'debuginfo-install pulseaudio' as root. Then you run 'gdb /usr/bin/pulseaudio' (as root too). This will give you a prompt. There you should enter this: handle SIGXCPU SIGPWR SIG33 SIG34 SIG42 SIG43 SIG44 SIG45 SIG46 SIG47 SIG48 SIG49 SIG50 SIG51 SIG52 SIG53 SIG63 SIG62 SIG61 SIG60 SIG59 SIG58 nostop noprint and then this: attach 4711 (where you replace 4711 by the PID of the pulseaudio process which is stuck which you can find out with ps or pidof) And finally you type this: bt thread apply all bt full The output of that last command please attach.
OK, I managed to get the infinite loop again (don't ask me how!). However, the 'bt thread apply all bt full' fails here: (gdb) bt thread apply all bt full A syntax error in expression, near `apply all bt '. but here is what I get with a less ambitious command: (gdb) bt thread #0 0x00af3424 in __kernel_vsyscall () #1 0x00996806 in *__GI___poll (fds=0xa2eff4, nfds=28, timeout=8036) at ../sysdeps/unix/sysv/linux/poll.c:87 #2 0x0713d886 in pa_mainloop_poll (m=0x94f59d8) at pulse/mainloop.c:859 #3 0x0713dc1e in pa_mainloop_iterate (m=0x94f59d8, block=1, retval=0xbfe98840) at pulse/mainloop.c:923 #4 0x0713dc98 in pa_mainloop_run (m=0x94f59d8, retval=0xbfe98840) at pulse/mainloop.c:941 #5 0x080548e2 in main (argc=2, argv=0xbfe98954) at daemon/main.c:1054 (gdb) bt full #0 0x00af3424 in __kernel_vsyscall () No symbol table info available. #1 0x00996806 in *__GI___poll (fds=0xa2eff4, nfds=28, timeout=8036) at ../sysdeps/unix/sysv/linux/poll.c:87 resultvar = <value optimized out> oldtype = 0 result = <value optimized out> #2 0x0713d886 in pa_mainloop_poll (m=0x94f59d8) at pulse/mainloop.c:859 __func__ = "pa_mainloop_poll" __PRETTY_FUNCTION__ = "pa_mainloop_poll" #3 0x0713dc1e in pa_mainloop_iterate (m=0x94f59d8, block=1, retval=0xbfe98840) at pulse/mainloop.c:923 r = 0 __func__ = "pa_mainloop_iterate" __PRETTY_FUNCTION__ = "pa_mainloop_iterate" #4 0x0713dc98 in pa_mainloop_run (m=0x94f59d8, retval=0xbfe98840) at pulse/mainloop.c:941 r = 1 #5 0x080548e2 in main (argc=2, argv=0xbfe98954) at daemon/main.c:1054 c = 0x94f6b38 buf = 0x94f4298 conf = 0x94f3dc8 mainloop = 0x94f59d8 s = 0x956b018 "" r = 0 retval = 0 d = 2 suid_root = false real_root = false valid_pid_file = true gid = 498 ltdl_init = true passed_fd = -1 e = 0x0 daemon_pipe = {-1, -1} autospawn_fd = -1 autospawn_locked = false dbus = 0x95275d8 __func__ = "main" __PRETTY_FUNCTION__ = "main"
Weird, after leaving gdb, the infinite loop stopped, and sound started working properly... (PA was not respawned, hm).
Oops, sorry, that should have been: thread apply all bt full I.e. the bt in the beginning of the line was too much. Sorry for the confusion. Could you please try to reproduce this and get me the output of that command?
Created attachment 342751 [details] PA backtrace I've managed to reproduce the ~2s infinite loop, this is the backtrace. I've went to hell and back to get, as X got into a funky more when it will block for 30s-60s every time I would try to switch a window, and I've have to swtich virtual console to un-wedge it. However, I think I didn't have all symbols available here, see if it's useful.
Created attachment 342752 [details] PA backtrace (version 2) I've exited gdb, loaded more -debuginfo, and tried again. This is the result. I'm not sure if PA remained stuck at this point anymore, but I sure hope so :)
Hmm, those backtraces show nothing bad. The pa -vvvv output suggests you are using module-combine. Could you please disable that (using paprefs)? Does the ptoblem go away?
I am pretty sure this is related to module-combine. Merging with the other bug you posted about this. *** This bug has been marked as a duplicate of bug 493788 ***