ardour/libs
Robin Gareus b4cbee724e
Fix a rare EventList race-condition/crash
The GUI thread may modify fade-in/out while the butler-thread
reads audio.

e.g. select a Range and click delete.
---
Thread 0:: Dispatch queue: com.apple.main-thread
0   libsystem_pthread.dylib           0x00007fffd45924fc pthread_mutex_lock + 0
1   libglib-2.0.0.dylib               0x00000001085a9d2a g_mutex_lock + 26
2   libevoral.dylib                   0x0000000107fd0a49 PBD::Signal0<void, PBD::OptionalLastValue<void> >::operator()() + 57
3   libevoral.dylib                   0x0000000107fd486d Evoral::ControlList::clear() + 253
4   libardour.dylib                   0x00000001072ef9a5 ARDOUR::AudioRegion::set_fade_out(ARDOUR::FadeShape, long long) + 309
5   libardour.dylib                   0x00000001072f19ea ARDOUR::AudioRegion::recompute_at_end() + 122
6   libpbd.dylib                      0x00000001082993ff PBD::Stateful::resume_property_changes() + 191
7   libardour.dylib                   0x00000001076476af ARDOUR::Playlist::cut(long long, long long, bool) + 575
8   libardour.dylib                   0x0000000107646b5b ARDOUR::Playlist::cut_copy(boost::shared_ptr<ARDOUR::Playlist> (ARDOUR::Playlist::*)(long long, long long, bool), std::__1::list<ARDOUR::AudioRange, std::__1::allocator<ARDOUR::AudioRange> >&, bool) + 187
9   libardour.dylib                   0x0000000107647461 ARDOUR::Playlist::cut(std::__1::list<ARDOUR::AudioRange, std::__1::allocator<ARDOUR::AudioRange> >&, bool) + 33
10  Ardour.bin                        0x00000001065f0fa0 RouteTimeAxisView::cut_copy_clear(Selection&, Editing::CutCopyOp) + 592
11  Ardour.bin                        0x0000000106118a94 Editor::cut_copy_ranges(Editing::CutCopyOp) + 164
12  Ardour.bin                        0x0000000106116053 Editor::cut_copy(Editing::CutCopyOp) + 1587


Thread 20 Crashed:
0   libardour.dylib                   0x00000001072f4b19 ARDOUR::AudioRegion::body_range() const + 89
1   libardour.dylib                   0x00000001072bd318 ARDOUR::AudioPlaylist::read(float*, float*, float*, long long, long long, unsigned int) + 1176
2   libardour.dylib                   0x00000001072ac236 ARDOUR::AudioDiskstream::read(float*, float*, float*, long long&, long long, int, bool) + 854
3   libardour.dylib                   0x00000001072abbb8 ARDOUR::AudioDiskstream::overwrite_existing_buffers() + 392
4   libardour.dylib                   0x00000001077ef36a ARDOUR::Session::non_realtime_overwrite(int, bool&) + 186
5   libardour.dylib                   0x00000001077ed7f0 ARDOUR::Session::butler_transport_work() + 1696
6   libardour.dylib                   0x0000000107323425 ARDOUR::Butler::thread_work() + 149
7   libardour.dylib                   0x000000010732334f ARDOUR::Butler::_thread_work(void*) + 95
2019-10-18 01:41:18 +02:00
..
appleutility NO-OP: fix some Wimplicit-fallthrough 2019-09-18 17:37:54 +02:00
ardour Fix a rare EventList race-condition/crash 2019-10-18 01:41:18 +02:00
ardouralsautil Suffix complete hw: ID to make ALSA card names unique 2019-08-16 20:00:29 +02:00
audiographer Engage thread-safe fftw planner in libardour 2019-09-10 03:06:21 +02:00
backends NO-OP: fix some Wimplicit-fallthrough 2019-09-18 17:37:54 +02:00
canvas Fix remaining doxygen warnings (!) 2019-09-30 21:03:29 +02:00
clearlooks-newer NO-OP: fix some Wimplicit-fallthrough 2019-09-18 17:37:54 +02:00
evoral Add API to safely query timestamp of first/last control event 2019-10-18 01:37:56 +02:00
fluidsynth Update Fluidsynth to v2.0.7 2019-09-30 23:12:32 +02:00
fst Update utility and tools GPL boilerplate and (C) from git log 2019-08-03 15:53:17 +02:00
gtkmm2ext remove unnecessary template methods (replicated in libs/gtkmm2ext/doi.h 2019-10-10 16:52:00 -06:00
hidapi remove use of hardcoded -fPIC compiler flag, and use compiler flag dict instead 2018-10-14 22:06:11 -04:00
libltc Fix use of doxygen documented parameters in running text 2019-09-30 06:30:11 +02:00
lua Update core library GPL boilerplate and (C) from git log 2019-08-03 15:53:17 +02:00
midi++2 NO-OP: fix some Wimplicit-fallthrough 2019-09-18 17:37:54 +02:00
panners goodbye Profile->...trx 2019-09-25 13:02:31 -06:00
pbd Invert Pan-Azimuth (up means left) 2019-10-07 05:07:55 +02:00
plugins Amend 69a3b0b46e, remove CCs not used by fluidsynth 2019-09-04 22:56:31 +02:00
ptformat ptformat: Update to upstream 8d29d79 (drop fades && fix offsets) 2019-08-10 12:34:45 +10:00
qm-dsp remove use of hardcoded -fPIC compiler flag, and use compiler flag dict instead 2018-10-14 22:06:11 -04:00
surfaces Consolidate and extend "well-known" controls: 2019-09-25 14:02:45 +02:00
temporal Fix remaining doxygen warnings (!) 2019-09-30 21:03:29 +02:00
vamp-plugins Fix memory-leak in case of Vamp plugin setup error 2019-08-24 03:31:49 +02:00
vamp-pyin Fix -Wsign-compare 2019-09-03 05:01:59 +02:00
vfork Update utility and tools GPL boilerplate and (C) from git log 2019-08-03 15:53:17 +02:00
waveview Fix remaining doxygen warnings (!) 2019-09-30 21:03:29 +02:00
widgets NO-OP: whitespace 2019-10-10 23:59:05 +02:00
zita-convolver Allow compilation with winpthreads -- closes #7691 2018-11-25 16:51:24 +01:00
zita-resampler remove use of hardcoded -fPIC compiler flag, and use compiler flag dict instead 2018-10-14 22:06:11 -04:00