V45.43: fix Ozone 11 GUI crash on Intel UHD 630 + load diagnostics
Root-cause hypothesis: fx_vst_bridge parked embed window offscreen (-20000,-20000) during VST3 editor attach; Ozone 11 GL init null-derefs (c0000005 in iZOzone11Core.dll+18f6b92) on Intel ICD. Reaper hosts window on-screen -> OK. - RenderFxJob.cpp: env toggle SF_FXGUI_ATTACH_ONSCREEN=1 -> SetWindowPos(100,100) before fxGuiLoadAttach, park back offscreen after attach succeeds - main_fx.cpp: FxCrashDumpHandler prints [CRASH] in <module>+0x<offset> and [CRASH] minidump: <path> so logs name the faulting plugin DLL directly - app.jsx VstGuiEmbed: frameLoadedRef + 90s watchdog -> onDead if bridge alive but no frame (no more infinite 'Dang tai plugin VST...' flash); clearer onDead toasts with %TEMP%\sf_dumps\fx_bridge_crash_*.dmp hint (track + master) - rebuild fx_vst_bridge + daw_vst_bridge, NSIS/MSI v=202609021809
This commit is contained in:
@@ -35,6 +35,18 @@ static LONG WINAPI FxCrashDumpHandler(EXCEPTION_POINTERS* ep) {
|
||||
std::cerr << "[CRASH] fx_vst_bridge exception code=0x" << std::hex
|
||||
<< (er ? er->ExceptionCode : 0) << " addr=0x"
|
||||
<< (er ? (void*)er->ExceptionAddress : nullptr) << std::dec << std::endl;
|
||||
if (er) {
|
||||
HMODULE hMod = nullptr;
|
||||
DWORD_PTR crashAddr = (DWORD_PTR)er->ExceptionAddress;
|
||||
if (GetModuleHandleExA(GET_MODULE_HANDLE_EX_FLAG_FROM_ADDRESS |
|
||||
GET_MODULE_HANDLE_EX_FLAG_UNCHANGED_REFCOUNT,
|
||||
(LPCSTR)er->ExceptionAddress, &hMod) && hMod) {
|
||||
char modPath[MAX_PATH];
|
||||
if (GetModuleFileNameA(hMod, modPath, MAX_PATH))
|
||||
std::cerr << "[CRASH] in " << modPath << "+0x" << std::hex
|
||||
<< (crashAddr - (DWORD_PTR)hMod) << std::dec << std::endl;
|
||||
}
|
||||
}
|
||||
char dumpDir[MAX_PATH];
|
||||
if (GetTempPathA(MAX_PATH, dumpDir)) {
|
||||
std::strncat(dumpDir, "sf_dumps", MAX_PATH - std::strlen(dumpDir) - 1);
|
||||
@@ -63,6 +75,7 @@ static LONG WINAPI FxCrashDumpHandler(EXCEPTION_POINTERS* ep) {
|
||||
hFile, MiniDumpNormal, &mei, nullptr,
|
||||
nullptr);
|
||||
CloseHandle(hFile);
|
||||
std::cerr << "[CRASH] minidump: " << dumpPath << std::endl;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user