[alsa-devel] A debug version of the ALSA lib?
Hi,
I have a problem with the ALSA library. Calling snd_device_name_hint() crashes sometimes, and I can't understand why.
It might be due to a previous memory corruption in my program, a problem with my sound card driver, or a bug in the library, I don't know.
I tried to debug it in assembler, and found that the library is browsing a list of devices, gets the pointer to each device name, and in the 2nd device, I get the four letters "Play" instead of a valid pointer.
To be able to go further, I'd need a debug version of the ALSA library, including variable names and source lines, which could let me find more easily what goes wrong and when.
Is it possible to build such a library from the alsa-lib-1.0.24.1 sources? Or should I download and install another specific package?
Thank you, Olivier
On Thu, Sep 1, 2011 at 10:37 AM, Olivier Guillion - Myriad olivier@myriad-online.com wrote:
To be able to go further, I'd need a debug version of the ALSA library, including variable names and source lines, which could let me find more easily what goes wrong and when.
Is it possible to build such a library from the alsa-lib-1.0.24.1 sources? Or should I download and install another specific package?
The sources are the same. Whether you'll get a library with debug symbols depends on the compile time options when building the lib. And depending on your distribution, you might also be able to install the debug-enabled version by choosing the -dbg package derivat.
Daniel
Dne 1.9.2011 10:50, Daniel Mack napsal(a):
On Thu, Sep 1, 2011 at 10:37 AM, Olivier Guillion - Myriad olivier@myriad-online.com wrote:
To be able to go further, I'd need a debug version of the ALSA library, including variable names and source lines, which could let me find more easily what goes wrong and when.
Is it possible to build such a library from the alsa-lib-1.0.24.1 sources? Or should I download and install another specific package?
The sources are the same. Whether you'll get a library with debug symbols depends on the compile time options when building the lib. And depending on your distribution, you might also be able to install the debug-enabled version by choosing the -dbg package derivat.
E.g. in debian/ubuntu I use dpkg-buildpackage with debug enabled, for details see e.g. http://jameswestby.net/tips/tips/compiling-debian-package-for-debug.html , just libasound2 instead of mutt.
Regards,
Pavel.
Thank you!
Unfortunately, it didn't work for me. It started to install about 700 MB of miscellaneous packages, and failed on the making of the final package. By precaustion I reverted to a previous snapshot of my system. Isn't it a simpler way to get debug info? Is it possible for instance to install libasound-dbg on Ubuntu 11.04?
Maybe my problem comes from run-time link with the library? Does anyone use Code:Blocks to compile C applications that use ALSA?
If yes could you please tell me the compiler/linker settings to properly use the ALSA shared libs? I added "/usr/lib/libasound.so.2" to the "Link library" section of the Linker settings, and it worked, but I still get crashes on the "snd_device_name_hints", especially within a small Mozilla plug-in in Firefox.
I can send the whole project, with a very easy test that shows the problem if needed.
Regards, Olivier
Pavel Hofman pavel.hofman@ivitera.com wrote : :
To be able to go further, I'd need a debug version of the ALSA library, including variable names and source lines, which could let me find more easily what goes wrong and when.
Is it possible to build such a library from the alsa-lib-1.0.24.1 sources? Or should I download and install another specific package?
The sources are the same. Whether you'll get a library with debug symbols depends on the compile time options when building the lib. And depending on your distribution, you might also be able to install the debug-enabled version by choosing the -dbg package derivat.
E.g. in debian/ubuntu I use dpkg-buildpackage with debug enabled, for details see e.g. http://jameswestby.net/tips/tips/compiling-debian-package-for-debug.html , just libasound2 instead of mutt.
On Thu, Sep 1, 2011 at 4:19 PM, Olivier Guillion - Myriad olivier@myriad-online.com wrote:
Unfortunately, it didn't work for me. It started to install about 700 MB of miscellaneous packages, and failed on the making of the final package.
How did you download them? And which distro are you using.
By precaustion I reverted to a previous snapshot of my system. Isn't it a simpler way to get debug info? Is it possible for instance to install libasound-dbg on Ubuntu 11.04?
That should be possible, yes. Or just build the library yourself and redirect your linker to take the self-compiled library rather than the system-wide instance.
Maybe my problem comes from run-time link with the library? Does anyone use Code:Blocks to compile C applications that use ALSA?
If yes could you please tell me the compiler/linker settings to properly use the ALSA shared libs? I added "/usr/lib/libasound.so.2" to the "Link library" section of the Linker settings, and it worked, but I still get crashes on the "snd_device_name_hints", especially within a small Mozilla plug-in in Firefox.
I've never done such a thing myself, but maybe someone else has.
I can send the whole project, with a very easy test that shows the problem if needed.
People on this list are usually really busy and I'm not sure whether anybody would offer such specifc support unless it points out a specific problem in the ALSA code. But I can't speak for everyone here, of course :)
Daniel
Hi,
Daniel Mack zonque@gmail.com wrote :
Is it possible for instance to install libasound-dbg on Ubuntu 11.04?
That should be possible, yes. Or just build the library yourself and redirect your linker to take the self-compiled library rather than the system-wide instance.
Thank you very much for your answer. Would you be kind enough to tell me how to build this debug version? Is it possible through configure / make, or does it need modifying the generated makefiles by hand?
I can send the whole project, with a very easy test that shows the problem if needed.
People on this list are usually really busy and I'm not sure whether anybody would offer such specifc support unless it points out a specific problem in the ALSA code. But I can't speak for everyone here, of course :)
I understand perfectly. If it's not due to a problem in my project's option or my ALSA settings, then it's definitely a bug either in the ALSA code, or in the Firefox plugin management. As soon as I can follow the calls with a debugger, I'll be able to answer this question that bothers me for one full week now .
Regards,
Olivier Olivier Guillion Myriad 26 rue Michel de Montaigne 31200 Toulouse FRANCE -------- WebSite ----------- http://www.myriad-online.com Download here the latest version of our shareware programs, view the online tutorials or get info about Myriad and its activities. ---------------------------------
On Thu, Sep 1, 2011 at 6:37 PM, Olivier Guillion - Myriad olivier@myriad-online.com wrote:
Hi,
Daniel Mack zonque@gmail.com wrote :
Is it possible for instance to install libasound-dbg on Ubuntu 11.04?
That should be possible, yes. Or just build the library yourself and redirect your linker to take the self-compiled library rather than the system-wide instance.
Thank you very much for your answer. Would you be kind enough to tell me how to build this debug version? Is it possible through configure / make, or does it need modifying the generated makefiles by hand?
call
$ ./configure --prefix=/usr/local --enable-debug && make
This should do the installation - depending on your prefix location, you might to run this as root:
$ make install
Then let your LD_LIBRARY_PATH point to your modified lib and read http://tldp.org/HOWTO/Program-Library-HOWTO/shared-libraries.html for more information. Or just use the binary Ubuntu packages and be done.
I understand perfectly. If it's not due to a problem in my project's option or my ALSA settings, then it's definitely a bug either in the ALSA code, or in the Firefox plugin management. As soon as I can follow the calls with a debugger, I'll be able to answer this question that bothers me for one full week now .
I'd rather put it that way: If it was a bug in the alsa lib that is so easy to trigger, you wouldn't be the first one to discover it :)
Daniel
Hi,
Daniel Mack zonque@gmail.com wrote :
Thank you very much for your answer. Would you be kind enough to tell me how to build this debug version? Is it possible through configure / make, or does it need modifying the generated makefiles by hand?
call
$ ./configure --prefix=/usr/local --enable-debug && make
This should do the installation - depending on your prefix location, you might to run this as root:
$ make install
Then let your LD_LIBRARY_PATH point to your modified lib and read http://tldp.org/HOWTO/Program-Library-HOWTO/shared-libraries.html for more information.
Thank you!
I tried it. The --enable-debug switch doesn't seem to be recognized by "configure". It writes : configure: WARNING: unrecognized options: --enable-debug at the beginning of the process. (Alsa lib sources got from alsa-lib-1.0.24.1.tar.bz2, downloaded from ftp.alsa- project.org/pub/lib/)
By examining configure, it seems that the option name is now --enable-debug-assert (not listed as such in the --usage)
However, according to the documentation, this option seems to include asserts calls to check the parameters, but does not compile the whole library with full symbolic information. I couldn't get an ALSA lib with debug info this way.
Or just use the binary Ubuntu packages and be done.
Sorry, but what does it mean?
Regards,
Olivier Guillion Myriad 26 rue Michel de Montaigne 31200 Toulouse FRANCE -------- WebSite ----------- http://www.myriad-online.com Download here the latest version of our shareware programs, view the online tutorials or get info about Myriad and its activities. ---------------------------------
On Fri, Sep 2, 2011 at 10:44 AM, Olivier Guillion - Myriad olivier@myriad-online.com wrote:
Or just use the binary Ubuntu packages and be done.
Sorry, but what does it mean?
That means that Ubuntu (as many other distros) offers you a ready-made, debug symbols enabled version of the library which you can just install and use. As you're struggeling with compiling the library youself, I'd suggest you go for this solution. In Ubuntu, the package you're looking for is called libasound2-dev.
Daniel
Am Freitag, den 02.09.2011, 12:43 +0200 schrieb Daniel Mack:
On Fri, Sep 2, 2011 at 10:44 AM, Olivier Guillion - Myriad wrote:
Or just use the binary Ubuntu packages and be done.
Sorry, but what does it mean?
That means that Ubuntu (as many other distros) offers you a ready-made, debug symbols enabled version of the library which you can just install and use. As you're struggeling with compiling the library youself, I'd suggest you go for this solution. In Ubuntu, the package you're looking for is called libasound2-dev.
I have not followed the thread, but if you want debugging symbol you need `libasound2-dbg`. (`aptitude search libasound*`)
Thanks,
Paul
Hi,
Daniel Mack, then Paul Menzel wrote:
Or just use the binary Ubuntu packages and be done.
Sorry, but what does it mean?
That means that Ubuntu (as many other distros) offers you a ready-made, debug symbols enabled version of the library which you can just install and use. As you're struggeling with compiling the library youself, I'd suggest you go for this solution. In Ubuntu, the package you're looking for is called libasound2-dev.
I have not followed the thread, but if you want debugging symbol you need `libasound2-dbg`. (`aptitude search libasound*`)
I installed the libasound2-dev package. I got mainly : - a bunch of C header files in /usr/include - libasound.a, libasound.la and libasound.so in /usr/lib (none of these libraries include the debugging symbols)
I tried "aptitude search libasound*" and got: libasound-dev libasound2 libasound2-dev libasound2-doc libasound2-plugin-equal libasound2-plugins
but no libasound2-dbg. Any idea about where (and how) I can get it? (using Ubuntu 11.04)
Regards, Olivier
Dne 2.9.2011 14:10, Olivier Guillion - Myriad napsal(a):
Hi,
Daniel Mack, then Paul Menzel wrote:
Or just use the binary Ubuntu packages and be done.
Sorry, but what does it mean?
That means that Ubuntu (as many other distros) offers you a ready-made, debug symbols enabled version of the library which you can just install and use. As you're struggeling with compiling the library youself, I'd suggest you go for this solution. In Ubuntu, the package you're looking for is called libasound2-dev.
I have not followed the thread, but if you want debugging symbol you need `libasound2-dbg`. (`aptitude search libasound*`)
I installed the libasound2-dev package. I got mainly :
- a bunch of C header files in /usr/include
- libasound.a, libasound.la and libasound.so in /usr/lib
(none of these libraries include the debugging symbols)
I tried "aptitude search libasound*" and got: libasound-dev libasound2 libasound2-dev libasound2-doc libasound2-plugin-equal libasound2-plugins
but no libasound2-dbg. Any idea about where (and how) I can get it? (using Ubuntu 11.04)
Yes, use the procedure I gave you in http://permalink.gmane.org/gmane.linux.alsa.devel/88753 . I used it a few weeks ago to debug alsa-lib in gdb.
Just tested now, ubuntu 10.04:
sudo apt-get build-dep libasound2 apt-get source libasound2 cd alsa-lib-1.0.22/ export DEB_BUILD_OPTIONS=nostrip,noopt dpkg-buildpackage -rfakeroot -uc -us
Simple check while the compilation runs shows the gcc compiler is called with -g -O0 params.
In a few minutes fresh .debs were waiting for me in the parent directory, to be installed with dpkg -i libasound*deb and stepped with gdb.
With regards,
Pavel.
Am Freitag, den 02.09.2011, 14:10 +0200 schrieb Olivier Guillion - Myriad:
Daniel Mack, then Paul Menzel wrote:
Or just use the binary Ubuntu packages and be done.
Sorry, but what does it mean?
That means that Ubuntu (as many other distros) offers you a ready-made, debug symbols enabled version of the library which you can just install and use. As you're struggeling with compiling the library youself, I'd suggest you go for this solution. In Ubuntu, the package you're looking for is called libasound2-dev.
I have not followed the thread, but if you want debugging symbol you need `libasound2-dbg`. (`aptitude search libasound*`)
I installed the libasound2-dev package. I got mainly :
- a bunch of C header files in /usr/include
- libasound.a, libasound.la and libasound.so in /usr/lib
(none of these libraries include the debugging symbols)
I tried "aptitude search libasound*" and got: libasound-dev libasound2 libasound2-dev libasound2-doc libasound2-plugin-equal libasound2-plugins
but no libasound2-dbg. Any idea about where (and how) I can get it? (using Ubuntu 11.04)
I am using Debian Sid/unstable. Maybe David (put in CC) can say how to do that in Ubuntu.
Thanks,
Paul
On 09/02/2011 05:43 PM, Paul Menzel wrote:
Am Freitag, den 02.09.2011, 14:10 +0200 schrieb Olivier Guillion - Myriad:
Daniel Mack, then Paul Menzel wrote:
Or just use the binary Ubuntu packages and be done.
Sorry, but what does it mean?
That means that Ubuntu (as many other distros) offers you a ready-made, debug symbols enabled version of the library which you can just install and use. As you're struggeling with compiling the library youself, I'd suggest you go for this solution. In Ubuntu, the package you're looking for is called libasound2-dev.
I have not followed the thread, but if you want debugging symbol you need `libasound2-dbg`. (`aptitude search libasound*`)
I installed the libasound2-dev package. I got mainly :
- a bunch of C header files in /usr/include
- libasound.a, libasound.la and libasound.so in /usr/lib
(none of these libraries include the debugging symbols)
I tried "aptitude search libasound*" and got: libasound-dev libasound2 libasound2-dev libasound2-doc libasound2-plugin-equal libasound2-plugins
but no libasound2-dbg. Any idea about where (and how) I can get it? (using Ubuntu 11.04)
I am using Debian Sid/unstable. Maybe David (put in CC) can say how to do that in Ubuntu.
We build debug symbols for every package and keep them at a separate repository at ddebs.ubuntu.com. For more information about how to find and install them see https://wiki.ubuntu.com/DebuggingProgramCrash
On Fri, Sep 2, 2011 at 12:55 PM, Paul Menzel paulepanter@users.sourceforge.net wrote:
Am Freitag, den 02.09.2011, 12:43 +0200 schrieb Daniel Mack:
On Fri, Sep 2, 2011 at 10:44 AM, Olivier Guillion - Myriad wrote:
Or just use the binary Ubuntu packages and be done.
Sorry, but what does it mean?
That means that Ubuntu (as many other distros) offers you a ready-made, debug symbols enabled version of the library which you can just install and use. As you're struggeling with compiling the library youself, I'd suggest you go for this solution. In Ubuntu, the package you're looking for is called libasound2-dev.
I have not followed the thread, but if you want debugging symbol you need `libasound2-dbg`. (`aptitude search libasound*`)
That doesn't seem to exist, but according to [1], the -dev variant contains the library itself again. Hence I assumed that this is the debug-enabled, non-stripped version of the .so that ships with this package. Admittedly though, I didn't check as I didn't have an Ubuntu box around.
Anyway - if this doesn't work, go the "apt-get build-dep" way that was mentioned by Pavel.
Daniel
[1] http://packages.ubuntu.com/natty/amd64/libasound2-dev/filelist
Dne 2.9.2011 14:46, Daniel Mack napsal(a):
On Fri, Sep 2, 2011 at 12:55 PM, Paul Menzel paulepanter@users.sourceforge.net wrote:
Am Freitag, den 02.09.2011, 12:43 +0200 schrieb Daniel Mack:
On Fri, Sep 2, 2011 at 10:44 AM, Olivier Guillion - Myriad wrote:
Or just use the binary Ubuntu packages and be done.
Sorry, but what does it mean?
That means that Ubuntu (as many other distros) offers you a ready-made, debug symbols enabled version of the library which you can just install and use. As you're struggeling with compiling the library youself, I'd suggest you go for this solution. In Ubuntu, the package you're looking for is called libasound2-dev.
I have not followed the thread, but if you want debugging symbol you need `libasound2-dbg`. (`aptitude search libasound*`)
That doesn't seem to exist, but according to [1], the -dev variant contains the library itself again. Hence I assumed that this is the debug-enabled, non-stripped version of the .so that ships with this package. Admittedly though, I didn't check as I didn't have an Ubuntu box around.
The -dev packages in debian/ubuntu contain headers required for includes in other builds.
Pavel.
participants (6)
-
Daniel Mack
-
Daniel Mack
-
David Henningsson
-
Olivier Guillion - Myriad
-
Paul Menzel
-
Pavel Hofman