Project

General

Profile

Actions

Emulator Issues #13634

closed

Opening Vulkan graphics settings while a game is launching causes Dolphin to crash

Added by pokechu22 about 2 months ago. Updated about 1 month ago.

Status:
Fixed
Priority:
Normal
Assignee:
-
% Done:

0%

Operating system:
N/A
Issue type:
Bug
Milestone:
Regression:
No
Relates to usability:
No
Relates to performance:
No
Easy:
No
Relates to maintainability:
No
Regression start:
Fixed in:
2409-63

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?

  1. Start Dolphin.
  2. Change the graphics backend to Vulkan.
  3. Close and reopen Dolphin (this may not be required, but seems to help with consistency for me).
  4. Select a game in the games list.
  5. Move the mouse over the graphics settings button.
  6. Press enter to launch the game, and then immediately click on the graphics settings button.
  7. 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
Actions

Also available in: Atom PDF