Bug#584605: audacity: Backtrace, as requested...

Dave Witbrodt dawitbro at sbcglobal.net
Sun Jun 13 02:34:22 UTC 2010


Package: audacity
Version: 1.3.12-3
Severity: normal


Sorry for the delay of 5 days on this.  I installed the 'audacity-dbg'
package, and produced the following session with 'gdb':
----------

$ gdb /usr/bin/audacity 
GNU gdb (GDB) 7.1-debian
Copyright (C) 2010 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.  Type "show copying"
and "show warranty" for details.
This GDB was configured as "x86_64-linux-gnu".
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>...
Reading symbols from /usr/bin/audacity...Reading symbols from /usr/lib/debug/usr/bin/audacity...done.
done.
(gdb) run
Starting program: /usr/bin/audacity 
[Thread debugging using libthread_db enabled]
[New Thread 0x7fffe8d39710 (LWP 314)]
Cannot connect to server socket err = No such file or directory
Cannot connect to server socket
jack server is not running or cannot be started
[Thread 0x7fffe8d39710 (LWP 314) exited]
[New Thread 0x7fffe8ba9710 (LWP 315)]

Program received signal SIGSEGV, Segmentation fault.
0x00007ffff37a13d8 in snd_mixer_selem_get_index () from /usr/lib/libasound.so.2
(gdb) bt
#0  0x00007ffff37a13d8 in snd_mixer_selem_get_index () from /usr/lib/libasound.so.2
#1  0x000000000085e917 in open_mixer (dev=0xfd2670, card=<value optimized out>, playback=<value optimized out>) at src/px_linux_alsa.c:214
#2  0x000000000085ec17 in OpenMixer_Linux_ALSA (Px=0xfc6ec0, index=<value optimized out>) at src/px_linux_alsa.c:296
#3  0x000000000085d383 in Px_OpenMixer (pa_stream=0xfc5a90, i=0) at src/px_mixer.c:155
#4  0x000000000051d23f in AudioIO::HandleDeviceChange (this=0xe89c30) at AudioIO.cpp:573
#5  0x000000000051d774 in AudioIO (this=0xe89c30) at AudioIO.cpp:351
#6  0x000000000051d874 in InitAudioIO () at AudioIO.cpp:216
#7  0x0000000000517342 in AudacityApp::OnInit (this=0xddc290) at AudacityApp.cpp:1057
#8  0x00007ffff6d1c632 in wxEntry(int&, wchar_t**) () from /usr/lib/libwx_baseu-2.8.so.0
#9  0x0000000000512f02 in main (argc=1, argv=0x9ea3c3) at AudacityApp.cpp:626
----------

The full backtrace looked like this:
----------

#0  0x00007ffff37a13d8 in snd_mixer_selem_get_index () from /usr/lib/libasound.so.2
No symbol table info available.
#1  0x000000000085e917 in open_mixer (dev=0xfd2670, card=<value optimized out>, playback=<value optimized out>) at src/px_linux_alsa.c:214
        iname = '\000' <repeats 24 times>, "0\000\000\000\000\000\000\000\230~\264\362\377\177\000\000\250~\264\362\377\177\000\000\000\000\000\000\000\000\000\000 \000\000\000\000\000\000\000\263\016\000\000\003\000\000\000P~\264\362\377\177\000\000P\000\000\000\000\000\000\000\030\335\377\377\003\000\000\000 \335\377\377\377\177\000\000\000[\374\000\000\000\000\000@~\264\362\377\177\000\000 ", '\000' <repeats 15 times>, "\001", '\000' <repeats 15 times>, "p\031\206\362\377\177\000\000\000\200\000\000\000\000\000\000\000[\374\000\000\000\000\000\260\016\000\000\000\000\000\000\260\016", '\000' <repeats 14 times>, "9ȅ", '\000' <repeats 17 times>"\200, \210\345@\003\000\000\000\000\000\000\000\220Z\374\000\000\000\000\000\000[\374\000\000\000\000\000\220\335\377\377\377\177\000"
        cnt = 4294967274
        j = 826
        vol = 0x0
        err = <value optimized out>
        i = <value optimized out>
        elem = 0xf867a0
        name = ":0\000\060\000\000\000\000\200j\350\000\000\000\000\000\003\000\000\000\000\000\000\000\202\003\205\000\000\000\000\000\001\000\000\000\000\000\000\000\003", '\000' <repeats 15 times>"\254, \003\000\000\000\000\000\000\001\000\000\000\377\177\000\000@\232Q", '\000' <repeats 13 times>"\200, \336\377\377\377\177\000\000\220]\374\000\000\000\000\000\000\000\000\000\200\210\345@\001\000\000\000\001\000\000\000\001\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000`\000\000\000\000\000\000\000\230~\264\362\377\177\000\000\250~\264\362\377\177\000\000H\263g\256\031Τ?P\000\000\000\000\000\000\000\240\335\377\377\006\000\000\000h~\264\362\377\177\000\000\200\000\000\000\000\000\000\000\360\000\000\000\006\000\000\000\230~\264\362\377\177\000\000\300n\374\000\000\000\000\000Pz\002\000\000\000\000\000\260\265\375\000\000\000\000\000P\000\000\000\000\000\000\000*\254\204\000\000\000\000"
#2  0x000000000085ec17 in OpenMixer_Linux_ALSA (Px=0xfc6ec0, index=<value optimized out>) at src/px_linux_alsa.c:296
        card = 0
#3  0x000000000085d383 in Px_OpenMixer (pa_stream=0xfc5a90, i=0) at src/px_mixer.c:155
        good = <value optimized out>
#4  0x000000000051d23f in AudioIO::HandleDeviceChange (this=0xe89c30) at AudioIO.cpp:573
        recDeviceNum = <value optimized out>
        stream = 0xfc5a90
        playDeviceNum = <value optimized out>
        numrates = <value optimized out>
        highestSampleRate = <value optimized out>
        error = 16541152
        playbackParameters = {device = 26, channelCount = 1, sampleFormat = 1, suggestedLatency = 0.042653061224489794, hostApiSpecificStreamInfo = 0x0}
        captureParameters = {device = 0, channelCount = 1, sampleFormat = 1, suggestedLatency = 0.011609977324263039, hostApiSpecificStreamInfo = 0x0}
        inputVol = 0
#5  0x000000000051d774 in AudioIO (this=0xe89c30) at AudioIO.cpp:351
        err = <value optimized out>
#6  0x000000000051d874 in InitAudioIO () at AudioIO.cpp:216
No locals.
#7  0x0000000000517342 in AudacityApp::OnInit (this=0xddc290) at AudacityApp.cpp:1057
        future1 = {<wxStringBase> = {static npos = 18446744073709551615, m_pchData = 0xdea9e8 L"Master Gain Control"}, <No data fields>}
        lang = {<wxStringBase> = {static npos = 18446744073709551615, m_pchData = 0xe88748 L"en"}, <No data fields>}
        pWnd = <value optimized out>
        appName = {<wxStringBase> = {static npos = 18446744073709551615, m_pchData = 0xdea908 L"audacity"}, <No data fields>}
        future2 = {<wxStringBase> = {static npos = 18446744073709551615, m_pchData = 0xddc718 L"Input Meter"}, <No data fields>}
        home = {<wxStringBase> = {static npos = 18446744073709551615, m_pchData = 0xdec0e8 L"/home/dawitbro"}, <No data fields>}
        pathVar = {<wxStringBase> = {static npos = 18446744073709551615, m_pchData = 0x7ffff6d98678 L""}, <No data fields>}
        tmpFile = {m_volume = {<wxStringBase> = {static npos = 18446744073709551615, m_pchData = 0x7ffff6d98678 L""}, <No data fields>}, m_dirs = {m_nSize = 16, m_nCount = 1, m_pItems = 0xe831c0, 
            m_autoSort = false}, m_name = {<wxStringBase> = {static npos = 18446744073709551615, m_pchData = 0xe82ad8 L"nnI9gJuj"}, <No data fields>}, m_ext = {<wxStringBase> = {
              static npos = 18446744073709551615, m_pchData = 0x7ffff6d98678 L""}, <No data fields>}, m_relative = false, m_hasExt = false}
        project = <value optimized out>
        vendorName = {<wxStringBase> = {static npos = 18446744073709551615, m_pchData = 0xdea978 L"audacity"}, <No data fields>}
        future3 = {<wxStringBase> = {static npos = 18446744073709551615, m_pchData = 0xdeaa98 L"Output Meter"}, <No data fields>}
        tmpDirLoc = {<wxStringBase> = {static npos = 18446744073709551615, m_pchData = 0xe82bd8 L"/tmp"}, <No data fields>}
        didRecoverAnything = <value optimized out>
#8  0x00007ffff6d1c632 in wxEntry(int&, wchar_t**) () from /usr/lib/libwx_baseu-2.8.so.0
No symbol table info available.
#9  0x0000000000512f02 in main (argc=1, argv=0x9ea3c3) at AudacityApp.cpp:626
No locals.
----------


Looking at the values of "j" (826) and "cnt" (4294967274) at the time of the crash,
they look out of the ballpark to me.  This is the loop being iterated (in
lib-src/portmixer/src/px_linux_alsa.c) which hits those values:

         else if (snd_mixer_selem_is_enum_capture(elem)) {
            unsigned int cnt = snd_mixer_selem_get_enum_items(elem);
            unsigned int j;

            for (j = 0; j < cnt; j++) {
               char iname[256];
               snd_mixer_selem_get_enum_item_name(elem, j, sizeof(iname), iname);
               snprintf(name,
                        sizeof(name),
                        "%s:%d",
                        iname,
                        snd_mixer_selem_get_index(elem));

               dev->selems[i].vol = vol;
               dev->selems[i].item = j;
               dev->selems[i].elem = elem;
               dev->selems[i].index = snd_mixer_selem_get_index(elem);
               dev->selems[i].name = strdup(name);
               if (!dev->selems[i].name) {
                  break;
               }
               i++;
            }

The huge value for "cnt" suggests that snd_mixer_selem_get_enum_items() is
returning a negative number here, but upstream has coded this function to store
the return value in an unsigned int (and not bother to check it!).

Looking for some documentation, I found:

    http://www.alsa-project.org/alsa-doc/alsa-lib/group___simple_mixer.html#g23600e756612dca7ea8329994590fa19

	int  snd_mixer_selem_get_enum_items  (snd_mixer_elem_t  *elem)	

            Return the number of enumerated items of the given mixer simple element.

	Parameters:
	    elem    Mixer simple element handle

	Returns:
	    the number of enumerated items, otherwise a negative error code 

Oops!  This thing can return negative numbers, but upstream thought it wouldn't
happen.


What I would really like (from upstream? from a Debian patch?) is for 'audacity'
to be able to run long enough for me to be able to configure it properly.  On my
system, ALSA picks up 3 different sound devices when the kernel boots, and the
proper "card" to use for output is not the default card #0:

    $ dmesg | grep -i -A 3 alsa
    ALSA device list:
      #0: E-mu 0404b PCI [MAEM8852] (rev.0, serial:0x40021102) at 0xe800, irq 23
      #1: HDA ATI SB at 0xfe7f0000 irq 16
      #2: HDA ATI HDMI at 0xfe8ec000 irq 32

The first device is an inexpensive DSP card I use to plug in guitars; the second
is the sound chipset on my motherboard (which would otherwise have been the
default) and which I would like to use for sound output (/etc/asound.conf is
configured for that purpose); and the third device the the HDMI outputs on my
video card.

As I mentioned when opening this bug report:  the last time I used 'audacity'
it worked fine.  That was probably in January, unfortunately, and there have
probably been several upgrades in versions of 'audacity' since then.  I cannot
say which upgrade version first showed this regression; I cannot even say
which was the last working version!  Sorry about that.


If I can provide more information, test any patches, or be of help in some
other way just let me know.


Thanks,
Dave W.

PS:  Sid changes frequently, and I upgraded from ALSA 1.0.22 to 1.0.23 (no
change in 'audacity' regression behavior) to allow some other software to be
brought in, so I am allowing 'reportbug' to list the full set of system
information again.  It's probably irrelevant, so sorry for the spam, but
Just In Case....


-- System Information:
Debian Release: squeeze/sid
  APT prefers unstable
  APT policy: (990, 'unstable'), (350, 'experimental')
Architecture: amd64 (x86_64)

Kernel: Linux 2.6.34+drt100429.0818fe9.desktop.kms (SMP w/4 CPU cores; PREEMPT)
Locale: LANG=en_US.UTF-8, LC_CTYPE=en_US.UTF-8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/dash

Versions of packages audacity depends on:
ii  audacity-data            1.3.12-3        A fast, cross-platform audio edito
ii  libasound2               1.0.23-1        shared library for ALSA applicatio
ii  libc6                    2.11.1-3        Embedded GNU C Library: Shared lib
ii  libexpat1                2.0.1-7         XML parsing C library - runtime li
ii  libflac++6               1.2.1-2+b1      Free Lossless Audio Codec - C++ ru
ii  libflac8                 1.2.1-2+b1      Free Lossless Audio Codec - runtim
ii  libgcc1                  1:4.4.4-5       GCC support library
ii  libglib2.0-0             2.25.8-1        The GLib library of C routines
ii  libgtk2.0-0              2.21.2-1+xidfix The GTK+ graphical user interface 
ii  libid3tag0               0.15.1b-10      ID3 tag reading library from the M
ii  libjack0                 1.9.5~dfsg-13   JACK Audio Connection Kit (librari
ii  libmad0                  0.15.1b-5       MPEG audio decoder library
ii  libogg0                  1.2.0~dfsg-1    Ogg bitstream library
ii  libsamplerate0           0.1.7-3         Audio sample rate conversion libra
ii  libsndfile1              1.0.21-2        Library for reading/writing audio 
ii  libsoundtouch1c2         1.3.1-2         sound stretching library
ii  libstdc++6               4.4.4-5         The GNU Standard C++ Library v3
ii  libtwolame0              0.3.12-1        MPEG Audio Layer 2 encoding librar
ii  libvamp-hostsdk3         2.1-1           helper library for Vamp hosts writ
ii  libvorbis0a              1.3.1-1         The Vorbis General Audio Compressi
ii  libvorbisenc2            1.3.1-1         The Vorbis General Audio Compressi
ii  libvorbisfile3           1.3.1-1         The Vorbis General Audio Compressi
ii  libwxbase2.8-0           2.8.10.1-3      wxBase library (runtime) - non-GUI
ii  libwxgtk2.8-0            2.8.10.1-3      wxWidgets Cross-platform C++ GUI t

Versions of packages audacity recommends:
ii  libavcodec52       5:0.6~svn20100603-0.0 library to encode decode multimedi
ii  libavformat52      5:0.6~svn20100603-0.0 ffmpeg file format library

Versions of packages audacity suggests:
pn  ladspa-plugin                 <none>     (no description available)
ii  libmp3lame0                   3.98.4-0.0 LAME Ain't an MP3 Encoder

-- no debconf information





More information about the pkg-multimedia-maintainers mailing list