Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Bug] Mario Strikers: Battle League - Crash when starting any match or training #4704

Closed
TimeZlicer opened this issue Apr 22, 2023 · 3 comments · Fixed by #4800
Closed

[Bug] Mario Strikers: Battle League - Crash when starting any match or training #4704

TimeZlicer opened this issue Apr 22, 2023 · 3 comments · Fixed by #4800
Labels
bug Something isn't working

Comments

@TimeZlicer
Copy link
Contributor

TimeZlicer commented Apr 22, 2023

Description of the issue

Crash when starting any match or training

similar error as #4575

Reproduction steps

Start any match or training, crash after a short while

build commit 250fc51 via the following command

git clean -fdx; DOTNET_CLI_TELEMETRY_OPTOUT=1 sh -x ./distribution/macos/create_macos_release.sh . ./temp ./output distribution/macos/entitlements.xml `git describe --tags`-macos `git describe --always`
00:00:00.631 |E| .NET ThreadPool Worker [mvk-info] MoltenVK version 1.2.0, supporting Vulkan version 1.2.231.
00:00:00.631 |E| .NET ThreadPool Worker 	The following 83 Vulkan extensions are supported:
00:00:00.631 |E| .NET ThreadPool Worker 		VK_KHR_16bit_storage v1
00:00:00.631 |E| .NET ThreadPool Worker 		VK_KHR_8bit_storage v1
00:00:00.631 |E| .NET ThreadPool Worker 		VK_KHR_bind_memory2 v1
00:00:00.631 |E| .NET ThreadPool Worker 		VK_KHR_buffer_device_address v1
00:00:00.631 |E| .NET ThreadPool Worker 		VK_KHR_create_renderpass2 v1
00:00:00.631 |E| .NET ThreadPool Worker 		VK_KHR_dedicated_allocation v3
00:00:00.631 |E| .NET ThreadPool Worker 		VK_KHR_depth_stencil_resolve v1
00:00:00.631 |E| .NET ThreadPool Worker 		VK_KHR_descriptor_update_template v1
00:00:00.631 |E| .NET ThreadPool Worker 		VK_KHR_device_group v4
00:00:00.631 |E| .NET ThreadPool Worker 		VK_KHR_device_group_creation v1
00:00:00.631 |E| .NET ThreadPool Worker 		VK_KHR_driver_properties v1
00:00:00.631 |E| .NET ThreadPool Worker 		VK_KHR_dynamic_rendering v1
00:00:00.631 |E| .NET ThreadPool Worker 		VK_KHR_external_fence v1
00:00:00.631 |E| .NET ThreadPool Worker 		VK_KHR_external_fence_capabilities v1
00:00:00.631 |E| .NET ThreadPool Worker 		VK_KHR_external_memory v1
00:00:00.631 |E| .NET ThreadPool Worker 		VK_KHR_external_memory_capabilities v1
00:00:00.631 |E| .NET ThreadPool Worker 		VK_KHR_external_semaphore v1
00:00:00.631 |E| .NET ThreadPool Worker 		VK_KHR_external_semaphore_capabilities v1
00:00:00.631 |E| .NET ThreadPool Worker 		VK_KHR_fragment_shader_barycentric v1
00:00:00.631 |E| .NET ThreadPool Worker 		VK_KHR_get_memory_requirements2 v1
00:00:00.631 |E| .NET ThreadPool Worker 		VK_KHR_get_physical_device_properties2 v2
00:00:00.631 |E| .NET ThreadPool Worker 		VK_KHR_get_surface_capabilities2 v1
00:00:00.631 |E| .NET ThreadPool Worker 		VK_KHR_imageless_framebuffer v1
00:00:00.631 |E| .NET ThreadPool Worker 		VK_KHR_image_format_list v1
00:00:00.631 |E| .NET ThreadPool Worker 		VK_KHR_maintenance1 v2
00:00:00.631 |E| .NET ThreadPool Worker 		VK_KHR_maintenance2 v1
00:00:00.631 |E| .NET ThreadPool Worker 		VK_KHR_maintenance3 v1
00:00:00.631 |E| .NET ThreadPool Worker 		VK_KHR_multiview v1
00:00:00.632 |E| .NET ThreadPool Worker 		VK_KHR_portability_subset v1
00:00:00.632 |E| .NET ThreadPool Worker 		VK_KHR_push_descriptor v2
00:00:00.632 |E| .NET ThreadPool Worker 		VK_KHR_relaxed_block_layout v1
00:00:00.632 |E| .NET ThreadPool Worker 		VK_KHR_sampler_mirror_clamp_to_edge v3
00:00:00.632 |E| .NET ThreadPool Worker 		VK_KHR_sampler_ycbcr_conversion v14
00:00:00.632 |E| .NET ThreadPool Worker 		VK_KHR_separate_depth_stencil_layouts v1
00:00:00.632 |E| .NET ThreadPool Worker 		VK_KHR_shader_draw_parameters v1
00:00:00.632 |E| .NET ThreadPool Worker 		VK_KHR_shader_float_controls v4
00:00:00.632 |E| .NET ThreadPool Worker 		VK_KHR_shader_float16_int8 v1
00:00:00.632 |E| .NET ThreadPool Worker 		VK_KHR_shader_subgroup_extended_types v1
00:00:00.632 |E| .NET ThreadPool Worker 		VK_KHR_spirv_1_4 v1
00:00:00.632 |E| .NET ThreadPool Worker 		VK_KHR_storage_buffer_storage_class v1
00:00:00.632 |E| .NET ThreadPool Worker 		VK_KHR_surface v25
00:00:00.632 |E| .NET ThreadPool Worker 		VK_KHR_swapchain v70
00:00:00.632 |E| .NET ThreadPool Worker 		VK_KHR_swapchain_mutable_format v1
00:00:00.632 |E| .NET ThreadPool Worker 		VK_KHR_timeline_semaphore v2
00:00:00.632 |E| .NET ThreadPool Worker 		VK_KHR_uniform_buffer_standard_layout v1
00:00:00.632 |E| .NET ThreadPool Worker 		VK_KHR_variable_pointers v1
00:00:00.632 |E| .NET ThreadPool Worker 		VK_EXT_buffer_device_address v2
00:00:00.632 |E| .NET ThreadPool Worker 		VK_EXT_debug_marker v4
00:00:00.632 |E| .NET ThreadPool Worker 		VK_EXT_debug_report v10
00:00:00.632 |E| .NET ThreadPool Worker 		VK_EXT_debug_utils v2
00:00:00.632 |E| .NET ThreadPool Worker 		VK_EXT_descriptor_indexing v2
00:00:00.632 |E| .NET ThreadPool Worker 		VK_EXT_fragment_shader_interlock v1
00:00:00.632 |E| .NET ThreadPool Worker 		VK_EXT_hdr_metadata v2
00:00:00.632 |E| .NET ThreadPool Worker 		VK_EXT_host_query_reset v1
00:00:00.632 |E| .NET ThreadPool Worker 		VK_EXT_image_robustness v1
00:00:00.632 |E| .NET ThreadPool Worker 		VK_EXT_inline_uniform_block v1
00:00:00.632 |E| .NET ThreadPool Worker 		VK_EXT_memory_budget v1
00:00:00.632 |E| .NET ThreadPool Worker 		VK_EXT_metal_objects v1
00:00:00.632 |E| .NET ThreadPool Worker 		VK_EXT_metal_surface v1
00:00:00.632 |E| .NET ThreadPool Worker 		VK_EXT_post_depth_coverage v1
00:00:00.632 |E| .NET ThreadPool Worker 		VK_EXT_private_data v1
00:00:00.632 |E| .NET ThreadPool Worker 		VK_EXT_robustness2 v1
00:00:00.632 |E| .NET ThreadPool Worker 		VK_EXT_sample_locations v1
00:00:00.632 |E| .NET ThreadPool Worker 		VK_EXT_scalar_block_layout v1
00:00:00.632 |E| .NET ThreadPool Worker 		VK_EXT_separate_stencil_usage v1
00:00:00.632 |E| .NET ThreadPool Worker 		VK_EXT_shader_stencil_export v1
00:00:00.632 |E| .NET ThreadPool Worker 		VK_EXT_shader_viewport_index_layer v1
00:00:00.632 |E| .NET ThreadPool Worker 		VK_EXT_subgroup_size_control v2
00:00:00.632 |E| .NET ThreadPool Worker 		VK_EXT_swapchain_colorspace v4
00:00:00.632 |E| .NET ThreadPool Worker 		VK_EXT_texel_buffer_alignment v1
00:00:00.632 |E| .NET ThreadPool Worker 		VK_EXT_texture_compression_astc_hdr v1
00:00:00.632 |E| .NET ThreadPool Worker 		VK_EXT_vertex_attribute_divisor v3
00:00:00.632 |E| .NET ThreadPool Worker 		VK_AMD_gpu_shader_half_float v2
00:00:00.632 |E| .NET ThreadPool Worker 		VK_AMD_negative_viewport_height v1
00:00:00.632 |E| .NET ThreadPool Worker 		VK_AMD_shader_image_load_store_lod v1
00:00:00.632 |E| .NET ThreadPool Worker 		VK_AMD_shader_trinary_minmax v1
00:00:00.632 |E| .NET ThreadPool Worker 		VK_IMG_format_pvrtc v1
00:00:00.632 |E| .NET ThreadPool Worker 		VK_INTEL_shader_integer_functions2 v1
00:00:00.632 |E| .NET ThreadPool Worker 		VK_GOOGLE_display_timing v1
00:00:00.632 |E| .NET ThreadPool Worker 		VK_MVK_macos_surface v3
00:00:00.632 |E| .NET ThreadPool Worker 		VK_MVK_moltenvk v36
00:00:00.632 |E| .NET ThreadPool Worker 		VK_NV_fragment_shader_barycentric v1
00:00:00.632 |E| .NET ThreadPool Worker 		VK_NV_glsl_shader v1
00:00:00.632 |E| .NET ThreadPool Worker [mvk-info] GPU device:
00:00:00.632 |E| .NET ThreadPool Worker 		model: Apple M2
00:00:00.632 |E| .NET ThreadPool Worker 		type: Integrated
00:00:00.632 |E| .NET ThreadPool Worker 		vendorID: 0x106b
00:00:00.632 |E| .NET ThreadPool Worker 		deviceID: 0xd0303ef
00:00:00.632 |E| .NET ThreadPool Worker 		pipelineCacheUUID: 260BAD42-0D03-03EF-0000-000000000000
00:00:00.632 |E| .NET ThreadPool Worker 	supports the following Metal Versions, GPU's and Feature Sets:
00:00:00.632 |E| .NET ThreadPool Worker 		Metal Shading Language 2.4
00:00:00.632 |E| .NET ThreadPool Worker 		GPU Family Apple 7
00:00:00.632 |E| .NET ThreadPool Worker 		GPU Family Apple 6
00:00:00.632 |E| .NET ThreadPool Worker 		GPU Family Apple 5
00:00:00.632 |E| .NET ThreadPool Worker 		GPU Family Apple 4
00:00:00.632 |E| .NET ThreadPool Worker 		GPU Family Apple 3
00:00:00.632 |E| .NET ThreadPool Worker 		GPU Family Apple 2
00:00:00.632 |E| .NET ThreadPool Worker 		GPU Family Apple 1
00:00:00.632 |E| .NET ThreadPool Worker 		GPU Family Mac 2
00:00:00.632 |E| .NET ThreadPool Worker 		GPU Family Mac 1
00:00:00.632 |E| .NET ThreadPool Worker 		GPU Family Common 3
00:00:00.632 |E| .NET ThreadPool Worker 		GPU Family Common 2
00:00:00.632 |E| .NET ThreadPool Worker 		GPU Family Common 1
00:00:00.632 |E| .NET ThreadPool Worker 		macOS GPU Family 2 v1
00:00:00.632 |E| .NET ThreadPool Worker 		macOS GPU Family 1 v4
00:00:00.632 |E| .NET ThreadPool Worker 		macOS GPU Family 1 v3
00:00:00.632 |E| .NET ThreadPool Worker 		macOS GPU Family 1 v2
00:00:00.632 |E| .NET ThreadPool Worker 		macOS GPU Family 1 v1
00:00:00.632 |E| .NET ThreadPool Worker [mvk-info] Created VkInstance for Vulkan version 1.2.0, as requested by app, with the following 3 Vulkan extensions enabled:
00:00:00.632 |E| .NET ThreadPool Worker 		VK_KHR_surface v25
00:00:00.632 |E| .NET ThreadPool Worker 		VK_EXT_debug_utils v2
00:00:00.632 |E| .NET ThreadPool Worker 		VK_EXT_metal_surface v1
00:00:00.655 |E| .NET ThreadPool Worker [mvk-info] Vulkan semaphores using Metal implicit guarantees within a single queue.
00:00:00.655 |E| .NET ThreadPool Worker [mvk-info] Created VkDevice to run on GPU Apple M2 with the following 9 Vulkan extensions enabled:
00:00:00.655 |E| .NET ThreadPool Worker 		VK_KHR_portability_subset v1
00:00:00.655 |E| .NET ThreadPool Worker 		VK_KHR_push_descriptor v2
00:00:00.655 |E| .NET ThreadPool Worker 		VK_KHR_shader_float16_int8 v1
00:00:00.655 |E| .NET ThreadPool Worker 		VK_KHR_swapchain v70
00:00:00.655 |E| .NET ThreadPool Worker 		VK_EXT_descriptor_indexing v2
00:00:00.655 |E| .NET ThreadPool Worker 		VK_EXT_fragment_shader_interlock v1
00:00:00.655 |E| .NET ThreadPool Worker 		VK_EXT_robustness2 v1
00:00:00.655 |E| .NET ThreadPool Worker 		VK_EXT_shader_stencil_export v1
00:00:00.655 |E| .NET ThreadPool Worker 		VK_EXT_subgroup_size_control v2
00:00:00.700 |E| .NET ThreadPool Worker [mvk-info] Created 3 swapchain images with initial size (2560, 1414) and contents scale 2.0 for screen Built-in Retina Display.
00:00:00.701 |N| GUI.RenderThread Gpu PrintGpuInformation: Apple Apple M2 (Vulkan v1.2.231, Driver v0.2.2008)
00:00:00.981 |W| HLE.OsThread.10 ServiceNv Wait: GPU processing thread is too slow, waiting on CPU...
00:00:01.983 |E| HLE.OsThread.10 Gpu WaitOnSyncpoint: Wait on syncpoint 1 for threshold 15 took more than 1000ms, resuming execution...
00:00:04.503 |E| .NET ThreadPool Worker [mvk-info] Created 3 swapchain images with initial size (2940, 1840) and contents scale 2.0 for screen Built-in Retina Display.
00:01:12.462 |E| .NET ThreadPool Worker [mvk-error] VK_ERROR_DEVICE_LOST: MTLCommandBuffer "vkQueueSubmit CommandBuffer on Queue 0-0" execution failed (code 9): Invalid Resource (00000009:kIOGPUCommandBufferCallbackErrorInvalidResource)
00:01:12.463 |E| Gpu UserCallback: VK_ERROR_DEVICE_LOST: MTLCommandBuffer "vkQueueSubmit CommandBuffer on Queue 0-0" execution failed (code 9): Invalid Resource (00000009:kIOGPUCommandBufferCallbackErrorInvalidResource)
00:01:12.463 |E| Gpu UserCallback: VK_ERROR_DEVICE_LOST: MTLCommandBuffer "vkQueueSubmit CommandBuffer on Queue 0-0" execution failed (code 9): Invalid Resource (00000009:kIOGPUCommandBufferCallbackErrorInvalidResource)
00:01:12.463 |E| Gpu UserCallback: VK_ERROR_DEVICE_LOST: MTLCommandBuffer "vkQueueSubmit CommandBuffer on Queue 0-0" execution failed (code 9): Invalid Resource (00000009:kIOGPUCommandBufferCallbackErrorInvalidResource)
00:01:12.463 |E| .NET ThreadPool Worker [mvk-error] VK_ERROR_DEVICE_LOST: MTLCommandBuffer "vkQueueSubmit CommandBuffer on Queue 0-0" execution failed (code 9): Invalid Resource (00000009:kIOGPUCommandBufferCallbackErrorInvalidResource)
00:01:12.463 |E| .NET ThreadPool Worker [mvk-error] VK_ERROR_DEVICE_LOST: MTLCommandBuffer "vkQueueSubmit CommandBuffer on Queue 0-0" execution failed (code 9): Invalid Resource (00000009:kIOGPUCommandBufferCallbackErrorInvalidResource)
00:01:12.463 |E| Gpu UserCallback: VK_ERROR_DEVICE_LOST: MTLCommandBuffer "vkQueueSubmit CommandBuffer on Queue 0-0" execution failed (code 9): Invalid Resource (00000009:kIOGPUCommandBufferCallbackErrorInvalidResource)
00:01:12.463 |E| .NET ThreadPool Worker [mvk-error] VK_ERROR_DEVICE_LOST: MTLCommandBuffer "vkQueueSubmit CommandBuffer on Queue 0-0" execution failed (code 9): Invalid Resource (00000009:kIOGPUCommandBufferCallbackErrorInvalidResource)
00:01:12.499 |E| GUI.RenderThread Application : Unhandled exception caught: Ryujinx.Graphics.Vulkan.VulkanException: Unexpected API error "ErrorDeviceLost".
   at Ryujinx.Graphics.Vulkan.CommandBufferPool.Return(CommandBufferScoped cbs, ReadOnlySpan`1 waitSemaphores, ReadOnlySpan`1 waitDstStageMask, ReadOnlySpan`1 signalSemaphores) in /Users/timezlicer/opt/Ryujinx/src/Ryujinx.Graphics.Vulkan/CommandBufferPool.cs:line 315
   at Ryujinx.Graphics.Vulkan.PipelineFull.FlushCommandsImpl() in /Users/timezlicer/opt/Ryujinx/src/Ryujinx.Graphics.Vulkan/PipelineFull.cs:line 219
   at Ryujinx.Graphics.GAL.Multithreading.CommandHelper.<>c.<InitLookup>b__5_1[T](Span`1 memory, ThreadedRenderer threaded, IRenderer renderer) in /Users/timezlicer/opt/Ryujinx/src/Ryujinx.Graphics.GAL/Multithreading/CommandHelper.cs:line 41
   at Ryujinx.Graphics.GAL.Multithreading.ThreadedRenderer.RenderLoop()
   at Ryujinx.Graphics.GAL.Multithreading.ThreadedRenderer.RunLoop(Action gpuLoop) in /Users/timezlicer/opt/Ryujinx/src/Ryujinx.Graphics.GAL/Multithreading/ThreadedRenderer.cs:line 115
   at Ryujinx.Ava.AppHost.RenderLoop() in /Users/timezlicer/opt/Ryujinx/src/Ryujinx.Ava/AppHost.cs:line 871
   at System.Threading.Thread.StartCallback()

Log file

Ryujinx_1.1.735-macos+250fc5137_2023-04-28_11-24-22.log

OS

macOS Ventura 13.3.1

Ryujinx version

1.1.735-macos+250fc5137

Game version

1.3.1

CPU

M2

GPU

M2

RAM

24GB

List of applied mods

No response

Additional context?

No response

@TimeZlicer TimeZlicer added the bug Something isn't working label Apr 22, 2023
AaronO added a commit to AaronO/Ryujinx that referenced this issue May 4, 2023
Command buffer errors currently trigger an exception "DeviceLost" crashing the process.

Looking at [MKV's code](https://github.com/KhronosGroup/MoltenVK/blob/53a4eb26f2fbd7322eb087eb4af263fe466543b0/MoltenVK/MoltenVK/GPUObjects/MVKQueue.mm#L392-L408) we observe that:
- It hard fails if error is:
  ```
   MTLCommandBufferErrorBlacklisted || MTLCommandBufferErrorNotPermitted || MTLCommandBufferErrorDeviceRemoved
   ```
- Otherwise fails conditionally if `config.resumeLostDevice == false` (current default)

For Ryujinx's use-case it's more graceful to resume on those errors rather than crashing the app, the error isn't totally silenced since `mvk` still logs it

Fixes Ryujinx#4704, Ryujinx#4575
@TimeZlicer
Copy link
Contributor Author

Tested #4800 on top of master fab11ba

config.ResumeLostDevice = true; appears to workaround the crash

Thanks!

@gdkchan
Copy link
Member

gdkchan commented May 6, 2023

Does the game actually render correctly (or at least good enough to be playable) with this change?

@TimeZlicer
Copy link
Contributor Author

Yes it is playable and I do not observe any new rendering issues (apart from what we already know about the audience)

AcK77 pushed a commit that referenced this issue May 10, 2023
Command buffer errors currently trigger an exception "DeviceLost" crashing the process.

Looking at [MKV's code](https://github.com/KhronosGroup/MoltenVK/blob/53a4eb26f2fbd7322eb087eb4af263fe466543b0/MoltenVK/MoltenVK/GPUObjects/MVKQueue.mm#L392-L408) we observe that:
- It hard fails if error is:
  ```
   MTLCommandBufferErrorBlacklisted || MTLCommandBufferErrorNotPermitted || MTLCommandBufferErrorDeviceRemoved
   ```
- Otherwise fails conditionally if `config.resumeLostDevice == false` (current default)

For Ryujinx's use-case it's more graceful to resume on those errors rather than crashing the app, the error isn't totally silenced since `mvk` still logs it

Fixes #4704, #4575
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working
Projects
None yet
Development

Successfully merging a pull request may close this issue.

2 participants