diff --git a/CHANGELOG.md b/CHANGELOG.md index 9749cbd8..432b7d1c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -12,6 +12,13 @@ Versioning](https://semver.org/spec/v2.0.0.html). - Added a `system-asio` build option to aid distro packaging. +### Fixed + +- Fixed recent _Arturia_ VST3 plugins running into memory errors during plugin + scans in **REAPER** and **Ardour**. These plugins would try to read data in + the Windows event loop without checking whether that data was initialized, + after the data had just been deinitialized. + ### yabridgectl - Fixed a regression from yabridge 4.0.0 where VST3 plugins in the 'new' bundle diff --git a/src/wine-host/bridges/vst3.cpp b/src/wine-host/bridges/vst3.cpp index f78f6f1c..5e0af464 100644 --- a/src/wine-host/bridges/vst3.cpp +++ b/src/wine-host/bridges/vst3.cpp @@ -1080,6 +1080,16 @@ void Vst3Bridge::run() { const auto& [instance, _] = get_instance(request.instance_id); + // HACK: New (anno May/June 2022) Arturia VST3 plugins + // don't check whether the data they try to access + // from their Win32 timers is actually + // initialized, and this function deinitializes + // that data. So if this is followed by + // `handle_events()`, then the plugin would run + // into a memory error. Inhibiting that event loop + // 'fixes' this. + instance.is_initialized = false; + return instance.interfaces.plugin_base->terminate(); }) .get();