Emulator Issues #13634
closedOpening Vulkan graphics settings while a game is launching causes Dolphin to crash
0%
Description
Game Name?
Affects all games, and also fifologs.
What's the problem? Describe what went wrong.
If you open the graphics settings window immediately after launching a game (or starting to replay a fifolog), Dolphin will crash. This has happened to me by accident several times, since I often need to change graphics settings to test something, but probably doesn't affect most end-users. I've confirmed that this happens with Vulkan, but it may affect other backends as well.
What steps will reproduce the problem?
- Start Dolphin.
- Change the graphics backend to Vulkan.
- Close and reopen Dolphin (this may not be required, but seems to help with consistency for me).
- Select a game in the games list.
- Move the mouse over the graphics settings button.
- Press enter to launch the game, and then immediately click on the graphics settings button.
- Dolphin will crash.
Is the issue present in the latest development version? For future reference, please also write down the version number of the latest development version.
Yes, 2409-45 (built from source).
Is the issue present in the latest release? For future reference, please also write down the version number of the latest release.
Yes, 2409 (prebuilt).
What are your PC specifications? (CPU, GPU, Operating System, more)
- CPU: Intel(R) Core(TM) i7-10750H CPU @ 2.60GHz, 2592 Mhz, 6 Core(s), 12 Logical Processor(s)
- GPU: NVIDIA GeForce GTX 1650 Ti; also affects integrated Intel GPU
- OS: Windows 10 Home 10.0.19045.4894
Is there anything else that can help developers narrow down the issue? (e.g. logs, screenshots,
configuration files, savefiles, savestates)
I'm pretty sure this happens because the graphics settings attempts to load Vulkan if it's not already loaded, and then unloads it afterwards. This results in it being unloaded while the game is trying to use it. Here are a few stack traces:
Main thread
> ntdll.dll!RtlLookupFunctionEntry() Unknown
ntdll.dll!RtlDispatchException() Unknown
ntdll.dll!KiUserExceptionDispatch() Unknown
ntdll.dll!RtlpWaitOnCriticalSection() Unknown
ntdll.dll!RtlpEnterCriticalSectionContended() Unknown
ntdll.dll!RtlEnterCriticalSection() Unknown
00007fffcafdc4d3() Unknown
0000000000000020() Unknown
EmuThread - starting
ntdll.dll!NtOpenFile() Unknown
ntdll.dll!LdrpMapDllNtFileName() Unknown
ntdll.dll!LdrpMapDllSearchPath() Unknown
ntdll.dll!LdrpProcessWork() Unknown
ntdll.dll!LdrpLoadDllInternal() Unknown
ntdll.dll!LdrpLoadDll() Unknown
ntdll.dll!LdrLoadDll() Unknown
KernelBase.dll!LoadLibraryExW() Unknown
KernelBase.dll!LoadLibraryExA() Unknown
KernelBase.dll!LoadLibraryA() Unknown
> Dolphin.exe!Common::DynamicLibrary::Open(const char * filename) Line 89 C++
Dolphin.exe!Vulkan::OpenVulkanLibrary(bool force_system_library) Line 88 C++
Dolphin.exe!Vulkan::LoadVulkanLibrary(bool force_system_library) Line 99 C++
Dolphin.exe!Vulkan::VideoBackend::Initialize(const WindowSystemInfo & wsi) Line 101 C++
Dolphin.exe!Core::EmuThread(Core::System & system, std::unique_ptr<BootParameters,std::default_delete<BootParameters>> boot, WindowSystemInfo wsi) Line 578 C++
[Inline Frame] Dolphin.exe!std::invoke(void(*)(Core::System &, std::unique_ptr<BootParameters,std::default_delete<BootParameters>>, WindowSystemInfo) &&) Line 1739 C++
Dolphin.exe!std::thread::_Invoke<std::tuple<void (__cdecl*)(Core::System &,std::unique_ptr<BootParameters,std::default_delete<BootParameters>>,WindowSystemInfo),std::reference_wrapper<Core::System>,std::unique_ptr<BootParameters,std::default_delete<BootParameters>>,WindowSystemInfo>,0,1,2,3>(void * _RawVals) Line 61 C++
ucrtbase.dll!thread_start<unsigned int (__cdecl*)(void *),1>() Unknown
kernel32.dll!BaseThreadInitThunk() Unknown
ntdll.dll!RtlUserThreadStart() Unknown
Main thread:
> ntdll.dll!RtlLookupFunctionEntry() Unknown
ntdll.dll!RtlDispatchException() Unknown
ntdll.dll!KiUserExceptionDispatch() Unknown
ntdll.dll!RtlpWaitOnCriticalSection() Unknown
ntdll.dll!RtlpEnterCriticalSectionContended() Unknown
ntdll.dll!RtlEnterCriticalSection() Unknown
00007fffb18ec4d3() Unknown
000000f49b1b65d4() Unknown
0000022300000000() Unknown
00000000fffffffa() Unknown
EmuThread - starting:
> DolphinD.exe!fmt::v10::detail::assume(bool condition) Line 500 C++
DolphinD.exe!fmt::v10::to_string<char,500>(const fmt::v10::basic_memory_buffer<char,500,std::allocator<char>> & buf) Line 4339 C++
DolphinD.exe!fmt::v10::vformat(fmt::v10::basic_string_view<char> fmt, fmt::v10::basic_format_args<fmt::v10::basic_format_context<fmt::v10::appender,char>> args) Line 1431 C++
DolphinD.exe!Common::Log::GenericLogFmtImpl(Common::Log::LogLevel level, Common::Log::LogType type, const char * file, int line, fmt::v10::basic_string_view<char> format, const fmt::v10::basic_format_args<fmt::v10::basic_format_context<fmt::v10::appender,char>> & args) Line 74 C++
DolphinD.exe!Common::Log::GenericLogFmt<0,``Vulkan::OpenVulkanLibrary'::`9'::<lambda_1>::operator()'::`2'::FMT_COMPILE_STRING>(Common::Log::LogLevel level, Common::Log::LogType type, const char * file, int line, const Vulkan::OpenVulkanLibrary::__l9::<lambda_1>::()::__l2::FMT_COMPILE_STRING & format) Line 103 C++
DolphinD.exe!Vulkan::OpenVulkanLibrary(bool force_system_library) Line 86 C++
DolphinD.exe!Vulkan::LoadVulkanLibrary(bool force_system_library) Line 99 C++
DolphinD.exe!Vulkan::VideoBackend::Initialize(const WindowSystemInfo & wsi) Line 101 C++
DolphinD.exe!Core::EmuThread(Core::System & system, std::unique_ptr<BootParameters,std::default_delete<BootParameters>> boot, WindowSystemInfo wsi) Line 578 C++
DolphinD.exe!std::invoke<void (__cdecl*)(Core::System &,std::unique_ptr<BootParameters,std::default_delete<BootParameters>>,WindowSystemInfo),std::reference_wrapper<Core::System>,std::unique_ptr<BootParameters,std::default_delete<BootParameters>>,WindowSystemInfo>(void(*)(Core::System &, std::unique_ptr<BootParameters,std::default_delete<BootParameters>>, WindowSystemInfo) && _Obj, std::reference_wrapper<Core::System> && _Arg1, std::unique_ptr<BootParameters,std::default_delete<BootParameters>> && <_Args2_0>, WindowSystemInfo && <_Args2_1>) Line 1754 C++
DolphinD.exe!std::thread::_Invoke<std::tuple<void (__cdecl*)(Core::System &,std::unique_ptr<BootParameters,std::default_delete<BootParameters>>,WindowSystemInfo),std::reference_wrapper<Core::System>,std::unique_ptr<BootParameters,std::default_delete<BootParameters>>,WindowSystemInfo>,0,1,2,3>(void * _RawVals) Line 61 C++
ucrtbased.dll!thread_start<unsigned int (__cdecl*)(void *),1>(void * const parameter) Line 97 C++
kernel32.dll!BaseThreadInitThunk() Unknown
ntdll.dll!RtlUserThreadStart() Unknown
Main thread:
vulkan-1.dll!00007fffb7365bf8() Unknown
nvoglv64.dll!00007fff4d790717() Unknown
vulkan-1.dll!00007fffb739ad9e() Unknown
> Dolphin.exe!Vulkan::VideoBackend::InitBackendInfo(const WindowSystemInfo & wsi) Line 73 C++
Dolphin.exe!VideoBackendBase::PopulateBackendInfo(const WindowSystemInfo & wsi) Line 296 C++
Dolphin.exe!GraphicsWindow::OnBackendChanged(const QString & backend_name) Line 72 C++
Dolphin.exe!GraphicsWindow::GraphicsWindow(MainWindow * parent) Line 34 C++
Dolphin.exe!MainWindow::ShowGraphicsWindow() Line 1351 C++
[Inline Frame] Qt6Core.dll!QtPrivate::QSlotObjectBase::call(QObject *) Line 363 C++
Qt6Core.dll!doActivate<0>(QObject * sender, int signal_index, void * * argv) Line 3992 C++
[Inline Frame] Qt6Core.dll!QtPrivate::QSlotObjectBase::call(QObject *) Line 363 C++
Qt6Core.dll!doActivate<0>(QObject * sender, int signal_index, void * * argv) Line 3992 C++
[Inline Frame] Qt6Gui.dll!QAction::triggered(bool _t1) Line 638 C++
Qt6Gui.dll!QAction::activate(QAction::ActionEvent event) Line 1105 C++
Qt6Widgets.dll!QAbstractButtonPrivate::click() Line 363 C++
Qt6Widgets.dll!QAbstractButton::mouseReleaseEvent(QMouseEvent * e) Line 975 C++
Qt6Widgets.dll!QToolButton::mouseReleaseEvent(QMouseEvent * e) Line 585 C++
Qt6Widgets.dll!QWidget::event(QEvent * event) Line 9376 C++
Qt6Widgets.dll!QApplicationPrivate::notify_helper(QObject * receiver, QEvent * e) Line 3289 C++
Qt6Widgets.dll!QApplication::notify(QObject * receiver, QEvent * e) Line 2775 C++
Qt6Core.dll!QCoreApplication::notifyInternal2(QObject * receiver, QEvent * event) Line 1115 C++
Qt6Widgets.dll!QApplicationPrivate::sendMouseEvent(QWidget * receiver, QMouseEvent * event, QWidget * alienWidget, QWidget * nativeWidget, QWidget * * buttonDown, QPointer<QWidget> & lastMouseReceiver, bool spontaneous, bool onlyDispatchEnterLeave) Line 2358 C++
Qt6Widgets.dll!QWidgetWindow::handleMouseEvent(QMouseEvent * event) Line 625 C++
Qt6Widgets.dll!QWidgetWindow::event(QEvent * event) Line 242 C++
Qt6Widgets.dll!QApplicationPrivate::notify_helper(QObject * receiver, QEvent * e) Line 3289 C++
Qt6Widgets.dll!QApplication::notify(QObject * receiver, QEvent * e) Line 3241 C++
Qt6Core.dll!QCoreApplication::notifyInternal2(QObject * receiver, QEvent * event) Line 1115 C++
Qt6Gui.dll!QGuiApplicationPrivate::processMouseEvent(QWindowSystemInterfacePrivate::MouseEvent * e) Line 2289 C++
Qt6Gui.dll!QWindowSystemInterface::sendWindowSystemEvents(QFlags<enum QEventLoop::ProcessEventsFlag> flags) Line 1100 C++
Qt6Core.dll!QEventDispatcherWin32::processEvents(QFlags<enum QEventLoop::ProcessEventsFlag> flags) Line 464 C++
Qt6Gui.dll!QWindowsGuiEventDispatcher::processEvents(QFlags<enum QEventLoop::ProcessEventsFlag> flags) Line 37 C++
[Inline Frame] Qt6Core.dll!QEventLoop::processEvents(QFlags<enum QEventLoop::ProcessEventsFlag>) Line 100 C++
Qt6Core.dll!QEventLoop::exec(QFlags<enum QEventLoop::ProcessEventsFlag> flags) Line 181 C++
Qt6Core.dll!QCoreApplication::exec() Line 1436 C++
Dolphin.exe!app_main(int argc, char * * argv) Line 293 C++
Dolphin.exe!wWinMain(HINSTANCE__ * __formal, HINSTANCE__ * __formal, wchar_t * __formal, int __formal) Line 312 C++
[Inline Frame] Dolphin.exe!invoke_main() Line 118 C++
Dolphin.exe!__scrt_common_main_seh() Line 288 C++
kernel32.dll!BaseThreadInitThunk() Unknown
ntdll.dll!RtlUserThreadStart() Unknown
Emuthread - Starting:
ntdll.dll!RtlpFreeHeapInternal() Unknown
ntdll.dll!RtlFreeHeap() Unknown
cfgmgr32.dll!Local_CM_Get_Sibling() Unknown
cfgmgr32.dll!CM_Get_Sibling() Unknown
vulkan-1.dll!00007fffb73a3e53() Unknown
vulkan-1.dll!00007fffb73a4f23() Unknown
vulkan-1.dll!00007fffb737bcad() Unknown
vulkan-1.dll!00007fffb738ba35() Unknown
vulkan-1.dll!00007fffb738da0e() Unknown
vulkan-1.dll!00007fffb7399d78() Unknown
> Dolphin.exe!Vulkan::VulkanContext::CreateVulkanInstance(WindowSystemType wstype, bool enable_debug_utils, bool enable_validation_layer, unsigned int * out_vk_api_version) Line 181 C++
Dolphin.exe!Vulkan::VideoBackend::Initialize(const WindowSystemInfo & wsi) Line 120 C++
Dolphin.exe!Core::EmuThread(Core::System & system, std::unique_ptr<BootParameters,std::default_delete<BootParameters>> boot, WindowSystemInfo wsi) Line 578 C++
[Inline Frame] Dolphin.exe!std::invoke(void(*)(Core::System &, std::unique_ptr<BootParameters,std::default_delete<BootParameters>>, WindowSystemInfo) &&) Line 1739 C++
Dolphin.exe!std::thread::_Invoke<std::tuple<void (__cdecl*)(Core::System &,std::unique_ptr<BootParameters,std::default_delete<BootParameters>>,WindowSystemInfo),std::reference_wrapper<Core::System>,std::unique_ptr<BootParameters,std::default_delete<BootParameters>>,WindowSystemInfo>,0,1,2,3>(void * _RawVals) Line 61 C++
ucrtbase.dll!thread_start<unsigned int (__cdecl*)(void *),1>() Unknown
kernel32.dll!BaseThreadInitThunk() Unknown
ntdll.dll!RtlUserThreadStart() Unknown