Open clayjohn opened 1 year ago
Should we force the engine to close in this situation, rather than trying to recreate the swapchain endlessly? As far as I know, there is no way to recover from this situation (not until the renderer can be restarted at run-time).
Also, the error message should be tweaked to indicate most likely causes (bugs in graphics drivers).
Should we force the engine to close in this situation, rather than trying to recreate the swapchain endlessly? As far as I know, there is no way to recover from this situation (not until the renderer can be restarted at run-time).
Also, the error message should be tweaked to indicate most likely causes (bugs in graphics drivers).
I'm not sure. First we need to investigate what is causing the error in the first place. Most of the impacted users report driver updates not resolving the issue for them. So it is more likely an issue on our end.
Popped up with beta 17. As long as you can't fix it/find what it is, I'd be happier if it tried to save my last open edits and crashed instead of an error spam.
My error lines are:
ERROR: Vulkan: Did not create swapchain successfully.
at: prepare_buffers (drivers/vulkan/vulkan_context.cpp:2267)
ERROR: Condition "err" is true. Returning: ERR_CANT_CREATE
at: swap_buffers (drivers/vulkan/vulkan_context.cpp:2344)
And the info message from the start of the editor:
Godot Engine v4.0.beta17.official.c40020513 - https://godotengine.org
Vulkan API 1.3.224 - Using Vulkan Device #0: NVIDIA - NVIDIA GeForce RTX 2060
As mentioned in #60755, I can help as I have 100% reproducible case (summary: launch editor, put computer to sleep, wake it up later, try to use any UI component => I got a "winner")
Feel free to give me some debug code to run, patched version of Godot with additional debug code, anything which could help. I'm still not convinced it could solve all cases users have encountered with all OSes & hardware involved but it could narrow it down at least.
For the record I have some older version of Visual Studio Community (latest is 2019) installed and never tried yet to compiled Godot from source, but I may give it a try if it could help.
As mentioned in #60755, I can help as I have 100% reproducible case (summary: launch editor, put computer to sleep, wake it up later, try to use any UI component => I got a "winner")
Yap, that is a good way to get it to happen. With beta 17 it sometimes happens, sometimes does not. (I can get the computer to go to sleep without it happening)
@InfiniteProductions @Frontrider That is great to hear!
We just merged a change that made it into RC1 that will provide more debug information on crash.
So could one of you test RC1 running from the command line, reproduce the crash and then tell me what it says? It should have error messages like in the original post here, except there should be an error code reported as well
@InfiniteProductions @Frontrider That is great to hear!
We just merged a change that made it into RC1 that will provide more debug information on crash.
So could one of you test RC1 running from the command line, reproduce the crash and then tell me what it says? It should have error messages like in the original post here, except there should be an error code reported as well
I start using this release, but (un)fortunately, the issue no longer occurred in the same scenario ! I'll try to test again with beta17 and post update here.
Could not reproduce so far, I can give more details in a few days.
@InfiniteProductions @Frontrider That is great to hear!
We just merged a change that made it into RC1 that will provide more debug information on crash.
So could one of you test RC1 running from the command line, reproduce the crash and then tell me what it says? It should have error messages like in the original post here, except there should be an error code reported as well
I just reproduced the issue on rc-1 after 48 minutes of engine usage. The message is different from the ones so far though.
Here is the error:
aarrgghh I just got one but console goes away with the editor when closing it ! It could be great to have a log file somewhere instead of this console OR keep it open. I'll try again later.
Getting this error in Godot 4 RC1 when trying to load the DM1-2 map in Liblast, https://libla.st/:
Godot Engine v4.0.rc1.official.8843d9ad3 - https://godotengine.org
Vulkan API 1.3.224 - Forward+ - Using Vulkan Device #0: NVIDIA - NVIDIA GeForce GTX 1050 Ti
E 0:00:33:0319 swap_buffers: Vulkan: Cannot submit graphics queue. Error code: VK_ERROR_DEVICE_LOST
<C++ Error> Condition "err" is true. Returning: ERR_CANT_CREATE
<C++ Source> drivers/vulkan/vulkan_context.cpp:2351 @ swap_buffers()
E 0:00:33:0324 prepare_buffers: Vulkan: Did not create swapchain successfully. Error code: VK_NOT_READY
<C++ Error> Condition "err != VK_SUCCESS" is true. Breaking.
<C++ Source> drivers/vulkan/vulkan_context.cpp:2274 @ prepare_buffers()
Using the same release:
$ Godot Engine v4.0.rc1.official.8843d9ad3 - https://godotengine.org OpenGL API 3.3.0 NVIDIA 425.31 - Compatibility - Using Device: NVIDIA Corporation - GeForce GTX 780M
I've got only these lines:
ERROR: Resources still in use at exit (run with --verbose for details). at: clear (core/io/resource.cpp:489) ERROR: Vulkan: Cannot submit graphics queue. Error code: VK_ERROR_DEVICE_LOST at: (drivers/vulkan/vulkan_context.cpp:2351) ERROR: Vulkan: Cannot submit graphics queue. Error code: VK_ERROR_DEVICE_LOST at: (drivers/vulkan/vulkan_context.cpp:2351) ERROR: Vulkan: Did not create swapchain successfully. Error code: VK_ERROR_VALIDATION_FAILED_EXT at: (drivers/vulkan/vulkan_context.cpp:2274) ERROR: Vulkan: Cannot submit graphics queue. Error code: VK_ERROR_DEVICE_LOST ... (infinite ? number of messages until Godot is closed) ... ERROR: Vulkan: Cannot submit graphics queue. Error code: VK_ERROR_DEVICE_LOST at: (drivers/vulkan/vulkan_context.cpp:2351) WARNING: Scan thread aborted... at: _notification (editor/editor_file_system.cpp:1224)
It doesn't looks like to be a "crash" as @clayjohn wrote. So no luck to get more debug info.
Same. I just got it. Editor was left open in the background, it was still rc1. I'll try to replicate on rc2.
ERROR: Vulkan: Did not create swapchain successfully. Error code: VK_NOT_READY
at: prepare_buffers (drivers/vulkan/vulkan_context.cpp:2274)
ERROR: Vulkan: Cannot submit graphics queue. Error code: VK_ERROR_DEVICE_LOST
at: swap_buffers (drivers/vulkan/vulkan_context.cpp:2351)
ERROR: Vulkan: Did not create swapchain successfully. Error code: VK_NOT_READY
at: prepare_buffers (drivers/vulkan/vulkan_context.cpp:2274)
ERROR: Vulkan: Cannot submit graphics queue. Error code: VK_ERROR_DEVICE_LOST
at: swap_buffers (drivers/vulkan/vulkan_context.cpp:2351)
ERROR: Vulkan: Did not create swapchain successfully. Error code: VK_NOT_READY
at: prepare_buffers (drivers/vulkan/vulkan_context.cpp:2274)
ERROR: Vulkan: Cannot submit graphics queue. Error code: VK_ERROR_DEVICE_LOST
at: swap_buffers (drivers/vulkan/vulkan_context.cpp:2351)
ERROR: Vulkan: Did not create swapchain successfully. Error code: VK_NOT_READY
at: prepare_buffers (drivers/vulkan/vulkan_context.cpp:2274)
ERROR: Vulkan: Cannot submit graphics queue. Error code: VK_ERROR_DEVICE_LOST
at: swap_buffers (drivers/vulkan/vulkan_context.cpp:2351)
ERROR: Vulkan: Did not create swapchain successfully. Error code: VK_NOT_READY
at: prepare_buffers (drivers/vulkan/vulkan_context.cpp:2274)
ERROR: Vulkan: Cannot submit graphics queue. Error code: VK_ERROR_DEVICE_LOST
at: swap_buffers (drivers/vulkan/vulkan_context.cpp:2351)
Try launching other full screen applications/games while godot is in the background. That might yield usable results.
I'm having this on RC2, interspersed with random gibberish
ERROR: Vulkan: Cannot submit graphics queue. Error code: VK_ERROR_DEVICE_LOST
at: (drivers/vulkan/vulkan_context.cpp:2351)
ERROR: Vulkan: Did not create swapchain successfully. Error code: VK_NOT_READY
at: (drivers/vulkan/vulkan_context.cpp:2274)
ERROR: Vulkan: Cannot submit graphics queue. Error code: VK_ERROR_DEVICE_LOST
at: (drivers/vulkan/vulkan_context.cpp:2351)
ERROR: Vulkan: Did not create swapchain successfully. Error code: VK_NOT_READY
at: (drivers/vulkan/vulkan_context.cpp:2274)
ERROR: Vulkan: Cannot submit graphics queue. Error code: VK_ERROR_DEVICE_LOST
at: (drivers/vulkan/vulkan_context.cpp:2351)
ERROR: Vulkan: Did not create swapchaEiRnR OsRu:c cVeuslskfaunl:l yD.i dE rnrootr ccroedaet:e VsKw_aNpOcTh_aiRnEA DsYu
cc e s saftu:l l(yd.r iEvrerrosr/ vcuoldkea:n /VvKu_lNkOaTn__RcEoAnDtYe
x t . captp:: 2(2d7r4i)v
ers/vulkan/vulkan_context.cpp:2274)
ERROR: Vulkan: Did not cErReRaOtRe: s wVauplckhaani:n Csauncncoets ssufbumlilty .g rEarprhoirc sc oqduee:u eV.K _ENrOre
: V Ka_tE:R R(OdRr_iDvEeVrIsC/Ev_uLlOkSaTn
/ v u lakta:n _(cdornitveexrts./cvpupl:k2a2n7/4v)u
lkan_context.cpp:2351)
ERROR: Vulkan: Did not create swapchain successfully. Error code: VK_NOT_READY
at: (drivers/vulkan/vulkan_context.cpp:2274)
ERROR: Vulkan: Cannot submit gErRaRpOhRi:c sV uqlukeaun:e. CEarnrnoort csoudbem:i tV Kg_rEaRpRhOiRc_sD EqVuIeCuEe_.L r
o r caotd:e :( dVrKi_vEeRrRsO/Rv_uDlEkVaInC/Ev_uLlOkSaTn
_ c o natte:x t(.dcrpipv:e2r3s5/1v)u
lkan/vulkan_context.cpp:2351)
ERROR: Vulkan: Did not create swapchain successfully. Error code: VK_NOT_READY
at: (drivers/vulkan/vulkan_context.cpp:2274)
I'm not sure if it makes any difference but i did switch from compatability to forward renderer, my project also makes heavy use of shaders, but runs absolutely fine in compatibility.
Windows 11, RTX 3060
Just got the error on rc5. Same game, left the editor open for a while in the background, then the screen was turned off. No sleep mode, no nothing.
Godot Engine v4.0.rc5.official.6296b4600 - https://godotengine.org
Vulkan API 1.3.224 - Forward+ - Using Vulkan Device #0: NVIDIA - NVIDIA GeForce RTX 2060
....
ERROR: Vulkan: Did not create swapchain successfully. Error code: VK_NOT_READY
at: prepare_buffers (drivers/vulkan/vulkan_context.cpp:2280)
ERROR: Vulkan: Cannot submit graphics queue. Error code: VK_ERROR_DEVICE_LOST
at: swap_buffers (drivers/vulkan/vulkan_context.cpp:2357)
ERROR: Vulkan: Did not create swapchain successfully. Error code: VK_NOT_READY
at: prepare_buffers (drivers/vulkan/vulkan_context.cpp:2280)
ERROR: Vulkan: Cannot submit graphics queue. Error code: VK_ERROR_DEVICE_LOST
at: swap_buffers (drivers/vulkan/vulkan_context.cpp:2357)
I'm getting this error suddenly with godot 4 final
Godot Engine v4.0.stable.official.92bee43ad - https://godotengine.org
LOG in xrCreateInstance: Instance created
createInfo->applicationInfo.applicationName: Godot XR Tools Demo
createInfo->applicationInfo.applicationVersion: 1
createInfo->applicationInfo.engineName: Godot Game Engine
createInfo->applicationInfo.engineVersion: 40000
appinfo.detected.engine.name: (null)
appinfo.detected.engine.version: 0.0.0
quirks.disable_vulkan_format_depth_stencil: false
LOG in xrCreateInstance: Selected devices
Head: 'Valve Index (libsurvive)'
Left: '<none>'
Right: '<none>'
Hand-Tracking Left: '<none>'
Hand-Tracking Right: '<none>'
OpenXR: Running on OpenXR runtime: Monado(XRT) by Collabora et al 'v21.0.0-2877-g5380b6c1' 21.0.0
OpenXR: XrGraphicsRequirementsVulkan2KHR:
Godot Engine v4.0.stable.official.92bee43ad - https://godotengine.org
LOG in xrCreateInstance: Instance created
createInfo->applicationInfo.applicationName: Godot XR Tools Demo
createInfo->applicationInfo.applicationVersion: 1
createInfo->applicationInfo.engineName: Godot Game Engine
createInfo->applicationInfo.engineVersion: 40000
appinfo.detected.engine.name: (null)
appinfo.detected.engine.version: 0.0.0
quirks.disable_vulkan_format_depth_stencil: false
LOG in xrCreateInstance: Selected devices
Head: 'Valve Index (libsurvive)'
Left: '<none>'
Right: '<none>'
Hand-Tracking Left: '<none>'
Hand-Tracking Right: '<none>'
OpenXR: Running on OpenXR runtime: Monado(XRT) by Collabora et al 'v21.0.0-2877-g5380b6c1' 21.0.0
OpenXR: XrGraphicsRequirementsVulkan2KHR:
- minApiVersionSupported: 1.0.0
- maxApiVersionSupported: 1023.1023.1023
LOG in xrCreateVulkanInstanceKHR: Creation of VkInstance:
result: VK_SUCCESS
vulkanInstance: 0x65d84c0
extensions:
VK_KHR_external_fence_capabilities
VK_KHR_external_memory_capabilities
VK_KHR_external_semaphore_capabilities
VK_KHR_get_physical_device_properties2
VK_KHR_surface
VK_KHR_xlib_surface
Vulkan API 1.3.230 - Forward+ - Using Vulkan Device #0: AMD - AMD Radeon RX 6900 XT (RADV NAVI21)
LOG in xrGetVulkanGraphicsDeviceKHR: Creation of VkDevice:
result: VK_SUCCESS
vulkanDevice: 0x66658f0
vulkanInstance: 0x65d84c0
external_fence_fd: true
external_semaphore_fd: true
timelineSemaphore: true
extensions:
VK_KHR_dedicated_allocation
VK_KHR_external_fence
VK_KHR_external_memory
VK_KHR_external_semaphore
VK_KHR_get_memory_requirements2
VK_KHR_external_memory_fd
VK_KHR_16bit_storage
VK_KHR_create_renderpass2
VK_KHR_fragment_shading_rate
VK_KHR_image_format_list
VK_KHR_incremental_present
VK_KHR_maintenance2
VK_KHR_multiview
VK_KHR_shader_float16_int8
VK_KHR_storage_buffer_storage_class
VK_KHR_swapchain
VK_KHR_external_semaphore_fd
VK_KHR_external_fence_fd
VK_KHR_timeline_semaphore
ERROR: Interface not found.
at: find_interface (servers/xr_server.cpp:224)
OpenXR: Configuring interface
ERROR: Condition "swapchainImageCount != sp_image_count" is true. Returning: ERR_BUG
at: _update_swap_chain (drivers/vulkan/vulkan_context.cpp:1980)
free(): double free detected in tcache 2
Aborted (core dumped)
For me this reproduces 100% reliably when I leave Godot on when I put my laptop to sleep. I get in an endless loop:
ERROR: Vulkan: Did not create swapchain successfully. Error code: VK_NOT_READY
at: prepare_buffers (drivers/vulkan/vulkan_context.cpp:2280)
ERROR: Vulkan: Cannot submit graphics queue. Error code: VK_ERROR_DEVICE_LOST
at: swap_buffers (drivers/vulkan/vulkan_context.cpp:2357)
OS: Linux (Arch Linux, up to date) GPU: NVidia (NVIDIA Corporation GA104GLM [RTX A3000 Mobile])
@speakk what distro? That might be another useful but of info.
Edited my post to add the distro.
Occurs to me also, on Windows 10, 1070 Ti, 2700X, latest drivers
The question is how could we debug this further, or is it coming from the driver rather then godot itself ?
The question is how could we debug this further, or is it coming from the driver rather then godot itself ?
Well, its difficult to say. We don't have clear reproducible cases yet. When this error occurs varies wildly between person to person. Some users get it consistently, others get it randomnly. For some it is fixed with a driver update, for others not.
My guess is that somewhere in the core Vulkan code we are doing something outside of the Vulkan specification which results in the device getting lost. The trouble is very few contributors have the deep knowledge about Vulkan required to debug this, further very few people are able to reproduce it, which makes it even harder to debug.
Edit: To add to this, if you can reliably reproduce the issue, please try running your application from the command line and using the --gpu-validation
and --verbose
command line arguments. Run the project directly, do not go through the project manager.
I'm having this on RC2, interspersed with random gibberish
Further to this, the project runs without issue (although the framerate is terrible, which is expected) on an i5 with a GT730 (just about does Vulkan) Also, other projects run without error (Reflection test, various demos) on both systems. In my case at least i'm inclined to say its something project specific, thats potentially implemented differently on the different Vulkan APIs (RTX 3060 is on 1.3.236, GT 730 is on 1.2.175)
The question is how could we debug this further, or is it coming from the driver rather then godot itself ?
Well, its difficult to say. We don't have clear reproducible cases yet. When this error occurs varies wildly between person to person. Some users get it consistently, others get it randomnly. For some it is fixed with a driver update, for others not.
My guess is that somewhere in the core Vulkan code we are doing something outside of the Vulkan specification which results in the device getting lost. The trouble is very few contributors have the deep knowledge about Vulkan required to debug this, further very few people are able to reproduce it, which makes it even harder to debug.
If that possible, it would be great to have a dedicated build which include as much as possible debug code near the suspected calls so people like me who have the issue can provide useful, I hope, data. It's likely possible the issue comes both a wrong way to deal with Vulkan (in some poorly, badly or even not documented area) and drivers issue(s).
Edit: To add to this, if you can reliably reproduce the issue, please try running your application from the command line and using the
--gpu-validation
and--verbose
command line arguments. Run the project directly, do not go through the project manager.
Not sure if the last statement is relevant as the issue occurred when I use Godot basically without worrying on how it is launched. I'll try this and report what I've got.
Not sure if the last statement is relevant as the issue occurred when I use Godot basically without worrying on how it is launched. I'll try this and report what I've got.
It's just to ensure the command line argument is applied to your running game. Sometimes command line arguments get lost between the project manager and launching the game.
I'm also getting this error randomly with the TPS demo:
Godot Engine v4.0.stable.official.92bee43ad - https://godotengine.org
Vulkan API 1.3.237 - Forward+ - Using Vulkan Device #0: AMD - AMD Radeon RX 5700
ERROR: Vulkan: Did not create swapchain successfully. Error code: VK_ERROR_DEVICE_LOST
at: (drivers/vulkan/vulkan_context.cpp:2280)
ERROR: Vulkan: Cannot submit graphics queue. Error code: VK_ERROR_DEVICE_LOST
at: (drivers/vulkan/vulkan_context.cpp:2357)
ERROR: Condition "err" is true. Returning: ERR_CANT_CREATE
at: _update_swap_chain (drivers/vulkan/vulkan_context.cpp:1970)
ERROR: Condition "err" is true. Returning: ERR_CANT_CREATE
at: _update_swap_chain (drivers/vulkan/vulkan_c
Process terminated
I tried to debug this error with the Graphics Flight Recorder (GFR) vulkan layer. The GFR log doesn't include the shader names, so I couldn't make much sense of it. gfr.log ~12 MB
Using options given by @clayjohn, I've got interesting data:
ERROR: Vulkan: Cannot submit graphics queue. Error code: VK_ERROR_DEVICE_LOST at: (drivers/vulkan/vulkan_context.cpp:2357) ERROR: Vulkan: Cannot submit graphics queue. Error code: VK_ERROR_DEVICE_LOST at: (drivers/vulkan/vulkan_context.cpp:2357) ERROR: VALIDATION - Message Id Number: 3 | Message Id Name: NVIDIA vkAcquireNextImageKHR: An attempt was made to acquire an image when the maximum number of images are already acquired. Objects - 1 Object[0] - VK_OBJECT_TYPE_SWAPCHAIN_KHR, Handle 217431760 at: _debug_messenger_callback (drivers/vulkan/vulkan_context.cpp:267) ERROR: Vulkan: Did not create swapchain successfully. Error code: VK_ERROR_VALIDATION_FAILED_EXT at: (drivers/vulkan/vulkan_context.cpp:2280) ERROR: Vulkan: Cannot submit graphics queue. Error code: VK_ERROR_DEVICE_LOST at: (drivers/vulkan/vulkan_context.cpp:2357) ERROR: VALIDATION - Message Id Number: 3 | Message Id Name: NVIDIA vkAcquireNextImageKHR: An attempt was made to acquire an image when the maximum number of images are already acquired. Objects - 1 Object[0] - VK_OBJECT_TYPE_SWAPCHAIN_KHR, Handle 217431760
There are tons of these message written until I close Godot. Test was conducted using stable release and 3D\lights_and_shadows demo.
The init contains (it appears two times, here is the second, the first is mostly identical) :
WARNING: GENERAL - Message Id Number: 0 | Message Id Name: Loader Message loaderAddLayerProperties: 'layers' tag not supported until file version 1.0.1, but C:\ProgramData\GOG.com\Galaxy\redists\overlay\injected\galaxy_overlay_vklayer_x64.json is reporting version = Objects - 1
I don't know why it reference some content from GOG Galaxy program there.
Object[0] - VK_OBJECT_TYPE_INSTANCE, Handle 50261856 at: _debug_messenger_callback (drivers/vulkan/vulkan_context.cpp:264)
WARNING: GENERAL - Message Id Number: 0 | Message Id Name: Loader Message ReadDataFilesInRegistry: Registry lookup failed to get layer manifest files. Objects - 1 Object[0] - VK_OBJECT_TYPE_INSTANCE, Handle 50261856 at: _debug_messenger_callback (drivers/vulkan/vulkan_context.cpp:264) Vulkan devices:
0: NVIDIA GeForce GTX 780M - Supported, Discrete
Vulkan API 1.1.95 - Forward+ - Using Vulkan Device #0: NVIDIA - GeForce GTX 780M Optional extension VK_KHR_fragment_shading_rate not found Optional extension VK_KHR_incremental_present not found Optional extension VK_GOOGLE_display_timing not found
- Vulkan Variable Rate Shading not supported
- Vulkan multiview supported: max view count: 32 max instances: 134217727
- Vulkan subgroup: size: 32 stages: STAGE_VERTEX, STAGE_TESSELLATION_CONTROL, STAGE_TESSELLATION_EVALUATION, STAGE_GEOMETRY, STAGE_FRAGMENT, STAGE_COMPUTE supported ops: FEATURE_BASIC, FEATURE_VOTE, FEATURE_ARITHMETIC, FEATURE_BALLOT, FEATURE_SHUFFLE, FEATURE_SHUFFLE_RELATIVE, FEATURE_CLUSTERED, FEATURE_QUAD, FEATURE_PARTITIONED_NV quad operations in all stages Using "" pen tablet driver... Creating VMA small objects pool for memory type index 8 Creating VMA small objects pool for memory type index 7
In the meantime for anyone who might be looking for a solution to use Godot without this issue occurring, you can launch Godot with this command --rendering-driver opengl3 from the terminal
Not sure if it is related, but I see this error consistently when I have the Driver set to Multi-Threaded and I move the game window between monitors. This is on various Linux Wayland (and maybe X11) desktops across AMD, Nvidia and Intel. Haven't tried it on Windows.
swap_buffers: Error code: VK_ERROR_DEVICE_LOST
<C++ Error> Condition "err" is true. Returning: ERR_CANT_CREATE
<C++ Source> drivers/vulkan/vulkan_context.cpp:2504 @ swap_buffers()
I set Escape to get_tree().quit() through my player script for testing, and if I try to exit the project test window using that button godot completely freezes and the console just spams these 4 lines:
ERROR: Vulkan: Did not create swapchain successfully. Error code: VK_NOT_READY at: prepare_buffers (drivers/vulkan/vulkan_context.cpp:2280) ERROR: Vulkan: Cannot submit graphics queue. Error code: VK_ERROR_DEVICE_LOST at: swap_buffers (drivers/vulkan/vulkan_context.cpp:2357)
I'm not sure if this helps anyone at all in fixing this for others, I can bypass it myself for now just hitting stop in godot itself but figured I would report what happened.
Edit: It seems to do it sometimes when I set different advanced settings under rendering in project settings, and when trying to bake a VoxelGI.
This stopped occurring for me recently. No idea why, steps I took before this is that I launched godot a few times with --rendering-driver opengl3 from the terminal and had a windows update, that's it.
This stopped occurring for me recently. No idea why, steps I took before this is that I launched godot a few times with --rendering-driver opengl3 from the terminal and had a windows update, that's it.
This didn't seem to change anything, though now I'm unable to open my project due to a message_queue error...I'm sure that's unrelated though.
I encountered this issue but I believe it was the software I was running.
When running Godot_v4.0.1-stable_mono_win64 was consistently getting: within 30 seconds or so of launching.
Switching to "Compatibility" render stopped this behavior.
Interestingly, entirely disconnecting my other monitors increased the time until this happened consistently by about a minute.
I was stopping various processes and realized the swapchain error stopped occuring after I killed Rivatuner. I could then consistently get this error to occur by simply starting Rivatuner and then rebooting godot in forward rendering mode.
Digging further the specific setting that seemed to trigger the consistent swap issue was: (Note: toggling this option while godot is running results in an abrupt crash)
For those encountering this issue: Maybe there is some app that is trying to draw an overlay over godot or similarly access / inject into your instance?
Hopefully this is at least a little helpful
It's a Vulkan error, obviously switching to "Compatibility" which doesn't use Vulkan stops the error.
See https://github.com/godotengine/godot/pull/71515#issuecomment-1416278715. RTSS is supposed to be forcibly disabled in the editor, but the override isn't working for some reason.
FYI, I'm experiencing the issue on Ubuntu 22.04 (with RTX 2060) upon waking up from system suspend (didn't try hibernation).
FYI, I'm experiencing the issue on Ubuntu 22.04 (with RTX 2060) upon waking up from system suspend (didn't try hibernation).
The suspend issue is being tracked in https://github.com/godotengine/godot/issues/52738.
I have the same issue for quite a while now on Win10 with a GTX 770. It has up-to-date drivers and I also tried the 2 previous drivers. Happens for all of them.
The error occurs in larger 2D scenes when zoomed out in the editor but as far as I can tell randomly. I tried to hide nodes with certain shaders or large tilemaps but found no way to reproduce it 100% certainly.
Note that excactly the same project works fine on my other machine with an RTX 3070 and Win11.
I do not use any overlay I am aware of on the 770 machine. Should I try to kill some background processes? The machine is quite old and might have something silently running in the background thats interfering.
Godot version is 4.0.2 on both machines btw.
I tested an exported game with some friends. It failed on some machines and worked on others.
The intel laptop eventually worked after restarting enough times (performance was poor but that wasn't surprising). The Win10 1080 was restarted 4 times and never succeeded.
I can find out everyone's driver versions if that's helpful.
Logs from the 1080:
Godot Engine v4.0.2.stable.custom_build.7a0977ce2 - https://godotengine.org
Vulkan API 1.3.236 - Forward+ - Using Vulkan Device #0: NVIDIA - NVIDIA GeForce GTX 1080
USER ERROR: Vulkan: Cannot submit graphics queue. Error code: VK_ERROR_DEVICE_LOST
at: VulkanContext::swap_buffers (drivers\vulkan\vulkan_context.cpp:2357)
USER ERROR: Vulkan: Cannot submit graphics queue. Error code: VK_ERROR_DEVICE_LOST
at: VulkanContext::swap_buffers (drivers\vulkan\vulkan_context.cpp:2357)
USER ERROR: Vulkan: Did not create swapchain successfully. Error code: VK_NOT_READY
at: VulkanContext::prepare_buffers (drivers\vulkan\vulkan_context.cpp:2280)
USER ERROR: Vulkan: Cannot submit graphics queue. Error code: VK_ERROR_DEVICE_LOST
at: VulkanContext::swap_buffers (drivers\vulkan\vulkan_context.cpp:2357)
I'm getting the same error (Manjaro Linux, RTX 3060). At first I thought it was completely random, but for me it's more likely to happen the more objects are visible (working on a game with a pretty large map). So I played with the settings and found that increasing "Max Clustered Elements" in the project settings seems to fix it. So maybe one possible cause for the crash is when it hits that limit?
I increased Max Clustered Elements from 512 to 2048 and 4096. It didn't seem to help. I can repro with this example: example.zip
I'm testing on a laptop with Intel(R) HD Graphics 530
driver version 1.2.99
. I can repro much more consistently if I'm unplugged from power (running on battery).
Here's what I got with godot --verbose --gpu-validate --gpu-abort scenes/maps/Halls.tscn
:
Interesting excerpts:
ERROR: GENERAL - Message Id Number: 0 | Message Id Name: ../mesa-23.0.1/src/intel/vulkan/anv_device.c:3868
GPU hung on one of our command buffers (VK_ERROR_DEVICE_LOST)
Objects - 1
Object[0] - VK_OBJECT_TYPE_DEVICE, Handle 94613752137888
at: _debug_messenger_callback (drivers/vulkan/vulkan_context.cpp:267)
ERROR: Crashing, because abort on GPU errors is enabled.
at: _debug_messenger_callback (drivers/vulkan/vulkan_context.cpp:268)
================================================================
handle_crash: Program crashed with signal 4
Engine version: Godot Engine v4.0.2.stable.custom_build (7a0977ce2c558fe6219f0a14f8bd4d05aea8f019)
Dumping the backtrace. Please include this when reporting the bug to the project developer.
[1] /usr/lib/libc.so.6(+0x38f50) [0x7fec169d3f50] (??:0)
[2] /home/rcorre/src/godot/bin/godot.linuxbsd.editor.x86_64(+0x5a12bc) [0x560cf26872bc] (/home/rcorre/src/godot/drivers/vulkan/vulkan_context.cpp:268 (discriminator 6))
[3] /usr/lib/libvulkan_intel.so(+0x2079a4) [0x7fec10c079a4] (??:0)
[4] /usr/lib/libvulkan_intel.so(+0x20ec50) [0x7fec10c0ec50] (??:0)
[5] /usr/lib/libvulkan_intel.so(+0x20f33d) [0x7fec10c0f33d] (??:0)
[6] /usr/lib/libvulkan_intel.so(+0x2105e3) [0x7fec10c105e3] (??:0)
[7] /usr/lib/libvulkan_intel.so(+0x210875) [0x7fec10c10875] (??:0)
[8] /home/rcorre/src/godot/bin/godot.linuxbsd.editor.x86_64(+0x1d2b094) [0x560cf3e11094] (/home/rcorre/src/godot/drivers/vulkan/vulkan_context.cpp:2251)
[9] /home/rcorre/src/godot/bin/godot.linuxbsd.editor.x86_64(+0x1ccb291) [0x560cf3db1291] (/home/rcorre/src/godot/drivers/vulkan/rendering_device_vulkan.cpp:8746)
[10] /home/rcorre/src/godot/bin/godot.linuxbsd.editor.x86_64(+0x410042a) [0x560cf61e642a] (/home/rcorre/src/godot/./core/templates/hash_map.h:456)
[11] /home/rcorre/src/godot/bin/godot.linuxbsd.editor.x86_64(+0x415dcec) [0x560cf6243cec] (/home/rcorre/src/godot/servers/rendering/rendering_server_default.cpp:92)
[12] /home/rcorre/src/godot/bin/godot.linuxbsd.editor.x86_64(+0xbd7bcb) [0x560cf2cbdbcb] (/home/rcorre/src/godot/main/main.cpp:3185)
[13] /home/rcorre/src/godot/bin/godot.linuxbsd.editor.x86_64(+0xb6c291) [0x560cf2c52291] (/home/rcorre/src/godot/platform/linuxbsd/os_linuxbsd.cpp:889)
[14] /home/rcorre/src/godot/bin/godot.linuxbsd.editor.x86_64(+0xb5e1f9) [0x560cf2c441f9] (/home/rcorre/src/godot/platform/linuxbsd/godot_linuxbsd.cpp:75)
[15] /usr/lib/libc.so.6(+0x23790) [0x7fec169be790] (??:0)
[16] /usr/lib/libc.so.6(__libc_start_main+0x8a) [0x7fec169be84a] (??:0)
[17] /home/rcorre/src/godot/bin/godot.linuxbsd.editor.x86_64(+0xb6a425) [0x560cf2c50425] (??:?)
-- END OF BACKTRACE --
================================================================
dmesg
:
[ 236.539011] Asynchronous wait on fence 0000:00:02.0:sway[803]:344 timed out (hint:intel_atomic_commit_ready [i915])
[ 246.241256] Fence expiration time out i915-0000:00:02.0:editor[1348]:4ae!
[ 246.241285] Fence expiration time out i915-0000:00:02.0:editor[1348]:4ac!
[ 246.242386] Fence expiration time out i915-0000:00:02.0:sway[803]:344!
[ 246.248215] Fence expiration time out i915-0000:00:02.0:editor[1348]:4b2!
[ 246.248227] Fence expiration time out i915-0000:00:02.0:editor[1348]:4b0!
[ 246.254022] i915 0000:00:02.0: [drm] Resetting rcs0 for preemption time out
[ 246.254103] i915 0000:00:02.0: [drm] editor[1348] context reset due to GPU hang
[ 246.571945] i915 0000:00:02.0: [drm] GPU HANG: ecode 9:1:8ed9fff2, in editor [1348]
My friend on Windows with the GTX 1080 tried running with --gpu-validate --gpu-abort
and got:
ERROR: GENERAL - Message Id Number: 0 | Message Id Name: Loader Message
loader_add_layer_properties: Multiple 'layer' nodes are deprecated starting in file version "1.0.1". Please use 'layers' : [] array instead in C:\ProgramData\GOG.com\Galaxy\redists\overlay\injected\galaxy_overlay_vklayer_x64.json.
Objects - 1
Object[0] - VK_OBJECT_TYPE_INSTANCE, Handle 2795923793120
at: VulkanContext::_debug_messenger_callback (drivers\vulkan\vulkan_context.cpp:267)
ERROR: Crashing, because abort on GPU errors is enabled.
at: (drivers\vulkan\vulkan_context.cpp:269)
I have no idea where GOG is coming from. We couldn't see any GoG processes running, and we tried uninstalling GoG and deleting that folder, but still get the same error.
With 4.1-dev1 release, I no longer have the issue, I was able to put computer to sleep and resume many times without any trouble. But I can't be sure the update alone fix it.
I'm getting the same error (Manjaro Linux, RTX 3060). At first I thought it was completely random, but for me it's more likely to happen the more objects are visible (working on a game with a pretty large map). So I played with the settings and found that increasing "Max Clustered Elements" in the project settings seems to fix it. So maybe one possible cause for the crash is when it hits that limit?
This is an unrelated issue: https://github.com/godotengine/godot/issues/56657
At this point I am becoming increasingly confident that the issue comes from improper synchronization in the RenderingDevice. It seems like the issue is more common on weaker hardware which would make GPU tasks take longer. This would also explain why for some users the issue only happens when they add slightly more complexity to a particular shader.
We probably need to do a careful audit of how we use synchronization primitives in the RenderingDevice to ensure that nothing is slipping through
Here is my error log, error occurs pretty much anytime I try to use or do anything in the editor, it consistently freezes upon saving with ctrl-s
@Minecraftkixx Are you running with some sort of overlay enabled (like the Steam Overlay, or MangoHUD, or the RTSS overlay)? The OpenGL error you are getting isn't coming from the Godot codebase, it looks like another process is injecting OpenGL/Vulkan code that might be causing issues for you.
At this point I am becoming increasingly confident that the issue comes from improper synchronization in the RenderingDevice
I tried to run under TSAN, but it seems like the proprietary NVidia driver (which are the only ones that support my GPU right now :disappointed: ) somehow injects itself into the thread before TSAN and causes TSAN to crash:
@Minecraftkixx Are you running with some sort of overlay enabled (like the Steam Overlay, or MangoHUD, or the RTSS overlay)? The OpenGL error you are getting isn't coming from the Godot codebase, it looks like another process is injecting OpenGL/Vulkan code that might be causing issues for you.
It’s possible, I use the MSI afterburner overlay, I’ll try disabling when I get home from work
I can reproduce this spam:
ERROR: Vulkan: Cannot submit graphics queue. Error code: VK_ERROR_DEVICE_LOST
at: (drivers/vulkan/vulkan_context.cpp:2357)
ERROR: Vulkan: Did not create swapchain successfully. Error code: VK_NOT_READY
at: (drivers/vulkan/vulkan_context.cpp:2280)
and crash reliably on 1050Ti by not having the editor update for 25-30s and then doing so. However, If the editor is set to update_continuously
, I am unable to crash Godot in this fashion. I've used it as a temporary solution for now and I'd urge others to try as well.
Godot version
4.0 beta14 and earlier and likely later
System information
Most users are on Windows, some on Linux, variety of GPUs (intel, nVidia and AMD)
Issue description
I am opening this tracker issue as a central place to track a bug that seems to be plaguing a variety of users. The bug occurs quite randomly, but appears to be most often connecting with complex shaders and/or updating uniforms.
The bug leads to a freeze or crash when updating swap buffers along with the following errors:
For some users these errors spam the console while the engine itself is frozen.
This issue is very difficult to debug as it is near impossible to reproduce reliably for people other than the affected users.
Steps to reproduce
Steps to reproduce can be found in individual reports
Minimal reproduction project
See individual reports