Bug 520917 - [abrt] crash detected in audacity-1.3.8-0.3.betamp3.fc12
Summary: [abrt] crash detected in audacity-1.3.8-0.3.betamp3.fc12
Keywords:
Status: CLOSED RAWHIDE
Alias: None
Product: Fedora
Classification: Fedora
Component: audacity
Version: rawhide
Hardware: All
OS: Linux
low
medium
Target Milestone: ---
Assignee: Gérard Milmeister
QA Contact: Fedora Extras Quality Assurance
URL:
Whiteboard: abrt_hash:4810cfca4d9e8cc9ace31b075be...
Depends On:
Blocks:
TreeView+ depends on / blocked
 
Reported: 2009-09-02 20:31 UTC by Tom London
Modified: 2009-09-23 18:09 UTC (History)
3 users (show)

Fixed In Version:
Doc Type: Bug Fix
Doc Text:
Clone Of:
Environment:
Last Closed: 2009-09-23 18:09:00 UTC


Attachments (Terms of Use)

Description Tom London 2009-09-02 20:31:29 UTC
abrt detected a crash.


How to reproduce
-----
1.
2.
3.


Comment
-----
I imported an mp3 file (locally built version of audacity built with "--with mp3"), added a label track, and then tried to delete the label track.

Additional information
======

cmdline
-----
audacity 


component
-----
audacity


executable
-----
/usr/bin/audacity


kernel
-----
2.6.31-0.190.rc8.fc12.x86_64


package
-----
audacity-1.3.8-0.3.betamp3.fc12


reason
-----
Process was terminated by signal 11

Comment 1 Michael Schwendt 2009-09-03 08:25:18 UTC
http://fedoraproject.org/wiki/StackTraces

Please reproduce in a proper environment to get a good backtrace. No backtrace at all means that we first would need to reproduce a problem, which may be very difficult.

Btw, if "Abort" produces such useless bug reports, report a bug about Abort.

Comment 2 Tom London 2009-09-03 13:56:47 UTC
Sorry.  I thought the report looked pretty empty, but I figured the "real info" was posted somewhere....

I filed BZ against abrt: https://bugzilla.redhat.com/show_bug.cgi?id=521074

Appears there are "check boxes" that were not selected by default that causes the useful information to be sent to BZ.  Should be fixed in next release.

I believe I've located the information in /var/cache/abrt. I will attempt to cut/paste.

I will also try to create anew when running gdb/etc.  Please let me know if anything other than just the backtrace would be useful.......

Here is the backtrace.  

Corefile is 73MB. Let me know if you want me to attach it.....

[root@tlondon ccpp-1251923073-11883]# cat backtrace 
[New Thread 11888]
[New Thread 11890]
Core was generated by `audacity'.
Program terminated with signal 11, Segmentation fault.
#0  TrackListIterator::Next (this=0x7fff8418f130, SkipLinked=false)
    at Track.cpp:291
291	      return cur->t;

Thread 3 (Thread 11890):
#0  0x00007f3ee57e9b4d in nanosleep () from /lib64/libpthread.so.0
No symbol table info available.
#1  0x00007f3ee7f20b9c in wxMicroSleep (microseconds=<value optimized out>)
    at src/unix/utilsunx.cpp:191
        tmReq = {tv_sec = 0, tv_nsec = 10000000}
#2  0x00000000004f0c35 in AudioThread::Entry (this=0x2694a40)
    at AudioIO.cpp:1647
No locals.
#3  0x00007f3ee7f1b861 in wxThreadInternal::PthreadStart (thread=0x2694a40)
    at src/unix/threadpsx.cpp:766
        pthread = 0x2695c30
        rc = <value optimized out>
        dontRunAtAll = false
#4  0x00007f3ee57e196a in start_thread () from /lib64/libpthread.so.0
No symbol table info available.
#5  0x00007f3ee4b8739d in clone () from /lib64/libc.so.6
No symbol table info available.
#6  0x0000000000000000 in ?? ()
No symbol table info available.

Thread 2 (Thread 11888):
#0  0x00007f3ee57e63cc in pthread_cond_wait@@GLIBC_2.3.2 ()
   from /lib64/libpthread.so.0
No symbol table info available.
#1  0x00007f3ee5a013bb in mb_thread_func (arg=<value optimized out>)
    at messagebuffer.c:70
No locals.
#2  0x00007f3ee57e196a in start_thread () from /lib64/libpthread.so.0
No symbol table info available.
#3  0x00007f3ee4b8739d in clone () from /lib64/libc.so.6
No symbol table info available.
#4  0x0000000000000000 in ?? ()
No symbol table info available.

Thread 1 (Thread 11883):
#0  TrackListIterator::Next (this=0x7fff8418f130, SkipLinked=false)
    at Track.cpp:291
No locals.
#1  0x000000000053ea76 in AudacityProject::GetUpdateFlags (this=0x26f3de0)
    at Menus.cpp:1399
        flags = 4194397
        iter = {_vptr.TrackListIterator = 0x91fb50, l = 0x277bf20, 
          cur = 0xa7b929f}
        t = <value optimized out>
#2  0x0000000000540068 in AudacityProject::UpdateMenus (this=0x26f3de0)
    at Menus.cpp:1507
        flags = <value optimized out>
        flags2 = <value optimized out>
#3  0x0000000000565280 in AudacityProject::OnUpdateUI (this=0x7fff8418f130, 
    event=...) at Project.cpp:1649
No locals.
#4  0x00007f3ee7f1c030 in wxEvtHandler::ProcessEventIfMatches (
    entry=<value optimized out>, handler=0x0, event=...)
    at src/common/event.cpp:1231
        tableId1 = <value optimized out>
        tableId2 = <value optimized out>
#5  0x00007f3ee7f1cff4 in wxEventHashTable::HandleEvent (
    this=<value optimized out>, event=..., self=0x26f3de0)
    at src/common/event.cpp:906
        n = 0
        count = 1
        eventType = <value optimized out>
        eTTnode = 0x291d6f0
#6  0x00007f3ee7f1d0d7 in wxEvtHandler::ProcessEvent (this=0x26f3de0, 
    event=...) at src/common/event.cpp:1293
No locals.
#7  0x00007f3ee88bd529 in wxWindowBase::TryParent (this=<value optimized out>, 
    event=...) at src/common/wincmn.cpp:2661
        parent = 0x2a1d8a0
#8  0x00007f3ee88bd529 in wxWindowBase::TryParent (this=<value optimized out>, 
    event=...) at src/common/wincmn.cpp:2661
        parent = 0x2a1d8a0
#9  0x00007f3ee88bd529 in wxWindowBase::TryParent (this=<value optimized out>, 
    event=...) at src/common/wincmn.cpp:2661
        parent = 0x2a1d8a0
#10 0x00007f3ee88bfd5d in wxWindowBase::UpdateWindowUI (this=0x2867af0, 
    flags=2) at src/common/wincmn.cpp:2192
        event = {<wxCommandEvent> = {<wxEvent> = {<wxObject> = {
                _vptr.wxObject = 0x7f3ee8b9b650, static ms_classInfo = {
                  m_className = 0x7f3ee7f3d8a8 L"wxObject", m_objectSize = 16, 
                  m_objectConstructor = 0, m_baseInfo1 = 0x0, 
                  m_baseInfo2 = 0x0, static sm_first = 0x0, 
                  m_next = 0x7f3ee8191420, static sm_classTable = 0x23f7690}, 
                m_refData = 0x0}, m_eventObject = 0x2867af0, 
              m_eventType = 10190, m_timeStamp = 0, m_id = 1, 
              m_callbackUserData = 0x0, m_propagationLevel = 2147483644, 
              m_skipped = false, m_isCommandEvent = true, 
              static ms_classInfo = {m_className = 0x0, m_objectSize = 0, 
                m_objectConstructor = 0, m_baseInfo1 = 0x0, m_baseInfo2 = 0x0, 
                static sm_first = 0x0, m_next = 0x0, 
                static sm_classTable = 0x23f7690}}, m_commandString = {
              m_evt = 0x7fff8418f240}, m_cmdString = {<wxStringBase> = {
                static npos = 18446744073709551615, 
                m_pchData = 0x7f3ee7f3ea38 L""}, <No data fields>}, 
            m_commandInt = 0, m_extraLong = 0, m_clientData = 0x0, 
            m_clientObject = 0x0, static ms_classInfo = {
              m_className = 0x7f3ee89065d0 L"wxCommandEvent", 
              m_objectSize = 112, 
              m_objectConstructor = 0x7f3ee878e6c0 <wxCommandEvent::wxCreateObject()>, m_baseInfo1 = 0xcb7300, m_baseInfo2 = 0x0, static sm_first = 0x0, 
              m_next = 0x7f3ee8bf02e0, static sm_classTable = 0x23f7690}}, 
          m_checked = false, m_enabled = false, m_shown = false, 
          m_setEnabled = false, m_setShown = false, m_setText = false, 
          m_setChecked = false, m_text = {<wxStringBase> = {
              static npos = 18446744073709551615, 
              m_pchData = 0x7f3ee7f3ea38 L""}, <No data fields>}, 
          static sm_lastUpdate = {m_ll = 0}, static sm_updateInterval = 0, 
          static sm_updateMode = wxUPDATE_UI_PROCESS_ALL, 
          static ms_classInfo = {
            m_className = 0x7f3ee8906be8 L"wxUpdateUIEvent", 
            m_objectSize = 128, 
            m_objectConstructor = 0x7f3ee878ec10 <wxUpdateUIEvent::wxCreateObject()>, m_baseInfo1 = 0x7f3ee8bf0320, m_baseInfo2 = 0x0, static sm_first = 0x0, 
            m_next = 0x7f3ee8bf0920, static sm_classTable = 0x23f7690}}
#11 0x00007f3ee87c7121 in wxWindow::OnInternalIdle (this=0x2867af0)
    at src/gtk/window.cpp:2912
        cursor = {<wxObject> = {_vptr.wxObject = 0x7f3ee8b9d930, 
            static ms_classInfo = {m_className = 0x7f3ee7f3d8a8 L"wxObject", 
              m_objectSize = 16, m_objectConstructor = 0, m_baseInfo1 = 0x0, 
              m_baseInfo2 = 0x0, static sm_first = 0x0, 
              m_next = 0x7f3ee8191420, static sm_classTable = 0x23f7690}, 
            m_refData = 0x256b460}, static ms_classInfo = {
            m_className = 0x7f3ee8908b50 L"wxCursor", m_objectSize = 16, 
            m_objectConstructor = 0x7f3ee87a4520 <wxCursor::wxCreateObject()>, 
            m_baseInfo1 = 0x7f3ee8191340, m_baseInfo2 = 0x0, 
            static sm_first = 0x0, m_next = 0x7f3ee8bf1340, 
            static sm_classTable = 0x23f7690}}
#12 0x00007f3ee883d57d in wxAppBase::SendIdleEvents (this=0x24e8870, win=0x0, 
    event=...) at src/common/appcmn.cpp:471
        needMore = <value optimized out>
#13 0x00007f3ee883d5b4 in wxAppBase::SendIdleEvents (this=0x24e8870, 
    win=<value optimized out>, event=...) at src/common/appcmn.cpp:485
        needMore = false
#14 0x00007f3ee883d5b4 in wxAppBase::SendIdleEvents (this=0x24e8870, 
    win=<value optimized out>, event=...) at src/common/appcmn.cpp:485
        needMore = false
#15 0x00007f3ee883d5b4 in wxAppBase::SendIdleEvents (this=0x24e8870, 
    win=<value optimized out>, event=...) at src/common/appcmn.cpp:485
        needMore = false
#16 0x00007f3ee883d814 in wxAppBase::ProcessIdle (this=0x24e8870)
    at src/common/appcmn.cpp:443
        event = {<wxEvent> = {<wxObject> = {_vptr.wxObject = 0x7f3ee8b9bcd0, 
              static ms_classInfo = {m_className = 0x7f3ee7f3d8a8 L"wxObject", 
                m_objectSize = 16, m_objectConstructor = 0, m_baseInfo1 = 0x0, 
                m_baseInfo2 = 0x0, static sm_first = 0x0, 
                m_next = 0x7f3ee8191420, static sm_classTable = 0x23f7690}, 
              m_refData = 0x0}, m_eventObject = 0x2865580, 
            m_eventType = 10001, m_timeStamp = 0, m_id = 0, 
            m_callbackUserData = 0x0, m_propagationLevel = 0, 
            m_skipped = false, m_isCommandEvent = false, 
            static ms_classInfo = {m_className = 0x0, m_objectSize = 0, 
              m_objectConstructor = 0, m_baseInfo1 = 0x0, m_baseInfo2 = 0x0, 
              static sm_first = 0x0, m_next = 0x0, 
              static sm_classTable = 0x23f7690}}, m_requestMore = false, 
          static sm_idleMode = wxIDLE_PROCESS_ALL, static ms_classInfo = {
            m_className = 0x7f3ee89065a0 L"wxIdleEvent", m_objectSize = 64, 
            m_objectConstructor = 0x7f3ee878f5e0 <wxIdleEvent::wxCreateObject()>, m_baseInfo1 = 0xcb7300, m_baseInfo2 = 0x0, static sm_first = 0x0, 
            m_next = 0x7f3ee8bf0e80, static sm_classTable = 0x23f7690}}
        needMore = false
#17 0x00007f3ee879d7d3 in wxapp_idle_callback () at src/gtk/app.cpp:206
        idleID_save = 48720
        moreIdles = true
#18 0x00007f3ee3f4d19e in g_main_dispatch (context=<value optimized out>)
    at gmain.c:1960
        dispatch = 0x7f3ee3f4b360 <g_idle_dispatch>
        user_data = 0x0
        callback = 0x7f3ee879d730 <wxapp_idle_callback(gpointer)>
        cb_funcs = 0x7f3ee41f8950
        cb_data = 0x30bbf30
        current_source_link = {data = 0x30815b0, next = 0x0}
        source = 0x30815b0
        current = 0x24d05b0
        i = 0
#19 IA__g_main_context_dispatch (context=<value optimized out>) at gmain.c:2513
No locals.
#20 0x00007f3ee3f50b88 in g_main_context_iterate (context=0x247e880, 
    block=<value optimized out>, dispatch=<value optimized out>, 
    self=<value optimized out>) at gmain.c:2591
        max_priority = 300
        timeout = 0
        some_ready = 1
        nfds = 10
        allocated_nfds = -394671520
        fds = <value optimized out>
        __PRETTY_FUNCTION__ = "g_main_context_iterate"
#21 0x00007f3ee3f50fd5 in IA__g_main_loop_run (loop=0x2a2b260) at gmain.c:2799
        self = 0x243ff50
        __PRETTY_FUNCTION__ = "IA__g_main_loop_run"
#22 0x00007f3ee458ba77 in IA__gtk_main () at gtkmain.c:1205
        tmp_list = 0x2a2d110
        functions = 0x0
        init = 0x7f3ee8bf72a8
        loop = <value optimized out>
#23 0x00007f3ee87b4a18 in wxEventLoop::Run (this=0x2a2d110)
    at src/gtk/evtloop.cpp:76
        exitcode = <value optimized out>
#24 0x00007f3ee883d64b in wxAppBase::MainLoop (this=0x24e8870)
    at src/common/appcmn.cpp:312
        mainLoop = {<wxEventLoopPtr> = {m_ptr = 0x2a2d110}, m_pp = 0x24e88e8, 
          m_pOld = 0x0}
#25 0x00007f3ee7ec1abc in wxEntry (argc=<value optimized out>, 
    argv=<value optimized out>) at src/common/init.cpp:460
No locals.
#26 0x00000000004eb022 in main (argc=1, argv=0x0) at AudacityApp.cpp:564
No locals.
[root@tlondon ccpp-1251923073-11883]#

Comment 3 Michael Schwendt 2009-09-03 17:11:23 UTC
Reproducible with 1.3.9-beta.

Importing something is not necessary. It's enough to create 3-4 label tracks and delete them with the 'X' button in the track panel.

In short, I see a race-condition between what is executed by the wxWindows UI idle-loop and the Label Track close event. As the result, AudacityProject::GetUpdateFlags  works with an invalidated track list iterator.

Comment 5 Michael Schwendt 2009-09-08 08:23:56 UTC
Here's a good analysis of the situation:

http://sourceforge.net/mailarchive/message.php?msg_name=4AA4305E.6000901%40audacityteam.org

Comment 6 Michael Schwendt 2009-09-12 14:22:07 UTC
audacity-1.3.9-0.2.beta.fc12 contains an experimental work-around for this:
http://koji.fedoraproject.org/koji/taskinfo?taskID=1673174

Comment 7 Tom London 2009-09-23 17:41:52 UTC
This seems working for me.

Is this "really fixed"?  Close?

Comment 8 Michael Schwendt 2009-09-23 18:09:00 UTC
If you cannot reproduce the problem anymore either, the fix seems to be good enough.


Note You need to log in before you can comment on or make changes to this bug.