Bug 1398446

Summary: Crash when pressing record button
Product: [Fedora] Fedora Reporter: Richard W.M. Jones <rjones>
Component: audacityAssignee: David Timms <dtimms>
Status: CLOSED ERRATA QA Contact: Fedora Extras Quality Assurance <extras-qa>
Severity: unspecified Docs Contact:
Priority: unspecified    
Version: 25CC: dtimms, moez.roy
Target Milestone: ---   
Target Release: ---   
Hardware: Unspecified   
OS: Unspecified   
Whiteboard:
Fixed In Version: audacity-2.1.3-2.fc26 audacity-2.1.3-2.fc25 Doc Type: If docs needed, set a value
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2017-04-03 16:07:54 UTC Type: Bug
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:

Description Richard W.M. Jones 2016-11-24 22:02:26 UTC
Description of problem:

Audacity reliably crashes when I press the record button.  See
the exact sequence in "Steps to reproduce" below.

Version-Release number of selected component (if applicable):

audacity-2.1.3-0.7.20161109git53a5c93.fc25.x86_64

How reproducible:

100%

Steps to Reproduce:
1. Press Record icon/button, record for a bit then stop.
2. Press Ctrl A to select everything, then Del to delete it.
3. Repeat from step 1.
4. After 2 or 3 iterations, audacity will segfault when the record
   button is pressed.

Additional info:

I captured a core file, and the stack trace is as follows:

Core was generated by `audacity'.
Program terminated with signal SIGABRT, Aborted.
#0  0x00007f2b2b1d696f in raise () from /lib64/libc.so.6
[Current thread is 1 (Thread 0x7f2b0c384700 (LWP 23297))]

#0  0x00007f2b2b1d696f in raise () at /lib64/libc.so.6
#1  0x00007f2b2b1d856a in abort () at /lib64/libc.so.6
#2  0x00007f2b2b1cedf7 in __assert_fail_base () at /lib64/libc.so.6
#3  0x00007f2b2b1ceea2 in  () at /lib64/libc.so.6
#4  0x00007f2b32757664 in OnExit (data=<optimized out>)
    at src/hostapi/alsa/pa_linux_alsa.c:3382
#5  0x00007f2b3275b7b6 in CallbackThreadFunc (__frame=<synthetic pointer>)
    at /usr/include/pthread.h:611
#6  0x00007f2b3275b7b6 in CallbackThreadFunc (userData=0x557a7eddf7c0)
    at src/hostapi/alsa/pa_linux_alsa.c:4180
#7  0x00007f2b325316fa in start_thread () at /lib64/libpthread.so.0
#8  0x00007f2b2b2a82af in clone () at /lib64/libc.so.6

That's thread 1, but I believe it's really thread 2 which is causing the problem:

Thread 2 (Thread 0x7f2b32d60ac0 (LWP 23224)):
#0  0x00007f2b2cab8dd2 in g_pattern_match () at /lib64/libglib-2.0.so.0
#1  0x00007f2b2e580fca in gtk_rc_styles_match () at /lib64/libgtk-x11-2.0.so.0
#2  0x00007f2b2e5811b6 in gtk_rc_get_style () at /lib64/libgtk-x11-2.0.so.0
#3  0x00007f2b30c2e485 in wxControl::GetDefaultAttributesFromGTKWidget(_GtkWidget*, bool, int) () at /lib64/libwx_gtk2u_core-3.0-gtk2.so.0
#4  0x00007f2b30c2e8ac in wxControl::GetDefaultAttributes() const ()
    at /lib64/libwx_gtk2u_core-3.0-gtk2.so.0
#5  0x00007f2b30dc49db in wxWindowBase::GetFont() const ()
    at /lib64/libwx_gtk2u_core-3.0-gtk2.so.0
#6  0x00007f2b30bd7585 in wxWindow::DoGetTextExtent(wxString const&, int*, int*, int*, int*, wxFont const*) const () at /lib64/libwx_gtk2u_core-3.0-gtk2.so.0
#7  0x0000557a7d8edd72 in ControlToolBar::WidthForStatusBar(wxStatusBar*) (font=0x0, externalLeading=0x0, descent=0x0, y=0x7ffd888444bc, x=0x7ffd888444b8, string=..., this=0x557a7ede5190) at /usr/include/wx-3.0-gtk2/wx/window.h:1152
#8  0x0000557a7d8edd72 in ControlToolBar::WidthForStatusBar(wxStatusBar*) (state=..., __closure=<synthetic pointer>) at toolbars/ControlToolBar.cpp:1234
#9  0x0000557a7d8edd72 in ControlToolBar::WidthForStatusBar(wxStatusBar*) (this=0x557a7ee9a7c0, sb=sb@entry=0x557a7ede5190) at toolbars/ControlToolBar.cpp:1239
#10 0x0000557a7d6ac4b4 in AudacityProject::OnAudioIORate(int) (this=0x557a7ee77ff0, rate=<optimized out>) at Project.cpp:5090
#11 0x0000557a7d5e8908 in AudioIO::StartStream(std::vector<WaveTrack const*, std::allocator<WaveTrack const*> > const&, std::vector<WaveTrack*, std::allocator<WaveTrack*> > const&, double, double, AudioIOStartStreamOptions const&) (this=0x557a7edef970, playbackTracks=std::vector of length 4, capacity 4 = {...}, captureTracks=std::vector of length 2, capacity 2 = {...}, t0=t0@entry=-0.13, t1=t1@entry=1.7976931348623157e+308, options=...) at AudioIO.cpp:2042
#12 0x0000557a7d8f2fac in ControlToolBar::OnRecord(wxCommandEvent&) (this=0x557a7ee9a7c0, evt=...) at toolbars/ControlToolBar.cpp:1088
#13 0x00007f2b3009968e in wxAppConsoleBase::CallEventHandler(wxEvtHandler*, wxEventFunctor&, wxEvent&) const () at /lib64/libwx_baseu-3.0-gtk2.so.0
#14 0x00007f2b3021fcd7 in wxEvtHandler::ProcessEventIfMatchesId(wxEventTableEntryBase const&, wxEvtHandler*, wxEvent&) () at /lib64/libwx_baseu-3.0-gtk2.so.0
#15 0x00007f2b3021fdcb in wxEventHashTable::HandleEvent(wxEvent&, wxEvtHandler*) () at /lib64/libwx_baseu-3.0-gtk2.so.0
#16 0x00007f2b30220188 in wxEvtHandler::TryHereOnly(wxEvent&) ()
    at /lib64/libwx_baseu-3.0-gtk2.so.0
#17 0x00007f2b30220213 in wxEvtHandler::ProcessEventLocally(wxEvent&) ()
    at /lib64/libwx_baseu-3.0-gtk2.so.0
#18 0x00007f2b30220275 in wxEvtHandler::ProcessEvent(wxEvent&) ()
    at /lib64/libwx_baseu-3.0-gtk2.so.0
#19 0x00007f2b30dc27f8 in wxWindowBase::TryAfter(wxEvent&) ()
    at /lib64/libwx_gtk2u_core-3.0-gtk2.so.0
#20 0x0000557a7d92c2b8 in AButton::Click() (this=this@entry=0x557a7ee99780)
    at widgets/AButton.cpp:564
#21 0x0000557a7d92d713 in AButton::OnMouseEvent(wxMouseEvent&) (this=0x557a7ee99780, event=...) at widgets/AButton.cpp:433
#22 0x00007f2b3009968e in wxAppConsoleBase::CallEventHandler(wxEvtHandler*, wxEventFunctor&, wxEvent&) const () at /lib64/libwx_baseu-3.0-gtk2.so.0
#23 0x00007f2b3021fcd7 in wxEvtHandler::ProcessEventIfMatchesId(wxEventTableEntryBase const&, wxEvtHandler*, wxEvent&) () at /lib64/libwx_baseu-3.0-gtk2.so.0
#24 0x00007f2b3021fdcb in wxEventHashTable::HandleEvent(wxEvent&, wxEvtHandler*) () at /lib64/libwx_baseu-3.0-gtk2.so.0
#25 0x00007f2b30220188 in wxEvtHandler::TryHereOnly(wxEvent&) ()
    at /lib64/libwx_baseu-3.0-gtk2.so.0
#26 0x00007f2b30220213 in wxEvtHandler::ProcessEventLocally(wxEvent&) ()
    at /lib64/libwx_baseu-3.0-gtk2.so.0
#27 0x00007f2b30220275 in wxEvtHandler::ProcessEvent(wxEvent&) ()
    at /lib64/libwx_baseu-3.0-gtk2.so.0
#28 0x00007f2b3021ffd7 in wxEvtHandler::SafelyProcessEvent(wxEvent&) ()
    at /lib64/libwx_baseu-3.0-gtk2.so.0
#29 0x00007f2b30bdb63b in gtk_window_button_release_callback ()
    at /lib64/libwx_gtk2u_core-3.0-gtk2.so.0
#30 0x00007f2b2e52cace in _gtk_marshal_BOOLEAN__BOXED ()
    at /lib64/libgtk-x11-2.0.so.0
#31 0x00007f2b2cd803e5 in g_closure_invoke () at /lib64/libgobject-2.0.so.0
#32 0x00007f2b2cd92432 in signal_emit_unlocked_R ()
    at /lib64/libgobject-2.0.so.0
#33 0x00007f2b2cd9ab8f in g_signal_emit_valist () at /lib64/libgobject-2.0.so.0
#34 0x00007f2b2cd9b43f in g_signal_emit () at /lib64/libgobject-2.0.so.0
#35 0x00007f2b2e65d08c in gtk_widget_event_internal ()
    at /lib64/libgtk-x11-2.0.so.0
#36 0x00007f2b2e52ad84 in gtk_propagate_event () at /lib64/libgtk-x11-2.0.so.0
#37 0x00007f2b2e52b14b in gtk_main_do_event () at /lib64/libgtk-x11-2.0.so.0
#38 0x00007f2b2e18848c in gdk_event_dispatch () at /lib64/libgdk-x11-2.0.so.0
#39 0x00007f2b2caac6ba in g_main_context_dispatch () at /lib64/libglib-2.0.so.0
#40 0x00007f2b2caaca70 in g_main_context_iterate.isra ()
    at /lib64/libglib-2.0.so.0
#41 0x00007f2b2caacd92 in g_main_loop_run () at /lib64/libglib-2.0.so.0
#42 0x00007f2b2e52a197 in gtk_main () at /lib64/libgtk-x11-2.0.so.0
#43 0x00007f2b30bad245 in wxGUIEventLoop::DoRun() ()
    at /lib64/libwx_gtk2u_core-3.0-gtk2.so.0
#44 0x00007f2b300db343 in wxEventLoopBase::Run() ()
    at /lib64/libwx_baseu-3.0-gtk2.so.0
#45 0x00007f2b300a0586 in wxAppConsoleBase::MainLoop() ()
    at /lib64/libwx_baseu-3.0-gtk2.so.0
#46 0x00007f2b3012d080 in wxEntry(int&, wchar_t**) ()
    at /lib64/libwx_baseu-3.0-gtk2.so.0
#47 0x0000557a7d567f62 in main(int, char**) (argc=<optimized out>, argv=<optimized out>) at AudacityApp.cpp:702

Comment 1 David Timms 2016-11-30 11:42:51 UTC
Testing this reproducer on F24 package built from the same source/spec, but couldn't get it to fault.

I booted up a Virtual Machine Manager guest with fresh F25 workstation(install from live), and installed Audacity version above. With the first click of record it immediately aborted.

I then upgraded my F24 laptop to F25 and installed Audacity...25.. I wasn't able to get the sequence to invoke a crash in half an hour of repeats. Some record lengths were 3 or 4 minutes, others only 10 seconds.

I'm thinking it might be due to the speed of VM sound passthrough that caused that. Are you using real or VM hardware ?

Which audio system is selected ?

Comment 2 Richard W.M. Jones 2016-11-30 12:53:38 UTC
Baremetal, pulseaudio using an external USB device (Behringer UCA202).

Comment 3 Fedora Update System 2017-03-26 18:53:08 UTC
audacity-2.1.3-2.fc26 has been pushed to the Fedora 26 testing repository. If problems still persist, please make note of it in this bug report.
See https://fedoraproject.org/wiki/QA:Updates_Testing for
instructions on how to install test updates.
You can provide feedback for this update here: https://bodhi.fedoraproject.org/updates/FEDORA-2017-c6511f96f9

Comment 4 Fedora Update System 2017-03-27 02:18:59 UTC
audacity-2.1.3-2.fc24 has been pushed to the Fedora 24 testing repository. If problems still persist, please make note of it in this bug report.
See https://fedoraproject.org/wiki/QA:Updates_Testing for
instructions on how to install test updates.
You can provide feedback for this update here: https://bodhi.fedoraproject.org/updates/FEDORA-2017-ec5e8e0240

Comment 5 Fedora Update System 2017-03-27 03:20:52 UTC
audacity-2.1.3-2.fc25 has been pushed to the Fedora 25 testing repository. If problems still persist, please make note of it in this bug report.
See https://fedoraproject.org/wiki/QA:Updates_Testing for
instructions on how to install test updates.
You can provide feedback for this update here: https://bodhi.fedoraproject.org/updates/FEDORA-2017-a20103b1c8

Comment 6 Fedora Update System 2017-04-03 16:07:54 UTC
audacity-2.1.3-2.fc26 has been pushed to the Fedora 26 stable repository. If problems still persist, please make note of it in this bug report.

Comment 7 Fedora Update System 2017-04-03 22:53:57 UTC
audacity-2.1.3-2.fc25 has been pushed to the Fedora 25 stable repository. If problems still persist, please make note of it in this bug report.