From 7aa85887da16aca9d54a693bbaf6353a5b3fa99f Mon Sep 17 00:00:00 2001 From: Robin Gareus Date: Tue, 24 May 2016 03:27:27 +0200 Subject: [PATCH] more inter-thread progress fixes; slight change of semantics: Background thread now *must* set "done" as last step. (they already do since various error conditions don't result in "done") This fixes a race: background thread Session::write_one_track() sets "done" to true. Editor::freeze_route () continues, sets current_interthread_info to NULL. thread continues and tries to set current_interthread_info.done before terminating -> Crash. This also ensures that singleton threads created with "pthread_create_and_store" remain unique. --- libs/ardour/session.cc | 1 - 1 file changed, 1 deletion(-) diff --git a/libs/ardour/session.cc b/libs/ardour/session.cc index 98d9d1dfd9..4097335f5b 100644 --- a/libs/ardour/session.cc +++ b/libs/ardour/session.cc @@ -5919,7 +5919,6 @@ Session::write_one_track (Track& track, framepos_t start, framepos_t end, } unblock_processing (); - itt.done = true; return result; }