Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Close editor with shader text edit open crash the engine #93529

Closed
matheusmdx opened this issue Jun 24, 2024 · 1 comment · Fixed by #93558
Closed

Close editor with shader text edit open crash the engine #93529

matheusmdx opened this issue Jun 24, 2024 · 1 comment · Fixed by #93558

Comments

@matheusmdx
Copy link
Contributor

matheusmdx commented Jun 24, 2024

Tested versions

Reproducible: v4.3.beta2.official [b75f048] and latest master v4.3.beta.custom_build [04bf7d4]
Not reproducible: v4.3.dev6.official [89850d5]

System information

Godot v4.3.beta2 - Windows 10.0.19045 - Vulkan (Forward+) - dedicated AMD Radeon RX 580 2048SP (Advanced Micro Devices, Inc.; 31.0.21912.14) - AMD Ryzen 5 3600 6-Core Processor (12 Threads)

Issue description

Godot crash if you close the editor while the shader text editor is open, not a big big problem but also is not the most graceful way to close

unknown_2024.06.23-14.47.mp4

Backtrace:
EditorNode::hide_unused_editors(const Object * p_editing_owner) Line 2334 (c:\Users\Matheus\Downloads\Godot Source\editor\editor_node.cpp:2334)
EditorInspector::_clear(bool p_hide_plugins) Line 3553 (c:\Users\Matheus\Downloads\Godot Source\editor\editor_inspector.cpp:3553)
EditorInspector::edit(Object * p_object) Line 3573 (c:\Users\Matheus\Downloads\Godot Source\editor\editor_inspector.cpp:3573)
EditorInspector::_notification(int p_what) Line 4094 (c:\Users\Matheus\Downloads\Godot Source\editor\editor_inspector.cpp:4094)
EditorInspector::_notificationv(int p_notification, bool p_reversed) Line 481 (c:\Users\Matheus\Downloads\Godot Source\editor\editor_inspector.h:481)
Object::notification(int p_notification, bool p_reversed) Line 885 (c:\Users\Matheus\Downloads\Godot Source\core\object\object.cpp:885)
Object::_predelete() Line 199 (c:\Users\Matheus\Downloads\Godot Source\core\object\object.cpp:199)
predelete_handler(Object * p_object) Line 2125 (c:\Users\Matheus\Downloads\Godot Source\core\object\object.cpp:2125)
memdelete<Node>(Node * p_class) Line 112 (c:\Users\Matheus\Downloads\Godot Source\core\os\memory.h:112)
Node::_notification(int p_notification) Line 242 (c:\Users\Matheus\Downloads\Godot Source\scene\main\node.cpp:242)
Node::_notificationv(int p_notification, bool p_reversed) Line 50 (c:\Users\Matheus\Downloads\Godot Source\scene\main\node.h:50)
CanvasItem::_notificationv(int p_notification, bool p_reversed) Line 45 (c:\Users\Matheus\Downloads\Godot Source\scene\main\canvas_item.h:45)
Control::_notificationv(int p_notification, bool p_reversed) Line 48 (c:\Users\Matheus\Downloads\Godot Source\scene\gui\control.h:48)
Container::_notificationv(int p_notification, bool p_reversed) Line 37 (c:\Users\Matheus\Downloads\Godot Source\scene\gui\container.h:37)
BoxContainer::_notificationv(int p_notification, bool p_reversed) Line 37 (c:\Users\Matheus\Downloads\Godot Source\scene\gui\box_container.h:37)
VBoxContainer::_notificationv(int p_notification, bool p_reversed) Line 90 (c:\Users\Matheus\Downloads\Godot Source\scene\gui\box_container.h:90)
InspectorDock::_notificationv(int p_notification, bool p_reversed) Line 48 (c:\Users\Matheus\Downloads\Godot Source\editor\inspector_dock.h:48)
Object::notification(int p_notification, bool p_reversed) Line 885 (c:\Users\Matheus\Downloads\Godot Source\core\object\object.cpp:885)
Object::_predelete() Line 199 (c:\Users\Matheus\Downloads\Godot Source\core\object\object.cpp:199)
predelete_handler(Object * p_object) Line 2125 (c:\Users\Matheus\Downloads\Godot Source\core\object\object.cpp:2125)
memdelete<Node>(Node * p_class) Line 112 (c:\Users\Matheus\Downloads\Godot Source\core\os\memory.h:112)
Node::_notification(int p_notification) Line 242 (c:\Users\Matheus\Downloads\Godot Source\scene\main\node.cpp:242)
Node::_notificationv(int p_notification, bool p_reversed) Line 50 (c:\Users\Matheus\Downloads\Godot Source\scene\main\node.h:50)
CanvasItem::_notificationv(int p_notification, bool p_reversed) Line 45 (c:\Users\Matheus\Downloads\Godot Source\scene\main\canvas_item.h:45)
Control::_notificationv(int p_notification, bool p_reversed) Line 48 (c:\Users\Matheus\Downloads\Godot Source\scene\gui\control.h:48)
Container::_notificationv(int p_notification, bool p_reversed) Line 37 (c:\Users\Matheus\Downloads\Godot Source\scene\gui\container.h:37)
TabContainer::_notificationv(int p_notification, bool p_reversed) Line 39 (c:\Users\Matheus\Downloads\Godot Source\scene\gui\tab_container.h:39)
Object::notification(int p_notification, bool p_reversed) Line 885 (c:\Users\Matheus\Downloads\Godot Source\core\object\object.cpp:885)
Object::_predelete() Line 199 (c:\Users\Matheus\Downloads\Godot Source\core\object\object.cpp:199)
predelete_handler(Object * p_object) Line 2125 (c:\Users\Matheus\Downloads\Godot Source\core\object\object.cpp:2125)
memdelete<Node>(Node * p_class) Line 112 (c:\Users\Matheus\Downloads\Godot Source\core\os\memory.h:112)
Node::_notification(int p_notification) Line 242 (c:\Users\Matheus\Downloads\Godot Source\scene\main\node.cpp:242)
Node::_notificationv(int p_notification, bool p_reversed) Line 50 (c:\Users\Matheus\Downloads\Godot Source\scene\main\node.h:50)
CanvasItem::_notificationv(int p_notification, bool p_reversed) Line 45 (c:\Users\Matheus\Downloads\Godot Source\scene\main\canvas_item.h:45)
Control::_notificationv(int p_notification, bool p_reversed) Line 48 (c:\Users\Matheus\Downloads\Godot Source\scene\gui\control.h:48)
Container::_notificationv(int p_notification, bool p_reversed) Line 37 (c:\Users\Matheus\Downloads\Godot Source\scene\gui\container.h:37)
SplitContainer::_notificationv(int p_notification, bool p_reversed) Line 54 (c:\Users\Matheus\Downloads\Godot Source\scene\gui\split_container.h:54)
DockSplitContainer::_notificationv(int p_notification, bool p_reversed) Line 46 (c:\Users\Matheus\Downloads\Godot Source\editor\editor_dock_manager.h:46)
Object::notification(int p_notification, bool p_reversed) Line 885 (c:\Users\Matheus\Downloads\Godot Source\core\object\object.cpp:885)
Object::_predelete() Line 199 (c:\Users\Matheus\Downloads\Godot Source\core\object\object.cpp:199)
predelete_handler(Object * p_object) Line 2125 (c:\Users\Matheus\Downloads\Godot Source\core\object\object.cpp:2125)
memdelete<Node>(Node * p_class) Line 112 (c:\Users\Matheus\Downloads\Godot Source\core\os\memory.h:112)
Node::_notification(int p_notification) Line 242 (c:\Users\Matheus\Downloads\Godot Source\scene\main\node.cpp:242)
Node::_notificationv(int p_notification, bool p_reversed) Line 50 (c:\Users\Matheus\Downloads\Godot Source\scene\main\node.h:50)
CanvasItem::_notificationv(int p_notification, bool p_reversed) Line 45 (c:\Users\Matheus\Downloads\Godot Source\scene\main\canvas_item.h:45)
Control::_notificationv(int p_notification, bool p_reversed) Line 48 (c:\Users\Matheus\Downloads\Godot Source\scene\gui\control.h:48)
Container::_notificationv(int p_notification, bool p_reversed) Line 37 (c:\Users\Matheus\Downloads\Godot Source\scene\gui\container.h:37)
SplitContainer::_notificationv(int p_notification, bool p_reversed) Line 54 (c:\Users\Matheus\Downloads\Godot Source\scene\gui\split_container.h:54)
DockSplitContainer::_notificationv(int p_notification, bool p_reversed) Line 46 (c:\Users\Matheus\Downloads\Godot Source\editor\editor_dock_manager.h:46)
Object::notification(int p_notification, bool p_reversed) Line 885 (c:\Users\Matheus\Downloads\Godot Source\core\object\object.cpp:885)
Object::_predelete() Line 199 (c:\Users\Matheus\Downloads\Godot Source\core\object\object.cpp:199)
predelete_handler(Object * p_object) Line 2125 (c:\Users\Matheus\Downloads\Godot Source\core\object\object.cpp:2125)
memdelete<Node>(Node * p_class) Line 112 (c:\Users\Matheus\Downloads\Godot Source\core\os\memory.h:112)
Node::_notification(int p_notification) Line 242 (c:\Users\Matheus\Downloads\Godot Source\scene\main\node.cpp:242)
Node::_notificationv(int p_notification, bool p_reversed) Line 50 (c:\Users\Matheus\Downloads\Godot Source\scene\main\node.h:50)
CanvasItem::_notificationv(int p_notification, bool p_reversed) Line 45 (c:\Users\Matheus\Downloads\Godot Source\scene\main\canvas_item.h:45)
Control::_notificationv(int p_notification, bool p_reversed) Line 48 (c:\Users\Matheus\Downloads\Godot Source\scene\gui\control.h:48)
Container::_notificationv(int p_notification, bool p_reversed) Line 37 (c:\Users\Matheus\Downloads\Godot Source\scene\gui\container.h:37)
SplitContainer::_notificationv(int p_notification, bool p_reversed) Line 54 (c:\Users\Matheus\Downloads\Godot Source\scene\gui\split_container.h:54)
DockSplitContainer::_notificationv(int p_notification, bool p_reversed) Line 46 (c:\Users\Matheus\Downloads\Godot Source\editor\editor_dock_manager.h:46)
Object::notification(int p_notification, bool p_reversed) Line 885 (c:\Users\Matheus\Downloads\Godot Source\core\object\object.cpp:885)
Object::_predelete() Line 199 (c:\Users\Matheus\Downloads\Godot Source\core\object\object.cpp:199)
predelete_handler(Object * p_object) Line 2125 (c:\Users\Matheus\Downloads\Godot Source\core\object\object.cpp:2125)
memdelete<Node>(Node * p_class) Line 112 (c:\Users\Matheus\Downloads\Godot Source\core\os\memory.h:112)
Node::_notification(int p_notification) Line 242 (c:\Users\Matheus\Downloads\Godot Source\scene\main\node.cpp:242)
Node::_notificationv(int p_notification, bool p_reversed) Line 50 (c:\Users\Matheus\Downloads\Godot Source\scene\main\node.h:50)
CanvasItem::_notificationv(int p_notification, bool p_reversed) Line 45 (c:\Users\Matheus\Downloads\Godot Source\scene\main\canvas_item.h:45)
Control::_notificationv(int p_notification, bool p_reversed) Line 48 (c:\Users\Matheus\Downloads\Godot Source\scene\gui\control.h:48)
Container::_notificationv(int p_notification, bool p_reversed) Line 37 (c:\Users\Matheus\Downloads\Godot Source\scene\gui\container.h:37)
SplitContainer::_notificationv(int p_notification, bool p_reversed) Line 54 (c:\Users\Matheus\Downloads\Godot Source\scene\gui\split_container.h:54)
DockSplitContainer::_notificationv(int p_notification, bool p_reversed) Line 46 (c:\Users\Matheus\Downloads\Godot Source\editor\editor_dock_manager.h:46)
Object::notification(int p_notification, bool p_reversed) Line 885 (c:\Users\Matheus\Downloads\Godot Source\core\object\object.cpp:885)
Object::_predelete() Line 199 (c:\Users\Matheus\Downloads\Godot Source\core\object\object.cpp:199)
predelete_handler(Object * p_object) Line 2125 (c:\Users\Matheus\Downloads\Godot Source\core\object\object.cpp:2125)
memdelete<Node>(Node * p_class) Line 112 (c:\Users\Matheus\Downloads\Godot Source\core\os\memory.h:112)
Node::_notification(int p_notification) Line 242 (c:\Users\Matheus\Downloads\Godot Source\scene\main\node.cpp:242)
Node::_notificationv(int p_notification, bool p_reversed) Line 50 (c:\Users\Matheus\Downloads\Godot Source\scene\main\node.h:50)
CanvasItem::_notificationv(int p_notification, bool p_reversed) Line 45 (c:\Users\Matheus\Downloads\Godot Source\scene\main\canvas_item.h:45)
Control::_notificationv(int p_notification, bool p_reversed) Line 48 (c:\Users\Matheus\Downloads\Godot Source\scene\gui\control.h:48)
Container::_notificationv(int p_notification, bool p_reversed) Line 37 (c:\Users\Matheus\Downloads\Godot Source\scene\gui\container.h:37)
SplitContainer::_notificationv(int p_notification, bool p_reversed) Line 54 (c:\Users\Matheus\Downloads\Godot Source\scene\gui\split_container.h:54)
DockSplitContainer::_notificationv(int p_notification, bool p_reversed) Line 46 (c:\Users\Matheus\Downloads\Godot Source\editor\editor_dock_manager.h:46)
Object::notification(int p_notification, bool p_reversed) Line 885 (c:\Users\Matheus\Downloads\Godot Source\core\object\object.cpp:885)
Object::_predelete() Line 199 (c:\Users\Matheus\Downloads\Godot Source\core\object\object.cpp:199)
predelete_handler(Object * p_object) Line 2125 (c:\Users\Matheus\Downloads\Godot Source\core\object\object.cpp:2125)
memdelete<Node>(Node * p_class) Line 112 (c:\Users\Matheus\Downloads\Godot Source\core\os\memory.h:112)
Node::_notification(int p_notification) Line 242 (c:\Users\Matheus\Downloads\Godot Source\scene\main\node.cpp:242)
Node::_notificationv(int p_notification, bool p_reversed) Line 50 (c:\Users\Matheus\Downloads\Godot Source\scene\main\node.h:50)
CanvasItem::_notificationv(int p_notification, bool p_reversed) Line 45 (c:\Users\Matheus\Downloads\Godot Source\scene\main\canvas_item.h:45)
Control::_notificationv(int p_notification, bool p_reversed) Line 48 (c:\Users\Matheus\Downloads\Godot Source\scene\gui\control.h:48)
Container::_notificationv(int p_notification, bool p_reversed) Line 37 (c:\Users\Matheus\Downloads\Godot Source\scene\gui\container.h:37)
BoxContainer::_notificationv(int p_notification, bool p_reversed) Line 37 (c:\Users\Matheus\Downloads\Godot Source\scene\gui\box_container.h:37)
VBoxContainer::_notificationv(int p_notification, bool p_reversed) Line 90 (c:\Users\Matheus\Downloads\Godot Source\scene\gui\box_container.h:90)
Object::notification(int p_notification, bool p_reversed) Line 885 (c:\Users\Matheus\Downloads\Godot Source\core\object\object.cpp:885)
Object::_predelete() Line 199 (c:\Users\Matheus\Downloads\Godot Source\core\object\object.cpp:199)
predelete_handler(Object * p_object) Line 2125 (c:\Users\Matheus\Downloads\Godot Source\core\object\object.cpp:2125)
memdelete<Node>(Node * p_class) Line 112 (c:\Users\Matheus\Downloads\Godot Source\core\os\memory.h:112)
Node::_notification(int p_notification) Line 242 (c:\Users\Matheus\Downloads\Godot Source\scene\main\node.cpp:242)
Node::_notificationv(int p_notification, bool p_reversed) Line 50 (c:\Users\Matheus\Downloads\Godot Source\scene\main\node.h:50)
CanvasItem::_notificationv(int p_notification, bool p_reversed) Line 45 (c:\Users\Matheus\Downloads\Godot Source\scene\main\canvas_item.h:45)
Control::_notificationv(int p_notification, bool p_reversed) Line 48 (c:\Users\Matheus\Downloads\Godot Source\scene\gui\control.h:48)
Panel::_notificationv(int p_notification, bool p_reversed) Line 37 (c:\Users\Matheus\Downloads\Godot Source\scene\gui\panel.h:37)
Object::notification(int p_notification, bool p_reversed) Line 885 (c:\Users\Matheus\Downloads\Godot Source\core\object\object.cpp:885)
Object::_predelete() Line 199 (c:\Users\Matheus\Downloads\Godot Source\core\object\object.cpp:199)
predelete_handler(Object * p_object) Line 2125 (c:\Users\Matheus\Downloads\Godot Source\core\object\object.cpp:2125)
memdelete<Node>(Node * p_class) Line 112 (c:\Users\Matheus\Downloads\Godot Source\core\os\memory.h:112)
Node::_notification(int p_notification) Line 242 (c:\Users\Matheus\Downloads\Godot Source\scene\main\node.cpp:242)
Node::_notificationv(int p_notification, bool p_reversed) Line 50 (c:\Users\Matheus\Downloads\Godot Source\scene\main\node.h:50)
EditorNode::_notificationv(int p_notification, bool p_reversed) Line 126 (c:\Users\Matheus\Downloads\Godot Source\editor\editor_node.h:126)
Object::notification(int p_notification, bool p_reversed) Line 885 (c:\Users\Matheus\Downloads\Godot Source\core\object\object.cpp:885)
Object::_predelete() Line 199 (c:\Users\Matheus\Downloads\Godot Source\core\object\object.cpp:199)
predelete_handler(Object * p_object) Line 2125 (c:\Users\Matheus\Downloads\Godot Source\core\object\object.cpp:2125)
memdelete<Node>(Node * p_class) Line 112 (c:\Users\Matheus\Downloads\Godot Source\core\os\memory.h:112)
Node::_notification(int p_notification) Line 242 (c:\Users\Matheus\Downloads\Godot Source\scene\main\node.cpp:242)
Node::_notificationv(int p_notification, bool p_reversed) Line 50 (c:\Users\Matheus\Downloads\Godot Source\scene\main\node.h:50)
Viewport::_notificationv(int p_notification, bool p_reversed) Line 95 (c:\Users\Matheus\Downloads\Godot Source\scene\main\viewport.h:95)
Window::_notificationv(int p_notification, bool p_reversed) Line 44 (c:\Users\Matheus\Downloads\Godot Source\scene\main\window.h:44)
Object::notification(int p_notification, bool p_reversed) Line 885 (c:\Users\Matheus\Downloads\Godot Source\core\object\object.cpp:885)
Object::_predelete() Line 199 (c:\Users\Matheus\Downloads\Godot Source\core\object\object.cpp:199)
predelete_handler(Object * p_object) Line 2125 (c:\Users\Matheus\Downloads\Godot Source\core\object\object.cpp:2125)
memdelete<Window>(Window * p_class) Line 112 (c:\Users\Matheus\Downloads\Godot Source\core\os\memory.h:112)
SceneTree::finalize() Line 645 (c:\Users\Matheus\Downloads\Godot Source\scene\main\scene_tree.cpp:645)
OS_Windows::run() Line 1692 (c:\Users\Matheus\Downloads\Godot Source\platform\windows\os_windows.cpp:1692)
widechar_main(int argc, wchar_t * * argv) Line 181 (c:\Users\Matheus\Downloads\Godot Source\platform\windows\godot_windows.cpp:181)
_main() Line 206 (c:\Users\Matheus\Downloads\Godot Source\platform\windows\godot_windows.cpp:206)
main(int argc, char * * argv) Line 220 (c:\Users\Matheus\Downloads\Godot Source\platform\windows\godot_windows.cpp:220)
WinMain(HINSTANCE__ * hInstance, HINSTANCE__ * hPrevInstance, char * lpCmdLine, int nCmdShow) Line 234 (c:\Users\Matheus\Downloads\Godot Source\platform\windows\godot_windows.cpp:234)
[Inline Frame] invoke_main() Line 102 (d:\a\_work\1\s\src\vctools\crt\vcstartup\src\startup\exe_common.inl:102)
__scrt_common_main_seh() Line 288 (d:\a\_work\1\s\src\vctools\crt\vcstartup\src\startup\exe_common.inl:288)
kernel32.dll!00007ffe119f7344() (Unknown Source:0)
ntdll.dll!00007ffe12c1cc91() (Unknown Source:0)

Bisecting points to #91538 as the culprit:

image

Steps to reproduce

  1. Create a new shader or open an existing one (you just need to open the shader text edit)
  2. Close godot
  3. Crash

Minimal reproduction project (MRP)

No needed, any project can reproduce

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
Status: Release Blocker
Development

Successfully merging a pull request may close this issue.

3 participants