You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
core: prevent lockup on connection destruction (#2412)
When we destroy Mavsdk and clear the list of connections, we likely
end up in a deadlock.
What happens is that:
1. A connection wants to forward a message and is trying to acquire the
connection mutex.
2. At the same time, the connection is being destroyed, so we are
waiting for the connection receive thread to be joinable. While the
connections are being destroyed, we have the connection mutex which
is blocking 1.
The proposed solution is to:
1. Make it less likely by acquiring the connection mutex properly before
checking _connections.size() and not for the individual connections.
2. Check the _should_exit flag before trying to acquire the mutex. I
believe by the time the connections are being cleared, this flag is
set, and hence the deadlock should not happen, fingers crossed.
0 commit comments