[alsa-devel] interrupting snd_pcm_writei or snd_pcm_drain?
I've noticed that it is unsafe to call snd_pcm_writei or snd_pcm_drain in a pthread with its cancelation type set to asynchronous. snd_pcm_dmix_sync_area can lower a semaphore, and, if the thread is canceled while the semaphore is down, then a subsequent call to the sound device (calling snd_pcm_close, for instance) will also lower the semaphore and cause deadlock. Is this a known issue, and is there a way around it other than to always use deferred cancelation when calling these functions?
Thanks, -Mike G-
At Wed, 14 Nov 2007 12:34:07 -0400 (GMT+4), Mike Gorse wrote:
I've noticed that it is unsafe to call snd_pcm_writei or snd_pcm_drain in a pthread with its cancelation type set to asynchronous. snd_pcm_dmix_sync_area can lower a semaphore, and, if the thread is canceled while the semaphore is down, then a subsequent call to the sound device (calling snd_pcm_close, for instance) will also lower the semaphore and cause deadlock. Is this a known issue, and is there a way around it other than to always use deferred cancelation when calling these functions?
I've not looked deeply through this code flow yet, but it sounds possible that the semaphore gets confused. Did you test any codes indicating that?
thanks,
Takashi
participants (2)
-
Mike Gorse
-
Takashi Iwai