Repository: godot
Issue: BoneAttachment3D signal error after re-set the external skeleton during gameplay
Labels: needs testing,topic:dotnet,topic:animation

### Tested versions

Reproductible in: v4.3.stable.mono.official [77dcf97d8]

### System information

Windows 10 Godot V4.3 Forward+

### Issue description

BoneAttachment3D signal error after re-set the external skeleton during gameplay.

The Script is pretty simple, just change the skeleton during gameplay using C# script. The game is keep running, but showing error about the Signal: ‘skeleton_updated’, callable: ‘BoneAttachment3D::on_skeleton_update’.

Here is full error note :
```
E 0:00:03:0261   NativeCalls.cs:366 @ void Godot.NativeCalls.godot_icall_1_41(nint, nint, Godot.NativeInterop.godot_bool): Attempt to disconnect a nonexistent connection from 'GeneralSkeleton:<Skeleton3D#63065556757>'. Signal: 'skeleton_updated', callable: 'BoneAttachment3D::on_skeleton_update'.
  <C++ Error>    Condition "signal_is_valid" is true. Returning: false
  <C++ Source>   core/object/object.cpp:1458 @ _disconnect()
  <Stack Trace>  NativeCalls.cs:366 @ void Godot.NativeCalls.godot_icall_1_41(nint, nint, Godot.NativeInterop.godot_bool)
                 BoneAttachment3D.cs:150 @ void Godot.BoneAttachment3D.SetUseExternalSkeleton(bool)
                 MechSelectionMenu.cs:65 @ void MechSelectionMenu.OnItemButtonPressed(string)
                 ItemSelectionButton_ScriptSignals.generated.cs:40 @ void ItemSelectionButton.RaiseGodotClassSignalCallbacks(Godot.NativeInterop.godot_string_name&, Godot.NativeInterop.NativeVariantPtrArgs)
                 ScriptManagerBridge.cs:455 @ void Godot.Bridge.ScriptManagerBridge.RaiseEventSignal(nint, Godot.NativeInterop.godot_string_name*, Godot.NativeInterop.godot_variant**, int, Godot.NativeInterop.godot_bool*)
                 Godot.NativeInterop.NativeFuncs.generated.cs:367 @ Godot.NativeInterop.godot_variant Godot.NativeInterop.NativeFuncs.godotsharp_method_bind_call(nint, nint, Godot.NativeInterop.godot_variant**, int, Godot.NativeInterop.godot_variant_call_error&)
                 NativeCalls.cs:7026 @ int Godot.NativeCalls.godot_icall_2_778(nint, nint, Godot.NativeInterop.godot_string_name, Godot.Variant[], Godot.NativeInterop.godot_string_name)
                 GodotObject.cs:638 @ Godot.Error Godot.GodotObject.EmitSignal(Godot.StringName, Godot.Variant[])
                 ItemSelectionButton.cs:26 @ void ItemSelectionButton.OnButtonPressed()
                 Callable.generics.cs:39 @ void Godot.Callable.<From>g__Trampoline|1_0(object, Godot.NativeInterop.NativeVariantPtrArgs, Godot.NativeInterop.godot_variant&)
                 DelegateUtils.cs:86 @ void Godot.DelegateUtils.InvokeWithVariantArgs(nint, System.Void*, Godot.NativeInterop.godot_variant**, int, Godot.NativeInterop.godot_variant*)
```

### Steps to reproduce

- .QueueFree() current skeleton and add new skeleton trough script.
- And reset the SetExternalSkeleton(NewSkeleton.GetPath()) at this point all still works fine, but the bone location is not updated to new skeleton
- The error comes when I run the function SetUseExternalSkeleton(true)

![image](https://github.com/user-attachments/assets/cdcb59dd-768e-4856-8a1a-99de388944bb)


### Minimal reproduction project (MRP)

I don't provide project because it is easy to replicate