[Wayland] Editor crashes while editing a script
Tested versions
v4.8.dev.custom_build [6a0f6f32c]
System information
Godot v4.8.dev (6a0f6f32c) - Manjaro Linux #1 SMP PREEMPT_DYNAMIC Fri, 04 Sep 2026 15:41:39 +0000 on Wayland - Wayland display driver, Multi-window, 2 monitors (1920x1080 @ 74.97 Hz, 1920x1080 @ 74.97 Hz) - Vulkan (Forward+) - dedicated AMD Radeon RX 7900 XT (RADV NAVI31) - AMD Ryzen 9 7900X 12-Core Processor (24 threads) - 30.48 GiB memory - PulseAudio (44100 Hz, Stereo/mono)
Issue description
The editor crashes seemingly at random while editing scripts in the script editor. I've had at least one instance as well when moving the mouse through the editor window to reach the running project on my second monitor.
The following error is displayed right before the engine backtrace:
ERROR: Wayland protocol error 0 on interface unknown@0.
at: _wl_display_check_error (platform/linuxbsd/wayland/wayland_thread.cpp:210)
Full backtrace:================================================================
handle_crash: Program crashed with signal 4
Engine version: Godot Engine v4.8.dev.custom_build (6a0f6f32cfb2ce4cc5bad6641d0afda413b62a9d)
Dumping the backtrace. Please include this when reporting the bug on: https://github.com/godotengine/godot/issues
Load address: 55e8e31f1000
[1] 7fd71063e6f0 (libc.so.6+3e6f0) - /usr/lib/libc.so.6(+0x3e6f0) [0x7fd71063e6f0]
[2] 55e8e3ae693e (main+8f593e) - WaylandThread::_wl_display_check_error(wl_display*) at /home/cyril/src/godot/platform/linuxbsd/wayland/wayland_thread.cpp:210 (discriminator 9)
[3] 55e8e3afd3ed (main+90c3ed) - WaylandThread::window_wait_ready(int, int) at /home/cyril/src/godot/platform/linuxbsd/wayland/wayland_thread.cpp:6248
[4] 55e8e3acc434 (main+8db434) - DisplayServerWayland::show_window(int) at /home/cyril/src/godot/platform/linuxbsd/wayland/display_server_wayland.cpp:914
[5] 55e8e7e6ad8d (main+4c79d8d) - Window::_make_window() at /home/cyril/src/godot/scene/main/window.cpp:758
[6] 55e8e7e6c9e5 (main+4c7b9e5) - Window::set_visible(bool) at /home/cyril/src/godot/scene/main/window.cpp:1039
[7] 55e8e7e756e8 (main+4c846e8) - Window::_popup_base(Rect2i const&) at /home/cyril/src/godot/scene/main/window.cpp:2292
[8] 55e8e7e75242 (main+4c84242) - Window::popup(Rect2i const&) at /home/cyril/src/godot/scene/main/window.cpp:2243
[9] 55e8e6d2ae61 (main+3b39e61) - EditorHelpBitTooltip::popup_under_position(Vector2 const&) at /home/cyril/src/godot/editor/doc/editor_help.cpp:5166
[10] 55e8e6d2a959 (main+3b39959) - EditorHelpBitTooltip::make_tooltip(Control*, String const&, String const&, bool, bool, String const&) at /home/cyril/src/godot/editor/doc/editor_help.cpp:5120
[11] 55e8e7871cad (main+4680cad) - ScriptTextEditor::_show_symbol_tooltip(String const&, int, int, bool) at /home/cyril/src/godot/editor/script/script_text_editor.cpp:1431 (discriminator 3)
[12] 55e8e787ee55 (main+468de55) - ScriptTextEditor::_on_hover_tooltip_timer_timeout() at /home/cyril/src/godot/editor/script/script_text_editor.cpp:2725
[13] 55e8e788d2c7 (main+469c2c7) - void call_with_variant_args_helper<ScriptTextEditor>(ScriptTextEditor*, void (ScriptTextEditor::*)(), Variant const**, Callable::CallError&, IndexSequence<>) at /home/cyril/src/godot/core/variant/binder_common.h:63
[14] 55e8e788c6cd (main+469b6cd) - void call_with_variant_args<ScriptTextEditor>(ScriptTextEditor*, void (ScriptTextEditor::*)(), Variant const**, int, Callable::CallError&) at /home/cyril/src/godot/core/variant/binder_common.h:173
[15] 55e8e788bd66 (main+469ad66) - CallableCustomMethodPointer<ScriptTextEditor, void>::call(Variant const**, int, Variant&, Callable::CallError&) const at /home/cyril/src/godot/core/object/callable_mp.h:107
[16] 55e8ea082d04 (main+6e91d04) - Callable::callp(Variant const**, int, Variant&, Callable::CallError&) const at /home/cyril/src/godot/core/variant/callable.cpp:58
[17] 55e8ea45e345 (main+726d345) - Object::emit_signalp(StringName const&, Variant const**, int) at /home/cyril/src/godot/core/object/object.cpp:1368
[18] 55e8e7d8ffc1 (main+4b9efc1) - Node::emit_signalp(StringName const&, Variant const**, int) at /home/cyril/src/godot/scene/main/node.cpp:4225 (discriminator 1)
[19] 55e8e40674fa (main+e764fa) - Error Object::emit_signal<>(StringName const&) at /home/cyril/src/godot/core/object/object.h:779
[20] 55e8e7df854a (main+4c0754a) - Timer::_notification(int) at /home/cyril/src/godot/scene/main/timer.cpp:69
[21] 55e8e7dfa1b2 (main+4c091b2) - Timer::_notification_forwardv(int) at /home/cyril/src/godot/scene/main/timer.h:36
[22] 55e8ea45c13b (main+726b13b) - Object::_notification_forward(int) at /home/cyril/src/godot/core/object/object.cpp:994
[23] 55e8e3a46206 (main+855206) - Object::notification(int, bool) at /home/cyril/src/godot/core/object/object.h:733
[24] 55e8e7dc8bdd (main+4bd7bdd) - SceneTree::_process_group(SceneTree::ProcessGroup*, bool) at /home/cyril/src/godot/scene/main/scene_tree.cpp:1235
[25] 55e8e7dc91de (main+4bd81de) - SceneTree::_process(bool) at /home/cyril/src/godot/scene/main/scene_tree.cpp:1308 (discriminator 1)
[26] 55e8e7dc6bac (main+4bd5bac) - SceneTree::process(double) at /home/cyril/src/godot/scene/main/scene_tree.cpp:721
[27] 55e8e3b6277a (main+97177a) - Main::iteration() at /home/cyril/src/godot/main/main.cpp:5043 (discriminator 3)
[28] 55e8e3a4faca (main+85eaca) - OS_LinuxBSD::run() at /home/cyril/src/godot/platform/linuxbsd/os_linuxbsd.cpp:1026 (discriminator 1)
[29] 55e8e3a66a98 (main+875a98) - main at /home/cyril/src/godot/platform/linuxbsd/godot_linuxbsd.cpp:122
[30] 7fd710627781 (libc.so.6+27781) - /usr/lib/libc.so.6(+0x27781) [0x7fd710627781]
[31] 7fd7106278b9 (libc.so.6+278b9) - /usr/lib/libc.so.6(__libc_start_main+0x89) [0x7fd7106278b9]
[32] 55e8e3a44765 (main+853765) - /home/cyril/src/godot/bin/godot.linuxbsd.editor.dev.x86_64(+0x853765) [0x55e8e3a44765]
-- END OF C++ BACKTRACE --
================================================================
After some discussion with @deralmas on RC, I got a log with GODOT_WAYLAND_EMBEDDER_DEBUG=1 on a dev build, which shows the following:
[PROXY] Client #12 <- wl_display::error(g0x52,0,"width and height must be positive and non-zero") g0x1
This crash also occurs with #122145 applied, but I get this additional error when doing so:
ERROR: Unexpected error while handling socket, shutting down.
at: handle_fd (platform/linuxbsd/wayland/wayland_embedder.cpp:3356)
Steps to reproduce
Not 100% certain, but scrolling back and forth through an open script is enough to trigger the crash.
https://github.com/user-attachments/assets/a44b29a2-b6f6-419b-b7f9-924017c486d8
Minimal reproduction project (MRP)
None to provide, but you'd need enough of a script to scroll through.
Source: godotengine/godot