[alsa-devel] snd_pcm_drop causing lockup with DMix
Jaroslav Kysela
perex at perex.cz
Sun Feb 28 17:22:27 CET 2010
On Sun, 28 Feb 2010, John Lindgren wrote:
> Hi,
>
> A couple of weeks ago I reported a rather serious bug #4914 that can
> cause a multi-threaded using ALSA to lock up so that it can only be
> ended with SIGKILL.
>
> I maintain the ALSA output part of Audacious, and I need to be able to
> play audio in one thread of the program and then signal that thread to
> stop from another. The way to do this in ALSA, if I understand
> correctly, is to interrupt the thread that is sending audio with a call
> to snd_pcm_drop. But using DMix makes the first thread hang up in a
> snd_pcm_wait call with a timeout of -1.
>
> Is anyone working on this bug? Is there any more help I can provide?
Could you try this patch?
diff --git a/src/pcm/pcm_direct.c b/src/pcm/pcm_direct.c
index d9e596e..8c7ca06 100644
--- a/src/pcm/pcm_direct.c
+++ b/src/pcm/pcm_direct.c
@@ -1274,6 +1274,7 @@ int snd_pcm_direct_set_timer_params(snd_pcm_direct_t *dmix)
snd_timer_params_set_ticks(params, 1);
if (dmix->tread) {
filter = (1<<SND_TIMER_EVENT_TICK) |
+ (1<<SND_TIMER_EVENT_STOP) |
dmix->timer_event_suspend |
dmix->timer_event_resume;
snd_timer_params_set_filter(params, filter);
Jaroslav
-----
Jaroslav Kysela <perex at perex.cz>
Linux Kernel Sound Maintainer
ALSA Project, Red Hat, Inc.
More information about the Alsa-devel
mailing list