godotengine / godotengine/godot

Queue_free()'ing a BoneAttachment3D in an exported build throws a signal error

Open
#87,804 6 comments 0 reactions 0 assignees View on GitHub
bug needs testing topic:export
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

Open the contributing 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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.