From 0b6e68869f34da09e296889b0e1a70c5fbacee55 Mon Sep 17 00:00:00 2001 From: Robin Gareus Date: Sat, 18 May 2024 16:25:04 +0200 Subject: [PATCH] T: fix deadlock when adding tracks For livetrax, ::add_routes_inner calls ::reassign_track_numbers, which in turn calls ::livetrax_queue_auto_connect. This can result in a deadlock: * GUI thread, ::add_routes_inner holds the process-lock and ::livetrax_queue_auto_connect requests the `_auto_connect_queue_lock` * auto-connect thread first takes the `_auto_connect_queue_lock and then requests the process-lock --- libs/ardour/session.cc | 2 ++ 1 file changed, 2 insertions(+) diff --git a/libs/ardour/session.cc b/libs/ardour/session.cc index 604e704cd1..6bfe155edc 100644 --- a/libs/ardour/session.cc +++ b/libs/ardour/session.cc @@ -3681,6 +3681,8 @@ Session::add_routes_inner (RouteList& new_routes, bool input_auto_connect, bool r->enable_direct_outs (); } } + /* do not take `_auto_connect_queue_lock' while holding the process lock */ + lm.release (); reassign_track_numbers (); } }