You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
I believe this is a race condition between GodotObjectDispose and load_threaded_request but I'm not certain.
Very rarely on a scene transition where a new scene with C# scripts is loaded in the background using load_threaded_request, while simultaneously 1 or more Nodes with C# scripts has been QueueFree()'d from the SceneTree, the project will deadlock.
A GodotObject calling Dispose (one of the nodes that had QueueFree called) will block on removing the attached C# script, while the new scene that is being loaded in the background will block on creating a new C# script.
The call stack for all threads looks like:
Steps to reproduce
The following is a hypothesis because I'm having trouble narrowing this down.
I'm mostly working off the stack trace above and looking at what my code is doing during the scene transition, but it's possible that the actual issue is caused by something entirely unrelated.
Create a "scene container" master scene.
Create a function to transition scenes -- QueueFree() the current scene node, load_threaded_request the new scene, and then Instantiate + AddChild when the threaded request is complete.
Using two scenes that both have Nodes with C# scripts attached, transition repeatedly between the scenes.
Rarely the entire application will permanently deadlock during the transition on the stack trace shown above.
Minimal reproduction project (MRP)
N/A (I haven't figured out the MRP steps yet)
The text was updated successfully, but these errors were encountered:
Tested versions
System information
Godot v4.2.stable.mono - Windows 10.0.19045 - Vulkan (Forward+) - dedicated NVIDIA GeForce RTX 3080 (NVIDIA; 31.0.15.3667) - AMD Ryzen 7 5800X 8-Core Processor (16 Threads)
Issue description
I believe this is a race condition between
GodotObject
Dispose
andload_threaded_request
but I'm not certain.Very rarely on a scene transition where a new scene with C# scripts is loaded in the background using
load_threaded_request
, while simultaneously 1 or more Nodes with C# scripts has beenQueueFree()
'd from theSceneTree
, the project will deadlock.A
GodotObject
callingDispose
(one of the nodes that hadQueueFree
called) will block on removing the attached C# script, while the new scene that is being loaded in the background will block on creating a new C# script.The call stack for all threads looks like:
Steps to reproduce
The following is a hypothesis because I'm having trouble narrowing this down.
I'm mostly working off the stack trace above and looking at what my code is doing during the scene transition, but it's possible that the actual issue is caused by something entirely unrelated.
QueueFree()
the current scene node,load_threaded_request
the new scene, and thenInstantiate
+AddChild
when the threaded request is complete.Minimal reproduction project (MRP)
N/A (I haven't figured out the MRP steps yet)
The text was updated successfully, but these errors were encountered: