Linux.com

ALSA programming - segmantation fault

Link to this post 03 May 10

Hello

I write simple program which I need to implement in my MA thesis. It have to read data from audio card by some time an then write them to that device but it doesn't work, because I get Segmentation fault. I think it's associated with handle, because I was testing it and noticed that ALSA functions which have only handle as an argument give segmentation fault (but maybe reason is lies deeper). I don't know about I/O programming - ALSA programming too - so I'm asking you for help. My code is attached. [file name=ALSA_duplex.gz size=2061]http://www.linux.com/media/kunena/attachments/legacy/files/ALSA_duplex.gz[/file]

Link to this post 03 May 10

I am sorry that I have not touched on audio development yet and cannot help you with the code.
If you have no luck in here, then checkout my post at http://www.linux.com/community/forums?func=view&catid=17&id=5637 to be directed to our sister site for Linux Developers in which you can get better responses for development related questions.

Link to this post 04 May 10

I took a very quick look at your code. In your function inicjuj_PCM() you pass the address of an snd_pcm_t object as *pcm_handle, and then you pass the address of that to snd_pcm_open() as &pcm_handle. This may be a cause of your problem, since the actual address of the pointer itself (not the contents) is not available. You need to change your code to pas a snd_pcm_t** to inicjuj_PCM() and then just pass that along unmodified to snd_pcm_open(). Then you need to fix the rest of your code to deal with the double-indirection of pcm_handle. The reason for this is that the ALSA functions may modify the value of the pointer address and there is no way to do that as you have written it. Hence, the core dump / segfault.

Link to this post 12 May 10

It works what you said. Thank you. I thought the same but I was so bored my thesis that I just gave up and didn't try my speculation.

Link to this post 13 May 10

Happy to help and glad that this did the trick. Post more questions when you have coding problems. I've been programming in C and C++ for about 30 years now. I've made most of the possible errors one can make already... :-)

Link to this post 13 May 10

woboyle wrote:

Happy to help and glad that this did the trick. Post more questions when you have coding problems. I've been programming in C and C++ for about 30 years now. I've made most of the possible errors one can make already... :-)

That sentence might get you in trouble: I'm learning C++ and Qt right now. ;)

Who we are ?

The Linux Foundation is a non-profit consortium dedicated to the growth of Linux.

More About the foundation...

Frequent Questions

Join / Linux Training / Board