godotengine / godotengine/godot

After clicking "upgrade all resources" editor crashes on restart.

Closed
#123,249 3 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

bug crash needs testing regression topic:editor
Dominant language
C++
Stars
117k
Forks
26.8k
PR merge metrics
PR metrics pending

Description

Tested versions

Godot 4.7

System information

Windows 10

Issue description

Switched to 4.7 after some time ago.
Seen some UID warnings in the log.
Clicked on Upgrade All Resources.
After restart it keeps crashing.


godot.windows.editor.dev.x86_64.exe!StringName::operator==(const StringName & p_name) Line 112 (d:\Godot\core\string\string_name.h:112)
godot.windows.editor.dev.x86_64.exe!HashMapComparatorDefault<StringName,void>::compare(const StringName & p_lhs, const StringName & p_rhs) Line 304 (d:\Godot\core\templates\hashfuncs.h:304)
godot.windows.editor.dev.x86_64.exe!HashMap<StringName,Variant,HashMapHasherDefault,HashMapComparatorDefault<StringName,void>,DefaultTypedAllocator<HashMapElement<StringName,Variant>>>::_lookup_idx_unchecked(const StringName & p_key, unsigned int p_hash, unsigned int & r_idx) Line 130 (d:\Godot\core\templates\hash_map.h:130)
godot.windows.editor.dev.x86_64.exe!HashMap<StringName,Variant,HashMapHasherDefault,HashMapComparatorDefault<StringName,void>,DefaultTypedAllocator<HashMapElement<StringName,Variant>>>::_lookup_idx(const StringName & p_key, unsigned int & r_idx) Line 111 (d:\Godot\core\templates\hash_map.h:111)
godot.windows.editor.dev.x86_64.exe!HashMap<StringName,Variant,HashMapHasherDefault,HashMapComparatorDefault<StringName,void>,DefaultTypedAllocator<HashMapElement<StringName,Variant>>>::has(const StringName & p_key) Line 323 (d:\Godot\core\templates\hash_map.h:323)
godot.windows.editor.dev.x86_64.exe!ClassDB::class_get_default_property_value(const StringName & p_class, const StringName & p_property, bool * r_valid) Line 2216 (d:\Godot\core\object\class_db.cpp:2216)
godot.windows.editor.dev.x86_64.exe!PropertyUtils::get_property_default_value(const Object * p_object, const StringName & p_property, bool * r_is_valid, const Vector<SceneState::PackState> * p_states_stack_cache, bool p_update_exports, const Node * p_owner, bool * r_is_class_default) Line 177 (d:\Godot\scene\property_utils.cpp:177)
godot.windows.editor.dev.x86_64.exe!ResourceFormatSaverBinaryInstance::save(const String & p_path, const Ref<Resource> & p_resource, unsigned int p_flags) Line 2231 (d:\Godot\core\io\resource_format_binary.cpp:2231)
godot.windows.editor.dev.x86_64.exe!ResourceFormatSaverBinary::save(const Ref<Resource> & p_resource, const String & p_path, unsigned int p_flags) Line 2463 (d:\Godot\core\io\resource_format_binary.cpp:2463)
godot.windows.editor.dev.x86_64.exe!ResourceSaver::save(RequiredParam<Resource> rp_resource, const String & p_path, unsigned int p_flags) Line 129 (d:\Godot\core\io\resource_saver.cpp:129)
godot.windows.editor.dev.x86_64.exe!ResourceImporterDynamicFont::import(__int64 p_source_id, const String & p_source_file, const String & p_save_path, const HashMap<StringName,Variant,HashMapHasherDefault,HashMapComparatorDefault<StringName,void>,DefaultTypedAllocator<HashMapElement<StringName,Variant>>> & p_options, List<String,DefaultAllocator> * r_platform_variants, List<String,DefaultAllocator> * r_gen_files, Variant * r_metadata) Line 297 (d:\Godot\editor\import\resource_importer_dynamic_font.cpp:297)
godot.windows.editor.dev.x86_64.exe!EditorFileSystem::_reimport_file(const String & p_file, const HashMap<StringName,Variant,HashMapHasherDefault,HashMapComparatorDefault<StringName,void>,DefaultTypedAllocator<HashMapElement<StringName,Variant>>> & p_custom_options, const String & p_custom_importer, Variant * p_generator_parameters, bool p_update_file_system) Line 2942 (d:\Godot\editor\file_system\editor_file_system.cpp:2942)
godot.windows.editor.dev.x86_64.exe!EditorFileSystem::_reimport_thread(unsigned int p_index, EditorFileSystem::ImportThreadData * p_import_data) Line 3252 (d:\Godot\editor\file_system\editor_file_system.cpp:3252)
godot.windows.editor.dev.x86_64.exe!WorkerThreadPool::GroupUserData<EditorFileSystem,void (__cdecl EditorFileSystem::*)(unsigned int,EditorFileSystem::ImportThreadData *),EditorFileSystem::ImportThreadData *>::callback_indexed(unsigned int p_index) Line 216 (d:\Godot\core\object\worker_thread_pool.h:216)
godot.windows.editor.dev.x86_64.exe!WorkerThreadPool::_process_task(WorkerThreadPool::Task * p_task) Line 106 (d:\Godot\core\object\worker_thread_pool.cpp:106)
godot.windows.editor.dev.x86_64.exe!WorkerThreadPool::_thread_function(void * p_user) Line 220 (d:\Godot\core\object\worker_thread_pool.cpp:220)
godot.windows.editor.dev.x86_64.exe!Thread::callback(unsigned __int64 p_caller_id, const Thread::Settings & p_settings, void(*)(void *) p_callback, void * p_userdata) Line 64 (d:\Godot\core\os\thread.cpp:64)
godot.windows.editor.dev.x86_64.exe!std::invoke<void (__cdecl*)(unsigned __int64,Thread::Settings const &,void (__cdecl*)(void *),void *),unsigned __int64,Thread::Settings,void (__cdecl*)(void *),void *>(void(*)(unsigned __int64, const Thread::Settings &, void(*)(void *), void *) && _Obj, unsigned __int64 && _Arg1, Thread::Settings && <_Args2_0>, void(*)(void *) && <_Args2_1>, void * && <_Args2_2>) Line 1680 (c:\Program Files (x86)\Microsoft Visual Studio\2022\BuildTools\VC\Tools\MSVC\14.44.35207\include\type_traits:1680)
godot.windows.editor.dev.x86_64.exe!std::thread::_Invoke<std::tuple<void (__cdecl*)(unsigned __int64,Thread::Settings const &,void (__cdecl*)(void *),void *),unsigned __int64,Thread::Settings,void (__cdecl*)(void *),void *>,0,1,2,3,4>(void * _RawVals) Line 61 (c:\Program Files (x86)\Microsoft Visual Studio\2022\BuildTools\VC\Tools\MSVC\14.44.35207\include\thread:61)
godot.windows.editor.dev.x86_64.exe!thread_start<unsigned int (__cdecl*)(void *),1>(void * const parameter) Line 97 (c:\Users\yanda\AppData\Local\Programs\Microsoft VS Code\minkernel\crts\ucrt\src\appcrt\startup\thread.cpp:97)
kernel32.dll!00007ffb3ddd7374() (Unknown Source:0)
ntdll.dll!00007ffb3ebbcc91() (Unknown Source:0)

My attempt to give more insight info:

Image Image Image
Steps to reproduce

N/A

Minimal reproduction project (MRP)

N/A

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by reproducing the crash after clicking “Upgrade All Resources” in Godot 4.7 on Windows, then inspect editor/import/resource_importer_dynamic_font.cpp and the save path through core/io/resource_format_binary.cpp and scene/property_utils.cpp shown in the stack trace. Use the crash stack and attached screenshots to narrow the failing resource; done means the project restarts and resource reimport completes without crashing.

Written by the indexing model from the issue text.

Assessment

Tech stack
cpp
Domain
game-dev
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Active
Clarity
Needs clarification
Newbie friendliness
45/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.