13
0
livetrax/libs
Robin Gareus 634d325e5d
Prevent deadlock when disconnecting
The backend holds `_port_callback_mutex` while disconnecting ports.
In some cases disconnecting a port can drop the last reference
resulting in a port-deletion from the connection handler.
This in turn will eventually aquire the `_port_callback_mutex`
and deadlock.

This is now circumvented by using atomic operations instead of
taking a lock to set the `_port_change_flag`.

The flag is also used to trigger a latency update in some cases,
atomic is preferable to taking a lock to set this flag.

--

Full bt: https://paste.debian.net/1184056/
Short:

#1  in pthread_mutex_lock ()
#2  in ARDOUR::PortEngineSharedImpl::port_connect_add_remove_callback()
#3  in ARDOUR::BackendPort::~BackendPort()
#4  in ARDOUR::DummyPort::~DummyPort()
#6  in ARDOUR::DummyAudioPort::~DummyAudioPort()
#7  in boost::checked_delete<ARDOUR::BackendPort>(ARDOUR::BackendPort*)
#12 in boost::shared_ptr<ARDOUR::ProtoPort>::reset()
#13 in ARDOUR::Port::drop()
#14 in ARDOUR::Port::~Port()
#15 in ARDOUR::AudioPort::~AudioPort()
#17 in ARDOUR::AudioEngine::add_pending_port_deletion(ARDOUR::Port*)
#20 in boost::detail::sp_counted_base::release()
#37 in ARDOUR::PortManager::connect_callback() at libs/ardour/port_manager.cc:788
#38 in ARDOUR::DummyAudioBackend::main_process_thread() at libs/backends/dummy/dummy_audiobackend.cc:1018
2021-02-04 21:06:20 +01:00
..
appleutility
ardour Prevent deadlock when disconnecting 2021-02-04 21:06:20 +01:00
ardouralsautil Fix C function prototypes 2020-12-01 12:08:09 +01:00
audiographer Use unique target names for unit-test build rules 2020-10-16 02:31:39 +02:00
backends Prevent deadlock when disconnecting 2021-02-04 21:06:20 +01:00
canvas canvas/ruler: provide option for a second font to be used for "major" marks 2021-01-03 16:50:18 -07:00
clearlooks-newer
evoral ARM 32bit enum alignment (used in MIDIBuffer) 2020-09-28 01:21:43 +02:00
fluidsynth Tweak fluidsynth performance on ARM CPUs 2020-12-12 22:03:05 +01:00
fst Fix typo in vst3-scanner --help text 2021-01-23 23:43:14 +01:00
gtkmm2ext Add/remove source(s) in our MSVC project (gtkmm2ext) 2021-01-28 10:50:27 +00:00
hidapi
libltc
lua Allow Lua bindings up to 11 args 2021-01-08 22:50:37 +01:00
midi++2 Transmitter::Debug implementation 1/2 2020-10-13 21:58:26 +02:00
panners Micro-optimization: pre-calculate pan-law 2021-01-18 16:14:16 +01:00
pbd Some preliminary changes needed to support building with VS2019 2021-01-30 13:55:25 +00:00
plugins Remove duplicate rdfs label in a-comp 2021-01-14 18:35:07 +01:00
ptformat ptformat: Update to upstream 232ba25 2021-01-17 13:19:54 +11:00
qm-dsp
surfaces Update Ctrl-surface MIDI port list when ports change 2021-02-04 06:19:37 +01:00
temporal Fix normalization in Temporal::Beats for times between -1 and 0 beats 2020-11-18 13:40:31 -07:00
vamp-plugins
vamp-pyin
vfork
vst3 VST3: Add PreSonus Plug-In Extensions 2020-10-08 15:36:35 +02:00
waveview Do not show blank waveforms in case height is < 1px 2020-12-22 13:27:46 +01:00
widgets Fix fader font-size 2021-02-03 20:14:22 +01:00
zita-convolver
zita-resampler