13
0

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.
This commit is contained in:
Robin Gareus 2016-05-24 03:27:27 +02:00
parent cd5cd2f8f2
commit 7aa85887da

View File

@ -5919,7 +5919,6 @@ Session::write_one_track (Track& track, framepos_t start, framepos_t end,
}
unblock_processing ();
itt.done = true;
return result;
}