13
0
Go to file
Robin Gareus 464df06419
Fix signal emission order ambiguity (record regionview)
A rec-region is added to the streamview just like any other region
(::add_region_view_internal). This subscribes to region->DropReferences.

When the DropReferences is handled first by StreamView::remove_region_view
the corresponding RegionView is destroyed.

This can happen even while recording is still active, eg. when locating
(which stops the current recording).
MidiStreamView::setup_rec_box() is called and crashes in
`dynamic_cast<MidiRegionView*> (rec_regions.back().second);`
due to a use after free.

Strictly speaking this is a logic error in how ::setup_rec_box()
determines if to add or remove the rec-box. But due to the
asynchronous nature of signal emission and transport-state changes
the best solution is to destroy the rec-region at the same
when the RegionView is destroyed.

To reproduce:
 * create a session with a MIDI track
 * disconnect the input (empty MIDI regions are removed)
 * Preferences > Transport > *enable* latched-record-enable
 * use the Dummy backend's MIDI generator
 * connect Hardware > MIDI > MMC -> Ardour misc > MMC in
   OR use JACK-transport to locate while recording.
2023-06-04 21:42:02 +02:00
doc
gtk2_ardour Fix signal emission order ambiguity (record regionview) 2023-06-04 21:42:02 +02:00
headless
libs Fix remove_source assert() 2023-06-04 21:26:41 +02:00
luasession
msvc_extra_headers
MSVCardour3
MSVCMixbus3
MSVCvst_scan
session_utils
share
tools
.dir-locals.el
.gitattributes
.gitignore
ardour.1
COPYING
nutempo-todo
PACKAGER_README
README
README-GITHUB.txt
system_config
TRANSLATORS
waf
wscript Clarify boost check 2023-06-02 21:31:36 +02:00

Please see the Ardour web site at https://ardour.org/ for all documentation..

For information on building ardour: 
      
     https://ardour.org/development.html