Skip to content

Editor crashes on attempt to show array tooltip #84525

Closed
@witnessmonolith

Description

@witnessmonolith

Godot version

4.1.2.stable, 4.1.3.stable

System information

Godot v4.1.3.stable - Windows 10.0.22621 - Vulkan (Forward+) - dedicated NVIDIA GeForce RTX 4060 Laptop GPU (NVIDIA; 31.0.15.3210) - 13th Gen Intel(R) Core(TM) i7-13700HX (24 Threads)

Issue description

The editor crashes during debug when the mouse cursor is hovering over the array variable and the editor is trying to display a tool tip.

The following error messages will be displayed in the command line (or console):

ERROR: Condition "err != OK" is true. Returning: ERR_CANT_CREATE
   at: _window_create (drivers/vulkan/vulkan_context.cpp:1698)
ERROR: Failed to create Vulkan Window.
   at: (platform/windows/display_server_windows.cpp:3979)
ERROR: Failed to create sub window.
   at: (platform/windows/display_server_windows.cpp:776)
ERROR: Condition "window_id == DisplayServer::INVALID_WINDOW_ID" is true.
   at: _make_window (scene/main/window.cpp:566)

Corresponding vulkan_context.cpp fragment ( Error VulkanContext::_window_create() ):

	Window window;
	window.surface = p_surface;
	window.width = p_width;
	window.height = p_height;
	window.vsync_mode = p_vsync_mode;
	Error err = _update_swap_chain(&window);
	ERR_FAIL_COND_V(err != OK, ERR_CANT_CREATE);

During the crash, the err value is set to ERR_SKIP ( 45 ).

The crash originates somewhere around viewport.cpp:1533 (void Viewport::_gui_show_tooltip()) and the tooltip size rectangle r has the following values:
{position={-30208.0000,544.000000} size={32768.0000,40.0000000} }

The full callstack:

godot.windows.editor.dev.x86_64.exe!VulkanContext::_window_create(int p_window_id, DisplayServer::VSyncMode p_vsync_mode, VkSurfaceKHR_T * p_surface, int p_width, int p_height) Line 1698 (d:\sources\godot-4.1.3-stable\drivers\vulkan\vulkan_context.cpp:1698)
godot.windows.editor.dev.x86_64.exe!VulkanContextWindows::window_create(int p_window_id, DisplayServer::VSyncMode p_vsync_mode, HWND__ * p_window, HINSTANCE__ * p_instance, int p_width, int p_height) Line 56 (d:\sources\godot-4.1.3-stable\platform\windows\vulkan_context_win.cpp:56)
godot.windows.editor.dev.x86_64.exe!DisplayServerWindows::_create_window(DisplayServer::WindowMode p_mode, DisplayServer::VSyncMode p_vsync_mode, unsigned int p_flags, const Rect2i & p_rect) Line 3975 (d:\sources\godot-4.1.3-stable\platform\windows\display_server_windows.cpp:3975)
godot.windows.editor.dev.x86_64.exe!DisplayServerWindows::create_sub_window(DisplayServer::WindowMode p_mode, DisplayServer::VSyncMode p_vsync_mode, unsigned int p_flags, const Rect2i & p_rect) Line 775 (d:\sources\godot-4.1.3-stable\platform\windows\display_server_windows.cpp:775)
godot.windows.editor.dev.x86_64.exe!Window::_make_window() Line 565 (d:\sources\godot-4.1.3-stable\scene\main\window.cpp:565)
godot.windows.editor.dev.x86_64.exe!Window::set_visible(bool p_visible) Line 778 (d:\sources\godot-4.1.3-stable\scene\main\window.cpp:778)
godot.windows.editor.dev.x86_64.exe!Window::show() Line 744 (d:\sources\godot-4.1.3-stable\scene\main\window.cpp:744)
godot.windows.editor.dev.x86_64.exe!Viewport::_gui_show_tooltip() Line 1533 (d:\sources\godot-4.1.3-stable\scene\main\viewport.cpp:1533)
godot.windows.editor.dev.x86_64.exe!call_with_variant_args_helper<Viewport>(Viewport * p_instance, void(Viewport::*)() p_method, const Variant * * p_args, Callable::CallError & r_error, IndexSequence<> __formal) Line 308 (d:\sources\godot-4.1.3-stable\core\variant\binder_common.h:308)
godot.windows.editor.dev.x86_64.exe!call_with_variant_args<Viewport>(Viewport * p_instance, void(Viewport::*)() p_method, const Variant * * p_args, int p_argcount, Callable::CallError & r_error) Line 418 (d:\sources\godot-4.1.3-stable\core\variant\binder_common.h:418)
godot.windows.editor.dev.x86_64.exe!CallableCustomMethodPointer<Viewport>::call(const Variant * * p_arguments, int p_argcount, Variant & r_return_value, Callable::CallError & r_call_error) Line 105 (d:\sources\godot-4.1.3-stable\core\object\callable_method_pointer.h:105)
godot.windows.editor.dev.x86_64.exe!Callable::callp(const Variant * * p_arguments, int p_argcount, Variant & r_return_value, Callable::CallError & r_call_error) Line 51 (d:\sources\godot-4.1.3-stable\core\variant\callable.cpp:51)
godot.windows.editor.dev.x86_64.exe!Object::emit_signalp(const StringName & p_name, const Variant * * p_args, int p_argcount) Line 1071 (d:\sources\godot-4.1.3-stable\core\object\object.cpp:1071)
godot.windows.editor.dev.x86_64.exe!Object::emit_signal<>(const StringName & p_name) Line 884 (d:\sources\godot-4.1.3-stable\core\object\object.h:884)
godot.windows.editor.dev.x86_64.exe!SceneTree::process_timers(double p_delta, bool p_physics_frame) Line 580 (d:\sources\godot-4.1.3-stable\scene\main\scene_tree.cpp:580)
godot.windows.editor.dev.x86_64.exe!SceneTree::process(double p_time) Line 520 (d:\sources\godot-4.1.3-stable\scene\main\scene_tree.cpp:520)
godot.windows.editor.dev.x86_64.exe!Main::iteration() Line 3428 (d:\sources\godot-4.1.3-stable\main\main.cpp:3428)
godot.windows.editor.dev.x86_64.exe!OS_Windows::run() Line 1474 (d:\sources\godot-4.1.3-stable\platform\windows\os_windows.cpp:1474)
godot.windows.editor.dev.x86_64.exe!widechar_main(int argc, wchar_t * * argv) Line 182 (d:\sources\godot-4.1.3-stable\platform\windows\godot_windows.cpp:182)
godot.windows.editor.dev.x86_64.exe!_main() Line 204 (d:\sources\godot-4.1.3-stable\platform\windows\godot_windows.cpp:204)

Steps to reproduce

  1. Create a script with a PackedInt32Array and fill it with 1024 elements with reasonably high values
  2. Set a breakpoint AFTER the array values initialization
  3. Launch the project, hit the breakpoint
  4. Hover the mouse cursor over the array variable, trying to view the tool tip
  5. The Godot Editor will crash

Minimal reproduction project

413_crash_repro.zip

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions