godotengine / godotengine/godot
Queue_free()'ing a BoneAttachment3D in an exported build throws a signal error
- Dominant language
- C++
- Stars
- 117k
- Forks
- 26.8k
- PR merge metrics
- PR metrics pending
Description
### Tested versions
Tested in:
v4.1.1.stable.mono.official [bd6af8e0e]
v4.1.4.rc1.mono.official [b9008f3d5]
v4.2.stable.mono.official [46dc27791]
v4.2.1.stable.mono.official [b09f793f5]
v4.2.2.rc1.mono.official [c7fb0645a]
v4.3.dev2.mono.official [352434668]
### System information
Windows 10.0.22621 - Vulkan (Forward+) - dedicated NVIDIA GeForce RTX 3080 (NVIDIA; 31.0.15.3598) - 12th Gen Intel(R) Core(TM) i5-12600K (16 Threads)
### Issue description
In version 4.1.1 and 4.1.4, no error appears.
In version 4.2, 4.2.1, 4.2.2, and 4.3:
When a project is exported and a node containing a skeleton3D with a BoneAttachment3D is deleted from the tree with queue_free(), the following error consistently appears:
```
ERROR: Attempt to disconnect a nonexistent connection from 'Skeleton3D:'. Signal: 'bone_pose_changed', callable: ''.
at: (core/object/object.cpp:1420)
```
This error does not occur in the editor. Removing the BoneAttachment3D resolves the error.
### Steps to reproduce
1. Add a glb model containing a skeleton
2. Create an inherited scene from the imported model
3. Add a BoneAttachment3D node to the skeleton in that inherited scene
4. Instantiate the scene as a node
5. Queue_free() the node
### Minimal reproduction project (MRP)
[repro.zip](https://github.com/godotengine/godot/files/14119017/repro.zip)
Contributor guide
Research direction
Start with the linked repro.zip project and reproduce the error in an exported build by following the listed BoneAttachment3D and queue_free() steps; compare the result with the editor. Trace the Skeleton3D bone_pose_changed connection cleanup involved when the instantiated scene is deleted. Done means the exported project deletes the node without reporting a nonexistent signal connection.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- cpp
- Domain
- game-dev
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 35/100