Closed 2fd5 closed 11 months ago
Check in 4.2 dev6. There were recent fixes for similar issues.
I'm having the same issue on 4.2-dev6
It doesn't always happen and I'm still not sure if the main trigger is deleting many files, big files or folders with subfolders
I tried to reproduce this on the master branch, but I couldn't get it to crash. Can somebody provide a reproduction case?
I'm testing it on a dev build from master and I cannot get it to crash even when removing files that have owners. I'll keep trying and see if I can get a backtrace.
Ok got it to crash after deleting several folders:
================================================================
at: (core\io\resource_loader.cpp:275)
CrashHandlerException: Program crashed
ERROR:Engine version: Godot Engine v4.2.beta.custom_build (51f81e1c88499f04d2ebdcc0be0b34e73f5e90eb)
Cannot open file 'res://CastleNew/materials/bricksloose.tres'.
Dumping the backtrace. Please include this when reporting the bug to the project developer.
at: (scene\resources\resource_format_text.cpp:1641)
ERROR: Failed loading resource: res://CastleNew/materials/bricksloose.tres. Make sure resources have been imported by opening the project in the editor at least once.
at: (core\io\resource_loader.cpp:275)
WARNING: Upgrading mesh from older surface format. Once saved again (or re-imported), this mesh will be incompatible with earlier versions of Godot.
at: RenderingServer::_fix_surface_compatibility (servers\rendering_server.cpp:2035)
WARNING: Upgrading mesh from older surface format. Once saved again (or re-imported), this mesh will be incompatible with earlier versions of Godot.
at: RenderingServer::_fix_surface_compatibility (servers\rendering_server.cpp:2035)
WARNING: Upgrading mesh from older surface format. Once saved again (or re-imported), this mesh will be incompatible with earlier versions of Godot.
at: RenderingServer::_fix_surface_compatibility (servers\rendering_server.cpp:2035)
WARNING: Upgrading mesh from older surface format. Once saved again (or re-imported), this mesh will be incompatible with earlier versions of Godot.
at: RenderingServer::_fix_surface_compatibility (servers\rendering_server.cpp:2035)
[0] EditorResourceTooltipPlugin::make_default_tooltip (C:\Users\lisan\Documents\GitHub\godot\editor\plugins\editor_resource_tooltip_plugins.cpp:68)
[1] EditorResourceTooltipPlugin::make_default_tooltip (C:\Users\lisan\Documents\GitHub\godot\editor\plugins\editor_resource_tooltip_plugins.cpp:68)
[2] FileSystemDock::create_tooltip_for_path (C:\Users\lisan\Documents\GitHub\godot\editor\filesystem_dock.cpp:2508)
[3] FileSystemTree::make_custom_tooltip (C:\Users\lisan\Documents\GitHub\godot\editor\filesystem_dock.cpp:70)
[4] Viewport::_gui_show_tooltip (C:\Users\lisan\Documents\GitHub\godot\scene\main\viewport.cpp:1504)
[5] call_with_variant_args_helper<Viewport> (C:\Users\lisan\Documents\GitHub\godot\core\variant\binder_common.h:308)
[6] call_with_variant_args<Viewport> (C:\Users\lisan\Documents\GitHub\godot\core\variant\binder_common.h:418)
[7] CallableCustomMethodPointer<Viewport>::call (C:\Users\lisan\Documents\GitHub\godot\core\object\callable_method_pointer.h:105)
[8] Callable::callp (C:\Users\lisan\Documents\GitHub\godot\core\variant\callable.cpp:58)
[9] Object::emit_signalp (C:\Users\lisan\Documents\GitHub\godot\core\object\object.cpp:1127)
[10] Object::emit_signal<> (C:\Users\lisan\Documents\GitHub\godot\core\object\object.h:920)
[11] SceneTree::process_timers (C:\Users\lisan\Documents\GitHub\godot\scene\main\scene_tree.cpp:584)
[12] SceneTree::process (C:\Users\lisan\Documents\GitHub\godot\scene\main\scene_tree.cpp:520)
[13] Main::iteration (C:\Users\lisan\Documents\GitHub\godot\main\main.cpp:3602)
[14] OS_Windows::run (C:\Users\lisan\Documents\GitHub\godot\platform\windows\os_windows.cpp:1474)
[15] widechar_main (C:\Users\lisan\Documents\GitHub\godot\platform\windows\godot_windows.cpp:182)
[16] _main (C:\Users\lisan\Documents\GitHub\godot\platform\windows\godot_windows.cpp:204)
[17] main (C:\Users\lisan\Documents\GitHub\godot\platform\windows\godot_windows.cpp:218)
[18] WinMain (C:\Users\lisan\Documents\GitHub\godot\platform\windows\godot_windows.cpp:232)
[19] __scrt_common_main_seh (d:\agent\_work\4\s\src\vctools\crt\vcstartup\src\startup\exe_common.inl:288)
[20] <couldn't map PC to fn name>
-- END OF BACKTRACE --
================================================================
@noidexe The crash you got comes from dock trying to make a tooltip for a file that does not exist. It's easy to prevent it, but it would be useful if you could find some easy way to test it.
@KoBeWi the project I'm using is under NDA but I'll try with some Kenney assets. It's pretty random but I never got it to happen when deleting a folder with only a few files. I'm thinking the repro steps could be:
I'm not at my work PC right now but I'll test it later.
That's what I assumed, but for me the editor is frozen while the file is being deleted, so there is no way to spawn a tooltip. I requested minimal project, because maybe it's something project-specific.
I'm currently letting godot import assets for a sample project hosted on an old hard drive acessed over the network. I want to check if I can consistently trigger the bug with slow enough read speeds.
In any case, is there any reason to do a FileAcess::open() without checking for errors? There are many situations where a file read could fail and that shouldn't result in an editor crash (with potential loss of progress).
This is how the code looks currently:
{
Ref<FileAccess> f = FileAccess::open(p_resource_path, FileAccess::READ);
Label *label = memnew(Label(vformat(TTR("Size: %s"), String::humanize_size(f->get_length()))));
vb->add_child(label);
}
I don't have that much experience with C++ but based on how file acess is handled in other parts of the editor I think it should look something like this:
{
uint64_t size = 0;
Error err;
Ref<FileAccess> f = FileAccess::open(p_resource_path, FileAccess::READ, &err);
if (err == OK) {
size = f->get_length();
} else {
ERR_PRINT("Couldn't load file '" + p_resource_path + "', error code " + itos(err) + ".");
}
Label *label = memnew(Label(vformat(TTR("Size: %s"), String::humanize_size(size))));
vb->add_child(label);
}
In any case, is there any reason to do a FileAcess::open() without checking for errors?
The code assumes that the file state in FileSystemDock is up-to-date (which is true in most cases). But in any case, the fix should be higher, in create_tooltip_for_path()
method. I actually have a PR ready, but couldn't reproduce the bug.
Ok using the slower disk I got the MRP using kenney assets to crash consistently, though I got a different error:
Moving to trash: P:/DeleteCrashMRP/kenney_retro-medieval-kit/Isometric/
Failed to get modified time for: res://kenney_retro-medieval-kit/Isometric/battlement_half_NW.png
Failed to get modified time for: res://kenney_retro-medieval-kit/Isometric/battlement_half_SE.png
Failed to get modified time for: res://kenney_retro-medieval-kit/Isometric/battlement_half_SW.png
Failed to get modified time for: res://kenney_retro-medieval-kit/Isometric/battlement_NE.png
Failed to get modified time for: res://kenney_retro-medieval-kit/Isometric/battlement_NW.png
Failed to get modified time for: res://kenney_retro-medieval-kit/Isometric/battlement_SE.png
Failed to get modified time for: res://kenney_retro-medieval-kit/Isometric/battlement_SW.png
Failed to get modified time for: res://kenney_retro-medieval-kit/Isometric/columnPaint_NE.png
Failed to get modified time for: res://kenney_retro-medieval-kit/Isometric/columnPaint_NW.png
Failed to get modified time for: res://kenney_retro-medieval-kit/Isometric/columnPaint_SE.png
Failed to get modified time for: res://kenney_retro-medieval-kit/Isometric/columnPaint_SW.png
Failed to get modified time for: res://kenney_retro-medieval-kit/Isometric/column_damaged_NE.png
Failed to get modified time for: res://kenney_retro-medieval-kit/Isometric/column_damaged_NW.png
Failed to get modified time for: res://kenney_retro-medieval-kit/Isometric/column_damaged_SE.png
Failed to get modified time for: res://kenney_retro-medieval-kit/Isometric/column_NW.png
Failed to get modified time for: res://kenney_retro-medieval-kit/Isometric/column_SE.png
Failed to get modified time for: res://kenney_retro-medieval-kit/Isometric/column_SW.png
Failed to get modified time for: res://kenney_retro-medieval-kit/Isometric/detail_barrel_NE.png
Failed to get modified time for: res://kenney_retro-medieval-kit/Isometric/detail_barrel_NW.png
Failed to get modified time for: res://kenney_retro-medieval-kit/Isometric/detail_barrel_SE.png
Failed to get modified time for: res://kenney_retro-medieval-kit/Isometric/detail_barrel_SW.png
Failed to get modified time for: res://kenney_retro-medieval-kit/Isometric/detail_crateSmall_NE.png
Failed to get modified time for: res://kenney_retro-medieval-kit/Isometric/detail_crateSmall_SE.png
Failed to get modified time for: res://kenney_retro-medieval-kit/Isometric/detail_crateSmall_SW.png
Failed to get modified time for: res://kenney_retro-medieval-kit/Isometric/detail_crate_NE.png
Failed to get modified time for: res://kenney_retro-medieval-kit/Isometric/detail_crate_NW.png
Failed to get modified time for: res://kenney_retro-medieval-kit/Isometric/detail_crate_SE.png
Failed to get modified time for: res://kenney_retro-medieval-kit/Isometric/detail_crate_SW.png
Failed to get modified time for: res://kenney_retro-medieval-kit/Isometric/fence_NE.png
Failed to get modified time for: res://kenney_retro-medieval-kit/Isometric/fence_SW.png
Failed to get modified time for: res://kenney_retro-medieval-kit/Isometric/floor_flat_NE.png
Failed to get modified time for: res://kenney_retro-medieval-kit/Isometric/floor_flat_NW.png
Failed to get modified time for: res://kenney_retro-medieval-kit/Isometric/floor_flat_SE.png
Failed to get modified time for: res://kenney_retro-medieval-kit/Isometric/floor_flat_SW.png
Failed to get modified time for: res://kenney_retro-medieval-kit/Isometric/floor_NE.png
Failed to get modified time for: res://kenney_retro-medieval-kit/Isometric/floor_NW.png
Failed to get modified time for: res://kenney_retro-medieval-kit/Isometric/floor_stairsCornerInner_NE.png
Failed to get modified time for: res://kenney_retro-medieval-kit/Isometric/floor_stairsCornerInner_NW.png
Failed to get modified time for: res://kenney_retro-medieval-kit/Isometric/floor_stairsCornerInner_SE.png
Failed to get modified time for: res://kenney_retro-medieval-kit/Isometric/floor_stairsCornerInner_SW.png
Failed to get modified time for: res://kenney_retro-medieval-kit/Isometric/floor_stairsCornerOuter_NE.png
Failed to get modified time for: res://kenney_retro-medieval-kit/Isometric/floor_stairsCornerOuter_NW.png
Failed to get modified time for: res://kenney_retro-medieval-kit/Isometric/floor_stairsCornerOuter_SE.png
Failed to get modified time for: res://kenney_retro-medieval-kit/Isometric/floor_stairs_SW.png
Failed to get modified time for: res://kenney_retro-medieval-kit/Isometric/floor_stepsCornerInner_NE.png
Failed to get modified time for: res://kenney_retro-medieval-kit/Isometric/floor_stepsCornerInner_NW.png
Failed to get modified time for: res://kenney_retro-medieval-kit/Isometric/floor_stepsCornerInner_SE.png
Failed to get modified time for: res://kenney_retro-medieval-kit/Isometric/floor_stepsCornerInner_SW.png
Failed to get modified time for: res://kenney_retro-medieval-kit/Isometric/floor_stepsCornerOuter_NE.png
Failed to get modified time for: res://kenney_retro-medieval-kit/Isometric/floor_stepsCornerOuter_NW.png
Failed to get modified time for: res://kenney_retro-medieval-kit/Isometric/floor_stepsCornerOuter_SW.png
Failed to get modified time for: res://kenney_retro-medieval-kit/Isometric/floor_steps_NE.png
Failed to get modified time for: res://kenney_retro-medieval-kit/Isometric/floor_steps_NW.png
Failed to get modified time for: res://kenney_retro-medieval-kit/Isometric/floor_steps_SE.png
Failed to get modified time for: res://kenney_retro-medieval-kit/Isometric/floor_steps_SW.png
Failed to get modified time for: res://kenney_retro-medieval-kit/Isometric/floor_SW.png
Failed to get modified time for: res://kenney_retro-medieval-kit/Isometric/overhang_fence_NE.png
Failed to get modified time for: res://kenney_retro-medieval-kit/Isometric/overhang_fence_NW.png
Failed to get modified time for: res://kenney_retro-medieval-kit/Isometric/overhang_fence_SW.png
Failed to get modified time for: res://kenney_retro-medieval-kit/Isometric/overhang_NE.png
Failed to get modified time for: res://kenney_retro-medieval-kit/Isometric/overhang_NW.png
Failed to get modified time for: res://kenney_retro-medieval-kit/Isometric/overhang_round_NE.png
Failed to get modified time for: res://kenney_retro-medieval-kit/Isometric/overhang_round_NW.png
Failed to get modified time for: res://kenney_retro-medieval-kit/Isometric/overhang_round_SE.png
Failed to get modified time for: res://kenney_retro-medieval-kit/Isometric/overhang_round_SW.png
Failed to get modified time for: res://kenney_retro-medieval-kit/Isometric/roof_corner_SE.png
Failed to get modified time for: res://kenney_retro-medieval-kit/Isometric/roof_corner_SW.png
Failed to get modified time for: res://kenney_retro-medieval-kit/Isometric/roof_edge_NE.png
Failed to get modified time for: res://kenney_retro-medieval-kit/Isometric/roof_edge_NW.png
Failed to get modified time for: res://kenney_retro-medieval-kit/Isometric/roof_edge_SE.png
Failed to get modified time for: res://kenney_retro-medieval-kit/Isometric/roof_edge_SW.png
Failed to get modified time for: res://kenney_retro-medieval-kit/Isometric/roof_NE.png
Failed to get modified time for: res://kenney_retro-medieval-kit/Isometric/roof_SW.png
Failed to get modified time for: res://kenney_retro-medieval-kit/Isometric/structure_NE.png
Failed to get modified time for: res://kenney_retro-medieval-kit/Isometric/structure_NW.png
Failed to get modified time for: res://kenney_retro-medieval-kit/Isometric/structure_poles_NE.png
Failed to get modified time for: res://kenney_retro-medieval-kit/Isometric/structure_poles_NW.png
Failed to get modified time for: res://kenney_retro-medieval-kit/Isometric/structure_poles_SE.png
Failed to get modified time for: res://kenney_retro-medieval-kit/Isometric/structure_poles_SW.png
Failed to get modified time for: res://kenney_retro-medieval-kit/Isometric/structure_wall_NE.png
Failed to get modified time for: res://kenney_retro-medieval-kit/Isometric/structure_wall_NW.png
Failed to get modified time for: res://kenney_retro-medieval-kit/Isometric/structure_wall_SE.png
Failed to get modified time for: res://kenney_retro-medieval-kit/Isometric/structure_wall_SW.png
Failed to get modified time for: res://kenney_retro-medieval-kit/Isometric/towerPaint_base_NE.png
Failed to get modified time for: res://kenney_retro-medieval-kit/Isometric/towerPaint_base_NW.png
Failed to get modified time for: res://kenney_retro-medieval-kit/Isometric/towerPaint_base_SE.png
Failed to get modified time for: res://kenney_retro-medieval-kit/Isometric/towerPaint_SE.png
Failed to get modified time for: res://kenney_retro-medieval-kit/Isometric/towerPaint_SW.png
Failed to get modified time for: res://kenney_retro-medieval-kit/Isometric/tower_base_NE.png
Failed to get modified time for: res://kenney_retro-medieval-kit/Isometric/tower_base_NW.png
Failed to get modified time for: res://kenney_retro-medieval-kit/Isometric/tower_base_SE.png
Failed to get modified time for: res://kenney_retro-medieval-kit/Isometric/tower_base_SW.png
Failed to get modified time for: res://kenney_retro-medieval-kit/Isometric/tower_edge_NE.png
Failed to get modified time for: res://kenney_retro-medieval-kit/Isometric/tower_edge_SW.png
Failed to get modified time for: res://kenney_retro-medieval-kit/Isometric/tower_NE.png
Failed to get modified time for: res://kenney_retro-medieval-kit/Isometric/tower_NW.png
Failed to get modified time for: res://kenney_retro-medieval-kit/Isometric/tower_SE.png
Failed to get modified time for: res://kenney_retro-medieval-kit/Isometric/tower_SW.png
Failed to get modified time for: res://kenney_retro-medieval-kit/Isometric/tower_top_NE.png
Failed to get modified time for: res://kenney_retro-medieval-kit/Isometric/tower_top_NW.png
Failed to get modified time for: res://kenney_retro-medieval-kit/Isometric/wallFortifiedPaint_gate_NW.png
Failed to get modified time for: res://kenney_retro-medieval-kit/Isometric/wallFortifiedPaint_gate_SE.png
Failed to get modified time for: res://kenney_retro-medieval-kit/Isometric/wallFortifiedPaint_gate_SW.png
Failed to get modified time for: res://kenney_retro-medieval-kit/Isometric/wallFortifiedPaint_half_NE.png
Failed to get modified time for: res://kenney_retro-medieval-kit/Isometric/wallFortifiedPaint_half_NW.png
Failed to get modified time for: res://kenney_retro-medieval-kit/Isometric/wallFortifiedPaint_half_SE.png
Failed to get modified time for: res://kenney_retro-medieval-kit/Isometric/wallFortifiedPaint_half_SW.png
Failed to get modified time for: res://kenney_retro-medieval-kit/Isometric/wallFortifiedPaint_NE.png
Failed to get modified time for: res://kenney_retro-medieval-kit/Isometric/wallFortified_gateHalf_SW.png
Failed to get modified time for: res://kenney_retro-medieval-kit/Isometric/wallFortified_gate_NE.png
Failed to get modified time for: res://kenney_retro-medieval-kit/Isometric/wallFortified_gate_NW.png
Failed to get modified time for: res://kenney_retro-medieval-kit/Isometric/wallFortified_gate_SE.png
Failed to get modified time for: res://kenney_retro-medieval-kit/Isometric/wallFortified_gate_SW.png
Failed to get modified time for: res://kenney_retro-medieval-kit/Isometric/wallFortified_half_NE.png
Failed to get modified time for: res://kenney_retro-medieval-kit/Isometric/wallFortified_half_NW.png
Failed to get modified time for: res://kenney_retro-medieval-kit/Isometric/wallFortified_NW.png
Failed to get modified time for: res://kenney_retro-medieval-kit/Isometric/wallFortified_SE.png
Failed to get modified time for: res://kenney_retro-medieval-kit/Isometric/wallFortified_SW.png
Failed to get modified time for: res://kenney_retro-medieval-kit/Isometric/wallPaint_detail_NE.png
Failed to get modified time for: res://kenney_retro-medieval-kit/Isometric/wallPaint_detail_NW.png
Failed to get modified time for: res://kenney_retro-medieval-kit/Isometric/wallPaint_detail_SE.png
Failed to get modified time for: res://kenney_retro-medieval-kit/Isometric/wallPaint_detail_SW.png
Failed to get modified time for: res://kenney_retro-medieval-kit/Isometric/wallPaint_flat_NE.png
Failed to get modified time for: res://kenney_retro-medieval-kit/Isometric/wallPaint_gate_NW.png
Failed to get modified time for: res://kenney_retro-medieval-kit/Isometric/wallPaint_gate_SE.png
Failed to get modified time for: res://kenney_retro-medieval-kit/Isometric/wallPaint_gate_SW.png
Failed to get modified time for: res://kenney_retro-medieval-kit/Isometric/wallPaint_half_NE.png
Failed to get modified time for: res://kenney_retro-medieval-kit/Isometric/wallPaint_half_NW.png
Failed to get modified time for: res://kenney_retro-medieval-kit/Isometric/wallPaint_half_SE.png
Failed to get modified time for: res://kenney_retro-medieval-kit/Isometric/wallPaint_half_SW.png
Failed to get modified time for: res://kenney_retro-medieval-kit/Isometric/wallPaint_SW.png
Failed to get modified time for: res://kenney_retro-medieval-kit/Isometric/wall_detail_NE.png
Failed to get modified time for: res://kenney_retro-medieval-kit/Isometric/wall_detail_NW.png
Failed to get modified time for: res://kenney_retro-medieval-kit/Isometric/wall_detail_SE.png
Failed to get modified time for: res://kenney_retro-medieval-kit/Isometric/wall_detail_SW.png
Failed to get modified time for: res://kenney_retro-medieval-kit/Isometric/wall_flatGate_NE.png
Failed to get modified time for: res://kenney_retro-medieval-kit/Isometric/wall_flatGate_NW.png
Failed to get modified time for: res://kenney_retro-medieval-kit/Isometric/wall_flat_SW.png
Failed to get modified time for: res://kenney_retro-medieval-kit/Isometric/wall_gateHalf_NE.png
Failed to get modified time for: res://kenney_retro-medieval-kit/Isometric/wall_gateHalf_NW.png
Failed to get modified time for: res://kenney_retro-medieval-kit/Isometric/wall_gateHalf_SE.png
Failed to get modified time for: res://kenney_retro-medieval-kit/Isometric/wall_gateHalf_SW.png
Failed to get modified time for: res://kenney_retro-medieval-kit/Isometric/wall_gate_NE.png
Failed to get modified time for: res://kenney_retro-medieval-kit/Isometric/wall_gate_NW.png
Failed to get modified time for: res://kenney_retro-medieval-kit/Isometric/wall_half_NW.png
Failed to get modified time for: res://kenney_retro-medieval-kit/Isometric/wall_half_SE.png
Failed to get modified time for: res://kenney_retro-medieval-kit/Isometric/wall_half_SW.png
Failed to get modified time for: res://kenney_retro-medieval-kit/Isometric/wall_low_NE.png
Failed to get modified time for: res://kenney_retro-medieval-kit/Isometric/wall_low_NW.png
Failed to get modified time for: res://kenney_retro-medieval-kit/Isometric/wall_low_SE.png
Failed to get modified time for: res://kenney_retro-medieval-kit/Isometric/wall_low_SW.png
Failed to get modified time for: res://kenney_retro-medieval-kit/Isometric/wall_SE.png
Failed to get modified time for: res://kenney_retro-medieval-kit/Isometric/wall_SW.png
ERROR: Condition "!res.is_valid()" is true. Returning: ERR_CANT_OPEN
at: load_resource (editor\editor_node.cpp:1193)
ERROR: Cannot navigate to 'res://kenney_retro-medieval-kit/Isometric/battlement_cornerOuter_NE.png' as it has not been found in th! at: (editor\filesystem_dock.cpp:726)
ERROR: Condition "!res.is_valid()" is true. Returning: ERR_CANT_OPEN
at: load_resource (editor\editor_node.cpp:1193)
ERROR: Cannot navigate to 'res://kenney_retro-medieval-kit/Isometric/battlement_cornerOuter_NE.png' as it has not been found in th! at: (editor\filesystem_dock.cpp:726)
ERROR: Condition "!res.is_valid()" is true. Returning: ERR_CANT_OPEN
at: load_resource (editor\editor_node.cpp:1193)
ERROR: Cannot navigate to 'res://kenney_retro-medieval-kit/Isometric/battlement_cornerOuter_NE.png' as it has not been found in th! at: (editor\filesystem_dock.cpp:726)
ERROR: Condition "!res.is_valid()" is true. Returning: ERR_CANT_OPEN
at: load_resource (editor\editor_node.cpp:1193)
ERROR: Cannot navigate to 'res://kenney_retro-medieval-kit/Isometric/battlement_cornerOuter_NE.png' as it has not been found in th! at: (editor\filesystem_dock.cpp:726)
Repro steps:
I assume the problem is the click gets processed before the filesystem dock is updated to reflect the new state of the project directory. It might be the same for the tooltip timer. If that's the cause maybe the dock can be marked as dirty/invalid and prevent any interactions until the I/O operations have finished and project tree is up to date.
As to why it's hard to reproduce, I'm guessing if delete operation is fast enough the dock gets updated before the tooltip timer runs out or before you have a chance to click on anything.
Here's the MRP. It's just a new project with default settings and some assets inside.
Ok I got it to fail consistently on my SSD too. When I get the delete confirmation dialog I hover over the first file under the folder I'm deleting, press enter to confirm and click immediately after that. I'm pretty convinced the tooltip crash depends on whether the delete operation takes more or less than 0.5 seconds.
That is interesting, there might be something with hover. I noticed crashes when in debug, hovering over a variable in Godot 4 editor crashed my system with weird graphical glitch, like squares filling the screen. Like something was writing to graphical buffer. I understand that is a separate issue, but just though I let you know.
I built the editor from #83487 and I haven't been able to make it crash any more. On the slow networked filesystem, what I noticed is that after Windows deletes the files and before Godot updates the filesystem dock I got several seconds where I could still see the deleted files listed in the dock and interact with them.
Instead of a crash I got toasts with the error check KoBeWi added
ERROR: Cannot navigate to 'res://kenney_retro-medieval-kit/Isometric/battlement_cornerInner_NE.png' as it has not been found in the file system!
at: (editor\filesystem_dock.cpp:726)
ERROR: Condition "!FileAccess::exists(p_path)" is true. Returning: nullptr
at: create_tooltip_for_path (editor\filesystem_dock.cpp:2506)
Eventually the editor freezes again for a brief moment and the file tree gets updated.
Godot version
v4.1.1.stable.official (bd6af8e0ea69167dd0627f3bd54f9105bda0f8b5)
System information
Linux pop-os 6.5.4-76060504-generic, RTX3060
Issue description
When deleting folders with png files that are not used anymore by anything, editor crashes with following error message I am using editor file browser.
I am unsure are there any more specific conditions that has to be met to trigger this issue I had folders with animation frames that were used by AnimatedSprite2D. PNG 1k, maybe 60 frames or more.
Steps to reproduce
There must be more then just deleting png's as in small example project I am unable to reproduce. I will try to figure out what is necessary, but wanted to report it anyways.
Minimal reproduction project
not available