View Issue Details

IDProjectCategoryView StatusLast Update
0007004ardourbugspublic2016-09-20 15:57
Reporternstewart Assigned Topaul  
PriorityhighSeveritycrashReproducibilityalways
Status closedResolutionfixed 
Platformx86OSUbuntu StudioOS Version16.04
Product Version5.X git (version in description) 
Summary0007004: Crash on exit if Jack has been stopped
DescriptionIf the user attempts to exit Ardour while the Jack server has been stopped, ardour will crash

git version: cbd310ef650c88e61d65defdfc3e785aa9dc7326

Steps To Reproduce1. Start Jack
2. Start Ardour
3. Stop Jack
4. Exit Ardour.
Additional InformationJACK HALTED: JACK server has been closed
Pool: 'AudioEngine 4' max: 2 / 512
Pool: 'autoconnect' max: 0 / 1024
Pool: 'Mackie' max: 0 / 128
Butler drops pool trash
Pool: 'butler events' max: 0 / 4096
Pool: 'midiUI' max: 0 / 128
Attempt to unlock mutex that was not locked

#0 0x00007f9b888ad418 in __GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:54
0000001 0x00007f9b888af01a in __GI_abort () at abort.c:89
#2 0x00007f9b8ceb823d in ?? () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#3 0x00007f9b90943b33 in Glib::Threads::Mutex::Lock::release (this=0x7ffe8c5231c0) at /usr/include/glibmm-2.4/glibmm/threads.h:688
0000004 0x00007f9b8f3b7263 in ARDOUR::AudioEngine::stop (this=0x3a65ee0, for_latency=false) at ../libs/ardour/audioengine.cc:909
0000005 0x00000000013488f4 in ARDOUR_UI::finish (this=0x3b0d590) at ../gtk2_ardour/ardour_ui.cc:1299
#6 0x000000000139db26 in sigc::bound_mem_functor0<void, ARDOUR_UI>::operator() (this=0x686bf80) at /usr/include/sigc++-2.0/sigc++/functors/mem_fun.h:1787
#7 0x0000000001392f3e in sigc::adaptor_functor<sigc::bound_mem_functor0<void, ARDOUR_UI> >::operator() (this=0x686bf78) at /usr/include/sigc++-2.0/sigc++/adaptors/adaptor_trait.h:256
0000008 0x00000000013e641c in sigc::retype_return_functor<void, sigc::bound_mem_functor0<void, ARDOUR_UI> >::operator() (this=0x686bf70) at /usr/include/sigc++-2.0/sigc++/adaptors/retype_return.h:269
0000009 0x00000000013e4731 in sigc::internal::slot_call0<sigc::retype_return_functor<void, sigc::bound_mem_functor0<void, ARDOUR_UI> >, void>::call_it (rep=0x686bf40) at /usr/include/sigc++-2.0/sigc++/functors/slot.h:108
0000010 0x00007f9b8d3e61f8 in Glib::SignalProxyNormal::slot0_void_callback(_GObject*, void*) () from /usr/lib/x86_64-linux-gnu/libglibmm-2.4.so.1
TagsNo tags attached.

Activities

nstewart

2016-09-07 00:19

reporter  

0001-Fixes-7004-Ardour-crash-on-Just-Quit-when-AudioEngin.patch (897 bytes)   
From 16aa4fd1a7420a1bd9fcaacd04163afb68095c76 Mon Sep 17 00:00:00 2001
From: Nathan Stewart <therealnathanstewart@gmail.com>
Date: Tue, 6 Sep 2016 20:14:25 -0400
Subject: [PATCH] Fixes 7004 - Ardour crash on Just Quit when AudioEngine is
 stopped. AudioEngine::stop() if running() is not true and _backend->stop() is
 true, mutex was being unlocked without being locked.

---
 libs/ardour/audioengine.cc | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/libs/ardour/audioengine.cc b/libs/ardour/audioengine.cc
index 30c2113..2ca80e3 100644
--- a/libs/ardour/audioengine.cc
+++ b/libs/ardour/audioengine.cc
@@ -906,7 +906,9 @@ AudioEngine::stop (bool for_latency)
 		stop_engine = false;
 	} else {
 		if (_backend->stop ()) {
-			pl.release ();
+			if (pl.locked ()) { 
+                            pl.release ();
+                        }
 			return -1;
 		}
 	}
-- 
2.7.4

nstewart

2016-09-11 01:23

reporter   ~0018594

AudioEngine::stop (), if running() is not true, mutex pl will not be locked. if _backend->stop() is true, then mutex pl will be unlocked even though it was never locked. This appears to happen when the user 'Just Quit's while the audio engine is stopped.

paul

2016-09-14 00:27

administrator   ~0018633

applied as 3b7cb8275a4

nstewart

2016-09-20 15:57

reporter   ~0018706

Fixed in git 3b7cb82

Issue History

Date Modified Username Field Change
2016-09-03 03:34 nstewart New Issue
2016-09-07 00:19 nstewart File Added: 0001-Fixes-7004-Ardour-crash-on-Just-Quit-when-AudioEngin.patch
2016-09-11 01:23 nstewart Note Added: 0018594
2016-09-14 00:27 paul Note Added: 0018633
2016-09-14 00:27 paul Status new => resolved
2016-09-14 00:27 paul Resolution open => fixed
2016-09-14 00:27 paul Assigned To => paul
2016-09-20 15:57 nstewart Note Added: 0018706
2016-09-20 15:57 nstewart Status resolved => closed