From 87f1c66ba1d33903662d44dabed032272827e7fd Mon Sep 17 00:00:00 2001 From: GZharun Date: Wed, 25 Feb 2015 03:02:28 +0200 Subject: [PATCH] [Summary] Fixed race condition: "should_do_transport_work" must not be dropped to 0 outside, it's illegal. It may cause "should_do_transport_work" go below 0 and make butler to round for a very-very long time (hang and possible lock of other threads) before stop() call returns. _butler->stop () is synchronous, so its safe to wait in this call for butler to finish it's work. [Reviewed by] PDavis --- libs/ardour/session_transport.cc | 2 -- 1 file changed, 2 deletions(-) diff --git a/libs/ardour/session_transport.cc b/libs/ardour/session_transport.cc index d5adbc5b45..4e93565f11 100644 --- a/libs/ardour/session_transport.cc +++ b/libs/ardour/session_transport.cc @@ -1789,8 +1789,6 @@ Session::engine_halted () */ if (_butler) { - g_atomic_int_set (&_butler->should_do_transport_work, 0); - set_post_transport_work (PostTransportWork (0)); _butler->stop (); }