-
-
Notifications
You must be signed in to change notification settings - Fork 251
Closed
Labels
bugc: registerRegister classes, functions and other symbols to GDScriptRegister classes, functions and other symbols to GDScript
Milestone
Description
I'm trying to make an editor plugin:
use godot::engine::IEditorPlugin;
use godot::prelude::*;
#[derive(GodotClass)]
#[class(tool, editor_plugin, init, base=EditorPlugin)]
pub struct MyEditorPlugin {}
#[godot_api]
impl IEditorPlugin for MyEditorPlugin {
fn handles(&self, _: Gd<Object>) -> bool {
true
}
fn edit(&mut self, object: Gd<Object>) {}
}
For some reason object
's type is non-optional Gd<Object>
, but the documentation says:
object
can benull
if the plugin was editing an object, but there is no longer any selected object handled by this plugin. It can be used to cleanup editing state.
As a result, when no node is selected, Godot tries to call ._edit(null)
and crashes.
Backtrace if needed
thread '<unnamed>' panicked at /home/andreymal/.cargo/git/checkouts/gdext-76630c89719e160c/13ab375/godot-core/src/builtin/meta/signature.rs:450:5:
edit: parameter [0] has type godot_core::obj::gd::Gd<godot_core::gen::classes::object::re_export::Object>, which is unable to store argument "TODO"
stack backtrace:
0: 0x7fb90fde422c - std::backtrace_rs::backtrace::libunwind::trace::h67a838aed1f4d6ec
at /rustc/79e9716c980570bfd1f666e3b16ac583f0168962/library/std/src/../../backtrace/src/backtrace/libunwind.rs:93:5
1: 0x7fb90fde422c - std::backtrace_rs::backtrace::trace_unsynchronized::h1d1786bb1962baf8
at /rustc/79e9716c980570bfd1f666e3b16ac583f0168962/library/std/src/../../backtrace/src/backtrace/mod.rs:66:5
2: 0x7fb90fde422c - std::sys_common::backtrace::_print_fmt::h5a0b1f807a002d23
at /rustc/79e9716c980570bfd1f666e3b16ac583f0168962/library/std/src/sys_common/backtrace.rs:67:5
3: 0x7fb90fde422c - <std::sys_common::backtrace::_print::DisplayBacktrace as core::fmt::Display>::fmt::hf84ab6ad0b91784c
at /rustc/79e9716c980570bfd1f666e3b16ac583f0168962/library/std/src/sys_common/backtrace.rs:44:22
4: 0x7fb90fe07fec - core::fmt::rt::Argument::fmt::h28f463bd1fdabed5
at /rustc/79e9716c980570bfd1f666e3b16ac583f0168962/library/core/src/fmt/rt.rs:138:9
5: 0x7fb90fe07fec - core::fmt::write::ha37c23b175e921b3
at /rustc/79e9716c980570bfd1f666e3b16ac583f0168962/library/core/src/fmt/mod.rs:1114:21
6: 0x7fb90fde1ebe - std::io::Write::write_fmt::haa1b000741bcbbe1
at /rustc/79e9716c980570bfd1f666e3b16ac583f0168962/library/std/src/io/mod.rs:1763:15
7: 0x7fb90fde4014 - std::sys_common::backtrace::_print::h1ff1030b04dfb157
at /rustc/79e9716c980570bfd1f666e3b16ac583f0168962/library/std/src/sys_common/backtrace.rs:47:5
8: 0x7fb90fde4014 - std::sys_common::backtrace::print::hb982056c6f29541c
at /rustc/79e9716c980570bfd1f666e3b16ac583f0168962/library/std/src/sys_common/backtrace.rs:34:9
9: 0x7fb90fde5783 - std::panicking::default_hook::{{closure}}::h11f92f82c62fbd68
at /rustc/79e9716c980570bfd1f666e3b16ac583f0168962/library/std/src/panicking.rs:272:22
10: 0x7fb90fde54a4 - std::panicking::default_hook::hb8810fe276772c66
at /rustc/79e9716c980570bfd1f666e3b16ac583f0168962/library/std/src/panicking.rs:292:9
11: 0x7fb90fde5e81 - <alloc::boxed::Box<F,A> as core::ops::function::Fn<Args>>::call::h87b887549356728a
at /rustc/79e9716c980570bfd1f666e3b16ac583f0168962/library/alloc/src/boxed.rs:2021:9
12: 0x7fb90fde5e81 - std::panicking::rust_panic_with_hook::hd2f0efd2fec86cb0
at /rustc/79e9716c980570bfd1f666e3b16ac583f0168962/library/std/src/panicking.rs:735:13
13: 0x7fb90fde5c01 - std::panicking::begin_panic_handler::{{closure}}::h3651b7fc4f61d784
at /rustc/79e9716c980570bfd1f666e3b16ac583f0168962/library/std/src/panicking.rs:609:13
14: 0x7fb90fde4756 - std::sys_common::backtrace::__rust_end_short_backtrace::hbc468e4b98c7ae04
at /rustc/79e9716c980570bfd1f666e3b16ac583f0168962/library/std/src/sys_common/backtrace.rs:170:18
15: 0x7fb90fde5952 - rust_begin_unwind
at /rustc/79e9716c980570bfd1f666e3b16ac583f0168962/library/std/src/panicking.rs:597:5
16: 0x7fb90fc0ed25 - core::panicking::panic_fmt::h979245e2fdb2fabd
at /rustc/79e9716c980570bfd1f666e3b16ac583f0168962/library/core/src/panicking.rs:72:14
17: 0x7fb90fc370e0 - godot_core::builtin::meta::signature::param_error::h9e5e0410d0fe12c0
at /home/andreymal/.cargo/git/checkouts/gdext-76630c89719e160c/13ab375/godot-core/src/builtin/meta/signature.rs:450:5
18: 0x7fb90fc37b46 - godot_core::builtin::meta::signature::ptrcall_arg::{{closure}}::h3a978076abd52718
at /home/andreymal/.cargo/git/checkouts/gdext-76630c89719e160c/13ab375/godot-core/src/builtin/meta/signature.rs:430:41
19: 0x7fb90fc268dc - core::option::Option<T>::unwrap_or_else::h235c3edeffbe6d51
at /rustc/79e9716c980570bfd1f666e3b16ac583f0168962/library/core/src/option.rs:979:21
20: 0x7fb90fc37afc - godot_core::builtin::meta::signature::ptrcall_arg::hda9ba436188e0501
at /home/andreymal/.cargo/git/checkouts/gdext-76630c89719e160c/13ab375/godot-core/src/builtin/meta/signature.rs:430:5
21: 0x7fb90fc3d3fd - <(R,P0) as godot_core::builtin::meta::signature::PtrcallSignatureTuple>::in_ptrcall::hd190a75f79badd54
at /home/andreymal/.cargo/git/checkouts/gdext-76630c89719e160c/13ab375/godot-core/src/builtin/meta/signature.rs:272:30
22: 0x7fb90fc3612d - <my_project::MyEditorPlugin as godot_core::obj::traits::cap::ImplementsGodotVirtual>::__virtual_call::function::hbdcacccc161356a7
at /home/andreymal/projects/my_project/src/lib.rs:67:1
23: 0x55e9ee942dec - _ZN12EditorPlugin21_gdvirtual__edit_callILb0EEEbP6Object
at /usr/src/debug/godot/godot-4.1.3-stable/editor/editor_plugin.h:86:2
24: 0x55e9ee942dec - _ZN12EditorPlugin4editEP6Object
at /usr/src/debug/godot/godot-4.1.3-stable/editor/editor_plugin.cpp:320:2
25: 0x55e9ee8e6ac0 - _ZN10EditorNode19hide_unused_editorsEPK6Object
at /usr/src/debug/godot/godot-4.1.3-stable/editor/editor_node.cpp:2237:21
26: 0x55e9eec441b8 - _ZN13SceneTreeDock18_selection_changedEv
at /usr/src/debug/godot/godot-4.1.3-stable/editor/scene_tree_dock.cpp:2271:13
27: 0x55e9f1d4f25b - _ZN6Object12emit_signalpERK10StringNamePPK7Varianti
at /usr/src/debug/godot/godot-4.1.3-stable/core/object/object.cpp:1070:20
28: 0x55e9ef67df96 - _ZN6Object11emit_signalIJEEE5ErrorRK10StringNameDpT_
at /usr/src/debug/godot/godot-4.1.3-stable/./core/object/object.h:884:22
29: 0x55e9ef67df96 - _ZN15EditorSelection12_emit_changeEv
at /usr/src/debug/godot/godot-4.1.3-stable/editor/editor_data.cpp:1292:13
30: 0x55e9ed92430d - _Z29call_with_variant_args_helperI17__UnexistingClassJEJEEvPT_MS1_FvDpT0_EPPK7VariantRN8Callable9CallErrorE13IndexSequenceIJXspT1_EEE
at /usr/src/debug/godot/godot-4.1.3-stable/./core/variant/binder_common.h:303:25
31: 0x55e9ed92430d - _Z25call_with_variant_args_dvI17__UnexistingClassJEEvPT_MS1_FvDpT0_EPPK7VariantiRN8Callable9CallErrorERK6VectorIS7_E
at /usr/src/debug/godot/godot-4.1.3-stable/./core/variant/binder_common.h:450:31
32: 0x55e9ed92430d - _ZNK11MethodBindTIJEE4callEP6ObjectPPK7VariantiRN8Callable9CallErrorE
at /usr/src/debug/godot/godot-4.1.3-stable/./core/object/method_bind.h:331:28
33: 0x55e9f1d4527b - _ZN6Object5callpERK10StringNamePPK7VariantiRN8Callable9CallErrorE
at /usr/src/debug/godot/godot-4.1.3-stable/core/object/object.cpp:739:21
34: 0x55e9f1a5db9f - _ZNK8Callable5callpEPPK7VariantiRS0_RNS_9CallErrorE
at /usr/src/debug/godot/godot-4.1.3-stable/core/variant/callable.cpp:62:30
35: 0x55e9f1d3b930 - _ZN9CallQueue14_call_functionERK8CallablePK7Variantib
at /usr/src/debug/godot/godot-4.1.3-stable/core/object/message_queue.cpp:219:18
36: 0x55e9f1d3f0f0 - _ZN9CallQueue5flushEv
at /usr/src/debug/godot/godot-4.1.3-stable/core/object/message_queue.cpp:320:20
37: 0x55e9efb184fa - _ZN9SceneTree15physics_processEd
at /usr/src/debug/godot/godot-4.1.3-stable/scene/main/scene_tree.cpp:471:38
38: 0x55e9ed7f6c08 - _ZN4Main9iterationEv
at /usr/src/debug/godot/godot-4.1.3-stable/main/main.cpp:3390:60
39: 0x55e9ed780340 - _ZN11OS_LinuxBSD3runEv
at /usr/src/debug/godot/godot-4.1.3-stable/platform/linuxbsd/os_linuxbsd.cpp:912:22
40: 0x55e9ed76fc98 - main
at /usr/src/debug/godot/godot-4.1.3-stable/platform/linuxbsd/godot_linuxbsd.cpp:74:9
41: 0x7fb915358cd0 - <unknown>
42: 0x7fb915358d8a - __libc_start_main
43: 0x55e9ed77d255 - _start
44: 0x0 - <unknown>
fatal runtime error: failed to initiate panic, error 5
I don't know if this is a Godot bug or godot-rust bug, but since I ran into this issue during playing with Rust, I'm leaving this issue here.
fstxz, Mercerenies and ICEFIR
Metadata
Metadata
Assignees
Labels
bugc: registerRegister classes, functions and other symbols to GDScriptRegister classes, functions and other symbols to GDScript