[alsa-devel] pcm write from posix threads
When calling snd_pcm_write* from a thread how do you safely cancel the thread? I've tried masking the signals which are used in alsa lib, yet I am getting a segfault on pthread_exit(). My thread is looping doing the following.
testcancel snd_pcm_wait snd_pcm_avail snd_pcm_writei
I am checking return values to handle those functions being woken up by pthread cancel and attempting to exit. In testing the process it performs fine until I start actually writing data. Once I write some data, a pthread_exit will segfault. My cancellation routine is calling snd_pcm_drop, then doing a cancel followed by join.
At Tue, 19 Aug 2008 17:24:06 -0500, Brian Rhodes wrote:
When calling snd_pcm_write* from a thread how do you safely cancel the thread? I've tried masking the signals which are used in alsa lib, yet I am getting a segfault on pthread_exit(). My thread is looping doing the following.
testcancel snd_pcm_wait snd_pcm_avail snd_pcm_writei
I am checking return values to handle those functions being woken up by pthread cancel and attempting to exit. In testing the process it performs fine until I start actually writing data. Once I write some data, a pthread_exit will segfault. My cancellation routine is calling snd_pcm_drop, then doing a cancel followed by join.
No, alsa-lib functions don't care threads in general. Some codes have uses pthread_mutex, but not in the PCM core code, at least.
You need to handle and protect threads by yourself.
Takashi
Thanks for reassuring me that there isn't some sort of incompatibility with alsa lib and threading. I am not able to reproduce the issue on an x86 system and it only seems to happen when built with a specific toolchain for ARM.
Takashi Iwai wrote:
At Tue, 19 Aug 2008 17:24:06 -0500, Brian Rhodes wrote:
When calling snd_pcm_write* from a thread how do you safely cancel the thread? I've tried masking the signals which are used in alsa lib, yet I am getting a segfault on pthread_exit(). My thread is looping doing the following.
testcancel snd_pcm_wait snd_pcm_avail snd_pcm_writei
I am checking return values to handle those functions being woken up by pthread cancel and attempting to exit. In testing the process it performs fine until I start actually writing data. Once I write some data, a pthread_exit will segfault. My cancellation routine is calling snd_pcm_drop, then doing a cancel followed by join.
No, alsa-lib functions don't care threads in general. Some codes have uses pthread_mutex, but not in the PCM core code, at least.
You need to handle and protect threads by yourself.
Takashi _______________________________________________ Alsa-devel mailing list Alsa-devel@alsa-project.org http://mailman.alsa-project.org/mailman/listinfo/alsa-devel
participants (2)
-
Brian Rhodes
-
Takashi Iwai