alsa problem with stopping playback

Mike Gorse mgorse at mgorse.dhs.org
Sat Dec 22 11:34:33 UTC 2007


To elaborate on my last message, as is obvious from the patch, the bug I 
mentioned is in dmix, so, if you aren't using dmix, then it isn't what 
you're running into.  The library tries to discard a semaphore that it has 
previously locked, but, if it is unable to discard it (as could be the 
case if it is owned by a process running under a different user), then it 
never releases it, causing deadlock.  So running speech-dispatcher as your 
normal user should be another work-around.

-- Mike Gorse / AIM:linvortex / http://mgorse.freeshell.org --

On Sat, 22 Dec 2007, Mike Gorse wrote:

> Hi Rynhardt,
>
> I ran into a similar problem with eflite and speech-dispatcher a while ago. 
> There is a bug in alsa-lib that you might be running into.  You could try 
> building alsa-lib with the following patch:
>
> --- alsa-lib-1.0.15/src/pcm/pcm_dmix.c	2007-10-15 04:45:26.000000000 -0400
> +++ alsa-lib-hg20071222/src/pcm/pcm_dmix.c	2007-12-10 20:00:04.000000000 
> -0500
> @@ -652,9 +614,10 @@
>  	 if (dmix->client)
>  	 	snd_pcm_direct_client_discard(dmix);
>  	shm_sum_discard(dmix);
> -	if (snd_pcm_direct_shm_discard(dmix))
> -		snd_pcm_direct_semaphore_discard(dmix);
> -	else
> +	if (snd_pcm_direct_shm_discard(dmix)) {
> +		if (snd_pcm_direct_semaphore_discard(dmix))
> +			snd_pcm_direct_semaphore_up(dmix, 
> DIRECT_IPC_SEM_CLIENT);
> +	} else
> 	 	snd_pcm_direct_semaphore_up(dmix, DIRECT_IPC_SEM_CLIENT);
> 	 free(dmix->bindings);
> 	 pcm->private_data = NULL;
>
> or just downloading a recent alsa-lib snapshot from 
> ftp://ftp.suse.de/pub/projects/alsa/snapshot/lib and building it (the fix is 
> in their hg tree, but it was made post-1.0.15, so there is no release that 
> includes it yet.)




More information about the Blinux-list mailing list