diff options
author | Robin Gareus <robin@gareus.org> | 2015-10-12 01:54:44 +0200 |
---|---|---|
committer | Robin Gareus <robin@gareus.org> | 2015-10-12 02:11:04 +0200 |
commit | 27f57cde9ad5782dfb2a16fa0520d67b9e5ed4d4 (patch) | |
tree | b9c0218cf3cff518642f9b0f7e9b39e72c2dc6cb /patchfiles | |
parent | 86f8b9e12dcd95ef8ba27279ef72e8fb7b19091d (diff) |
fix crashes due to glib ignored EDEADLK.
Taking a readlock after a writelock in the same thread should result
in a deadlock, yet pthread on Linux returns EDEADLK and continues.
glib-2.42.0 ignores EDEADLK and assumes the lock was taken. Releasing
the lock later causes issues: "Calling g_rw_lock_writer_unlock() on a
lock that is not held by the current thread leads to undefined behaviour."
The issue at hand:
AudioStreamView::redisplay_track()
-> foreach_region() #<< WriteLock
-> add_region_view()
...
-> AudioRegionView::create_one_wave()
-> RegionView::update_coverage_frames
-> Playlist::top_unmuted_region_at() #<< ReadLock
All current users of Playlist::foreach_region() are in the GUI
and AFAICT read-only (display regions, update visuals)
Diffstat (limited to 'patchfiles')
0 files changed, 0 insertions, 0 deletions