From 31f19fa537fdbc546e64b599aa7a137a7b675ed7 Mon Sep 17 00:00:00 2001 From: locpham Date: Tue, 1 Sep 2026 20:37:59 +0700 Subject: [PATCH] bridge: skip Ozone 11 modules (license fastfail c0000409 kills scan/render) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Ozone 11 (iZotope) tu __fastfail FATAL_APP_EXIT khi load — khong bi SEH chan, giet ca bridge process. Scan -> mat ca dir -> FX list rong; render/realtime -> crash. Khong load: scan emit UNKNOWN, load tra loi sach. Ozone Pro van OK. ponytail: SandboxVst3Host (1 module 1 process) khi can Ozone 11. --- native_bridge/src/RenderFxJob.cpp | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/native_bridge/src/RenderFxJob.cpp b/native_bridge/src/RenderFxJob.cpp index 21279f1..eb025bf 100644 --- a/native_bridge/src/RenderFxJob.cpp +++ b/native_bridge/src/RenderFxJob.cpp @@ -455,6 +455,21 @@ static void setPluginSearchPath(const std::string& path) { bool vst3FxLoadInner(Vst3FxState* s, const std::string& path, double sampleRate, int32 maxBlockSize, std::string& err) { using namespace VST3::Hosting; +#ifdef _WIN32 + // Ozone 11 (iZotope) tự __fastfail (c0000409, license/anti-tamper) khi + // load — KHÔNG bị SEH chặn → giết cả bridge process (scan + render + + // realtime). Không load: trả lỗi sạch cho chain. Ozone Pro vẫn load OK. + // ponytail: muốn chạy Ozone 11 → SandboxVst3Host (mỗi module 1 process). + { + std::string low = path; + for (auto& c : low) c = (char)std::tolower((unsigned char)c); + if (low.find("ozone 11") != std::string::npos) { + err = "Ozone 11 not loadable (license fastfail) - use Ozone Pro"; + std::cerr << "[RenderFx] skip (Ozone 11): " << path << std::endl; + return false; + } + } +#endif #ifdef _WIN32 setPluginSearchPath(path); #endif @@ -2077,6 +2092,18 @@ int run_scan_dir(const std::string& dirPath) { #ifdef HAVE_VST3SDK for (const auto& p : vst3Paths) { std::vector entries; + // Ozone 11 (iZotope) tự __fastfail (c0000409, license/anti-tamper) + // khi load trong --scan — không bị SEH chặn → chết cả process → mất + // TOÀN BỘ dir → FX list rỗng. Không load: emit UNKNOWN (giống skip + // module lỗi). ponytail: SandboxVst3Host (mỗi module 1 process). + { + std::string low = p; + for (auto& c : low) c = (char)std::tolower((unsigned char)c); + if (low.find("ozone 11") != std::string::npos) { + emit(p, p.substr(p.find_last_of("/\\") + 1), false, false, "VST3"); + continue; + } + } if (!safeScanModule(p, entries)) { // Module unreadable/crashed/hung (e.g. Ozone 11 Clarity): emit // entry UNKNOWN (is_fx=false, is_instrument=false) — trước đây