godot: Crash when setting exported variable with setter with deferred call to a method with a script error

Godot version

4.0.alpha3

System information

Fedora 35, Intel GPU

Issue description

Backtrace:

================================================================
handle_crash: Program crashed with signal 11
Engine version: Godot Engine v4.0.alpha3.official (256069eaf00be2340259f896695014d92b1e22ed)
Dumping the backtrace. Please include this when reporting the bug on https://github.com/godotengine/godot/issues
[1] /lib64/libc.so.6(+0x42750) [0x7f0ad9e01750] (??:0)
[2] /Depot/Applications/Godot/Godot_v4.0-alpha3_linux.64() [0x3eae085] (??:0)
[3] /Depot/Applications/Godot/Godot_v4.0-alpha3_linux.64() [0x40a3874] (??:0)
[4] /Depot/Applications/Godot/Godot_v4.0-alpha3_linux.64() [0x40a4d51] (??:0)
[5] /Depot/Applications/Godot/Godot_v4.0-alpha3_linux.64() [0x40b499c] (??:0)
[6] /Depot/Applications/Godot/Godot_v4.0-alpha3_linux.64() [0x292e1b8] (??:0)
[7] /Depot/Applications/Godot/Godot_v4.0-alpha3_linux.64() [0x2a542b8] (??:0)
[8] /Depot/Applications/Godot/Godot_v4.0-alpha3_linux.64() [0x1bb68d6] (??:0)
[9] /Depot/Applications/Godot/Godot_v4.0-alpha3_linux.64() [0x407c85b] (??:0)
[10] /Depot/Applications/Godot/Godot_v4.0-alpha3_linux.64() [0x40a4d14] (??:0)
[11] /Depot/Applications/Godot/Godot_v4.0-alpha3_linux.64() [0x40b4832] (??:0)
[12] /Depot/Applications/Godot/Godot_v4.0-alpha3_linux.64() [0x403e51d] (??:0)
[13] /Depot/Applications/Godot/Godot_v4.0-alpha3_linux.64() [0x16f97be] (??:0)
[14] /Depot/Applications/Godot/Godot_v4.0-alpha3_linux.64() [0x15ec158] (??:0)
[15] /Depot/Applications/Godot/Godot_v4.0-alpha3_linux.64() [0x40465f8] (??:0)
[16] /Depot/Applications/Godot/Godot_v4.0-alpha3_linux.64() [0x3ef7a1a] (??:0)
[17] /Depot/Applications/Godot/Godot_v4.0-alpha3_linux.64() [0x16f96ea] (??:0)
[18] /Depot/Applications/Godot/Godot_v4.0-alpha3_linux.64() [0x15ec158] (??:0)
[19] /Depot/Applications/Godot/Godot_v4.0-alpha3_linux.64() [0x40465f8] (??:0)
[20] /Depot/Applications/Godot/Godot_v4.0-alpha3_linux.64() [0x3ed0c44] (??:0)
[21] /Depot/Applications/Godot/Godot_v4.0-alpha3_linux.64() [0x4537005] (??:0)
[22] /Depot/Applications/Godot/Godot_v4.0-alpha3_linux.64() [0x40aa007] (??:0)
[23] /Depot/Applications/Godot/Godot_v4.0-alpha3_linux.64() [0x298792b] (??:0)
[24] /Depot/Applications/Godot/Godot_v4.0-alpha3_linux.64() [0xdea8e6] (??:0)
[25] /Depot/Applications/Godot/Godot_v4.0-alpha3_linux.64() [0xd8cf61] (??:0)
[26] /lib64/libc.so.6(+0x2d560) [0x7f0ad9dec560] (??:0)
[27] /lib64/libc.so.6(__libc_start_main+0x7c) [0x7f0ad9dec60c] (??:0)
[28] /Depot/Applications/Godot/Godot_v4.0-alpha3_linux.64() [0xda685e] (??:0)
-- END OF BACKTRACE --
================================================================

Steps to reproduce

It’s very hard for me to isolate what triggered this. I am just trying to convert a game from Godot 3.x to 4.0 and tackling issues one by one. At one point Godot just starting crashing every time.

By the way, it seems like there are no debug symbols in the Godot alpha builds.

Minimal reproduction project

Bugsquad edit: MRP in https://github.com/godotengine/godot/issues/58468#issuecomment-1050080202

About this issue

  • Original URL
  • State: open
  • Created 2 years ago
  • Comments: 16 (7 by maintainers)

Most upvoted comments

Good-ish news – I have isolated the one file that causes the crash. Here’s a project:

crash.zip

Nevermind, didn’t need to disable it:

Thread 1 "godot.linuxbsd." received signal SIGSEGV, Segmentation fault.
Callable::get_object (this=this@entry=0x7fffe9492020) at core/variant/callable.cpp:100
100			return ObjectDB::get_instance(custom->get_object());
(gdb) bt
#0  Callable::get_object (this=this@entry=0x7fffe9492020) at core/variant/callable.cpp:100
#1  0x00000000043da144 in MessageQueue::statistics (this=0x754ba80) at core/object/message_queue.cpp:183
#2  0x00000000043dc065 in MessageQueue::push_callable (this=0x754ba80, p_callable=..., p_args=0x7fffffffc460, p_argcount=0, p_show_error=<optimized out>)
    at core/object/message_queue.cpp:135
#3  0x00000000043dc25c in MessageQueue::push_call (p_show_error=false, p_argcount=0, p_args=0x7fffffffc460, p_method=..., p_id=..., this=0x754ba80)
    at core/object/message_queue.cpp:44
#4  MessageQueue::push_call (this=0x754ba80, p_id=..., p_method=..., p_arg1=..., p_arg2=..., p_arg3=..., p_arg4=..., p_arg5=..., p_arg6=..., p_arg7=..., p_arg8=...)
    at core/object/message_queue.cpp:59
#5  0x000000000292e658 in CanvasItem::update (this=this@entry=0xeaaffb0) at scene/main/canvas_item.cpp:368
#6  0x0000000002a4c511 in Button::set_text (this=this@entry=0xeaaffb0, p_text=...) at scene/gui/button.cpp:374
#7  0x0000000001b3c48b in EditorLog::LogFilter::set_message_count (p_count=<optimized out>, this=<optimized out>) at editor/editor_log.h:99
#8  EditorLog::_process_message (this=0xea9fe90, p_msg=..., p_type=<optimized out>) at editor/editor_log.cpp:193
#9  0x0000000001b3c78f in EditorLog::add_message (this=0xea9fe90, p_msg=..., p_type=EditorLog::MSG_TYPE_STD) at editor/editor_log.cpp:205
#10 0x000000000441446b in __print_line (p_string=...) at core/string/print_string.cpp:82
#11 0x00000000043dc001 in MessageQueue::push_callable (this=0x754ba80, p_callable=..., p_args=0x7fffffffc928, p_argcount=1, p_show_error=<optimized out>)
    at core/object/message_queue.cpp:134
#12 0x00000000043dc114 in MessageQueue::push_call (this=0x754ba80, p_id=..., p_method=..., p_args=p_args@entry=0x7fffffffc928, p_argcount=p_argcount@entry=1, 
    p_show_error=p_show_error@entry=true) at core/object/message_queue.cpp:44
#13 0x00000000043ddb65 in Object::_call_deferred_bind (this=0x9b04c00, p_args=0x7fffffffc920, p_argcount=2, r_error=...) at core/object/object.h:652
#14 0x00000000043f1350 in MethodBindVarArg<Object>::call (this=<optimized out>, p_object=<optimized out>, p_args=<optimized out>, p_arg_count=<optimized out>, r_error=...)
    at ./core/object/method_bind.h:175
#15 0x00000000015844ce in GDScriptFunction::call (this=0x16e89940, p_instance=<optimized out>, p_args=<optimized out>, p_argcount=<optimized out>, r_err=..., p_state=<optimized out>)
    at modules/gdscript/gdscript_vm.cpp:1628
#16 0x0000000001476b08 in GDScriptInstance::call (this=<optimized out>, p_method=..., p_args=<optimized out>, p_argcount=<optimized out>, r_error=...)
    at modules/gdscript/gdscript.cpp:1528
#17 0x00000000043de16f in Object::call (this=0x9b04c00, p_method=..., p_args=0x7fffffffce40, p_argcount=1, r_error=...) at core/object/object.cpp:811
#18 0x000000000421726c in Variant::call (this=0x7fffffffcd50, p_method=..., p_args=<optimized out>, p_argcount=1, r_ret=..., r_error=...) at core/variant/variant_call.cpp:1021
#19 0x0000000001584543 in GDScriptFunction::call (this=0x16e8a0f0, p_instance=<optimized out>, p_args=<optimized out>, p_argcount=<optimized out>, r_err=..., p_state=<optimized out>)
    at modules/gdscript/gdscript_vm.cpp:1539
#20 0x0000000001476b08 in GDScriptInstance::call (this=<optimized out>, p_method=..., p_args=<optimized out>, p_argcount=<optimized out>, r_error=...)
    at modules/gdscript/gdscript.cpp:1528
#21 0x00000000043de16f in Object::call (this=0x9b04c00, p_method=..., p_args=0x7fffffffd240, p_argcount=1, r_error=...) at core/object/object.cpp:811
#22 0x00000000041d2026 in Callable::call (this=this@entry=0x7fffe9891f50, p_arguments=p_arguments@entry=0x7fffffffd240, p_argcount=p_argcount@entry=1, r_return_value=..., 
--Type <RET> for more, q to quit, c to continue without paging--
    =...) at core/variant/callable.cpp:62
#23 0x00000000043d98c5 in MessageQueue::_call_function (this=<optimized out>, p_callable=..., p_args=<optimized out>, p_argcount=1, p_show_error=<optimized out>) at core/object/message_queue.cpp:258
#24 0x00000000043d9bcc in MessageQueue::flush (this=0x754ba80) at core/object/message_queue.cpp:304
#25 0x00000000029a3cfd in SceneTree::process (this=0x8f29ac0, p_time=0.15000000000000013) at scene/main/scene_tree.cpp:460
#26 0x0000000000a80157 in Main::iteration () at main/main.cpp:2687
#27 0x0000000000a562a9 in OS_LinuxBSD::run (this=this@entry=0x7fffffffd620) at platform/linuxbsd/os_linuxbsd.cpp:356
#28 0x0000000000a4ae15 in main (argc=4, argv=0x7fffffffda48) at platform/linuxbsd/godot_linuxbsd.cpp:58

Here is the backtrace with symbols:

================================================================
handle_crash: Program crashed with signal 11
Engine version: Godot Engine v4.0.alpha.custom_build (b28a83ef3d819785c42ce92679cd988c7002114a)
Dumping the backtrace. Please include this when reporting the bug on https://github.com/godotengine/godot/issues
[1] /lib64/libc.so.6(+0x42750) [0x7f77c49c3750] (??:0)
[2] /Depot/Build/godot/bin/godot.linuxbsd.opt.tools.64() [0x41d22f5] (/Depot/Build/godot/core/variant/callable.cpp:100)
[3] /Depot/Build/godot/bin/godot.linuxbsd.opt.tools.64() [0x43da144] (/Depot/Build/godot/core/object/message_queue.cpp:185)
[4] /Depot/Build/godot/bin/godot.linuxbsd.opt.tools.64() [0x43dc065] (/Depot/Build/godot/core/object/message_queue.cpp:136)
[5] /Depot/Build/godot/bin/godot.linuxbsd.opt.tools.64() [0x43dc25c] (/Depot/Build/godot/core/object/message_queue.cpp:44)
[6] /Depot/Build/godot/bin/godot.linuxbsd.opt.tools.64() [0x292e658] (/Depot/Build/godot/./core/variant/variant.h:266)
[7] /Depot/Build/godot/bin/godot.linuxbsd.opt.tools.64() [0x2a4c511] (/Depot/Build/godot/scene/gui/button.cpp:377)
[8] /Depot/Build/godot/bin/godot.linuxbsd.opt.tools.64() [0x1b3c48b] (/Depot/Build/godot/./core/templates/cowdata.h:386)
[9] /Depot/Build/godot/bin/godot.linuxbsd.opt.tools.64() [0x1b3c78f] (/Depot/Build/godot/./core/templates/cowdata.h:82 (discriminator 2))
[10] /Depot/Build/godot/bin/godot.linuxbsd.opt.tools.64() [0x441446b] (/Depot/Build/godot/core/string/print_string.cpp:83)
[11] /Depot/Build/godot/bin/godot.linuxbsd.opt.tools.64() [0x43dc001] (/Depot/Build/godot/./core/templates/cowdata.h:386)
[12] /Depot/Build/godot/bin/godot.linuxbsd.opt.tools.64() [0x43dc114] (/Depot/Build/godot/core/object/message_queue.cpp:44)
[13] /Depot/Build/godot/bin/godot.linuxbsd.opt.tools.64() [0x43ddb65] (/Depot/Build/godot/./core/variant/variant.h:205)
[14] /Depot/Build/godot/bin/godot.linuxbsd.opt.tools.64() [0x43f1350] (/Depot/Build/godot/./core/object/method_bind.h:176 (discriminator 4))
[15] /Depot/Build/godot/bin/godot.linuxbsd.opt.tools.64() [0x15844ce] (/Depot/Build/godot/modules/gdscript/gdscript_vm.cpp:1628 (discriminator 1))
[16] /Depot/Build/godot/bin/godot.linuxbsd.opt.tools.64() [0x1476b08] (/Depot/Build/godot/modules/gdscript/gdscript.cpp:1528)
[17] /Depot/Build/godot/bin/godot.linuxbsd.opt.tools.64() [0x43de16f] (/Depot/Build/godot/core/object/object.cpp:811)
[18] /Depot/Build/godot/bin/godot.linuxbsd.opt.tools.64() [0x421726c] (/Depot/Build/godot/core/variant/variant_call.cpp:1021 (discriminator 6))
[19] /Depot/Build/godot/bin/godot.linuxbsd.opt.tools.64() [0x1584543] (/Depot/Build/godot/./core/variant/variant.h:266)
[20] /Depot/Build/godot/bin/godot.linuxbsd.opt.tools.64() [0x1476b08] (/Depot/Build/godot/modules/gdscript/gdscript.cpp:1528)
[21] /Depot/Build/godot/bin/godot.linuxbsd.opt.tools.64() [0x43de16f] (/Depot/Build/godot/core/object/object.cpp:811)
[22] /Depot/Build/godot/bin/godot.linuxbsd.opt.tools.64() [0x41d2026] (/Depot/Build/godot/core/variant/callable.cpp:62)
[23] /Depot/Build/godot/bin/godot.linuxbsd.opt.tools.64() [0x43d98c5] (/Depot/Build/godot/core/object/message_queue.cpp:259)
[24] /Depot/Build/godot/bin/godot.linuxbsd.opt.tools.64() [0x43d9bcc] (/Depot/Build/godot/core/object/message_queue.cpp:306)
[25] /Depot/Build/godot/bin/godot.linuxbsd.opt.tools.64() [0x29a3cfd] (/Depot/Build/godot/scene/main/scene_tree.cpp:461)
[26] /Depot/Build/godot/bin/godot.linuxbsd.opt.tools.64() [0xa80157] (/Depot/Build/godot/main/main.cpp:2690)
[27] /Depot/Build/godot/bin/godot.linuxbsd.opt.tools.64() [0xa562a9] (/Depot/Build/godot/platform/linuxbsd/os_linuxbsd.cpp:356)
[28] /Depot/Build/godot/bin/godot.linuxbsd.opt.tools.64() [0xa4ae15] (/Depot/Build/godot/platform/linuxbsd/godot_linuxbsd.cpp:58)
[29] /lib64/libc.so.6(+0x2d560) [0x7f77c49ae560] (??:0)
[30] /lib64/libc.so.6(__libc_start_main+0x7c) [0x7f77c49ae60c] (??:0)
[31] /Depot/Build/godot/bin/godot.linuxbsd.opt.tools.64() [0xa54f45] (??:?)
-- END OF BACKTRACE --
================================================================