godotengine / godot

Godot Engine – Multi-platform 2D and 3D game engine
https://godotengine.org
MIT License
89.54k stars 20.68k forks source link

[D3D12] Segfault when importing GDQuest Third Person Controller demo #86106

Closed akien-mga closed 9 months ago

akien-mga commented 9 months ago

Tested versions

System information

Windows 10 - D3D12 (Forward+) - dedicated Radeon RX Vega (Advanced Micro Devices, Inc.) - AMD Ryzen 7 2700 Eight-Core Processor (16 Threads)

Issue description

While testing #70315 yesterday, I ran into a segfault when trying to open the GDQuest Third Person Controller demo with D3D12 in the editor. It seems to crash during import of some scenes.

My build was made without debug symbols so the stacktrace isn't useful. I'm not sure if I'll have time to debug further before going on holiday, so anyone interested can try to reproduce and post a stacktrace with debug symbols.

$ ./bin/godot.windows.editor.x86_64.console.exe
Godot Engine v4.3.dev.custom_build.f60b64765 - https://godotengine.org
OpenGL API 3.3.0 Core Profile Context 23.11.1.231017 - Compatibility - Using Dev
ice: ATI Technologies Inc. - Radeon RX Vega

Editing project: D:/Dev/Godot/Projects/godot-4-3d-third-person-controller
Godot Engine v4.3.dev.custom_build.f60b64765 - https://godotengine.org
D3D12 feature level 12_0 - Forward+ - Using D3D12 Adapter #0: Radeon RX Vega

WARNING: Blend file import is enabled in the project settings, but no Blender pa
th is configured in the editor settings. Blend files will not be imported.
     at: _editor_init (.\modules/gltf/register_types.cpp:63)
ERROR: Condition "!preset.is_valid()" is true. Continuing.
   at: EditorExport::load_config (.\editor/export/editor_export.cpp:225)
ERROR: Couldn't open MTL file 'res://Environment/grass/grass_1_geo.mtl', it may
not exist or not be readable.
   at: (.\editor/import/resource_importer_obj.cpp:48)
WARNING: Ignoring face with non-finite normal in LOD generation.
     at: ImporterMesh::generate_lods (.\scene/resources/importer_mesh.cpp:518)
ERROR: Command list Reset failed with error 0x80070057.
   at: (drivers\d3d12\rendering_device_d3d12.cpp:9023)
ERROR: Map failed with error 0x887a0005.
   at: (drivers\d3d12\rendering_device_d3d12.cpp:3042)
ERROR: Condition "data.size() == 0" is true. Returning: Ref<Image>()
   at: RendererRD::TextureStorage::texture_2d_get (.\servers/rendering/renderer_
rd/storage_rd/texture_storage.cpp:1272)
ERROR: CreateResource failed with error 0x887a0005.
   at: (drivers\d3d12\rendering_device_d3d12.cpp:2242)
ERROR: Condition "texture.rd_texture.is_null()" is true.
   at: RendererRD::TextureStorage::texture_2d_initialize (.\servers/rendering/re
nderer_rd/storage_rd/texture_storage.cpp:841)
ERROR: Attempting to use an uninitialized RID
   at: (.\core/templates/rid_owner.h:199)
ERROR: Parameter "tex" is null.
   at: RendererRD::TextureStorage::texture_set_size_override (.\servers/renderin
g/renderer_rd/storage_rd/texture_storage.cpp:1407)
ERROR: Attempting to use an uninitialized RID
   at: (.\core/templates/rid_owner.h:199)
ERROR: Parameter "tex" is null.
   at: RendererRD::TextureStorage::texture_set_path (.\servers/rendering/rendere
r_rd/storage_rd/texture_storage.cpp:1416)
ERROR: Attempting to use an uninitialized RID
   at: (.\core/templates/rid_owner.h:199)
ERROR: Parameter "tex" is null.
   at: RendererRD::TextureStorage::texture_set_detect_3d_callback (.\servers/ren
dering/renderer_rd/storage_rd/texture_storage.cpp:1437)
ERROR: Attempting to use an uninitialized RID
   at: (.\core/templates/rid_owner.h:199)
ERROR: Parameter "tex" is null.
   at: RendererRD::TextureStorage::texture_set_detect_roughness_callback (.\serv
ers/rendering/renderer_rd/storage_rd/texture_storage.cpp:1453)
ERROR: Attempting to use an uninitialized RID
   at: (.\core/templates/rid_owner.h:199)
ERROR: Parameter "tex" is null.
   at: RendererRD::TextureStorage::texture_set_detect_normal_callback (.\servers
/rendering/renderer_rd/storage_rd/texture_storage.cpp:1445)
ERROR: Attempting to use an uninitialized RID
   at: (.\core/templates/rid_owner.h:199)
ERROR: Parameter "tex" is null.
   at: RendererRD::TextureStorage::texture_set_path (.\servers/rendering/rendere
r_rd/storage_rd/texture_storage.cpp:1416)
ERROR: Attempting to use an uninitialized RID
   at: (.\core/templates/rid_owner.h:199)
ERROR: Parameter "tex" is null.
   at: RendererRD::TextureStorage::texture_2d_get (.\servers/rendering/renderer_
rd/storage_rd/texture_storage.cpp:1264)
ERROR: CreateResource failed with error 0x887a0005.
   at: (drivers\d3d12\rendering_device_d3d12.cpp:2242)
ERROR: Condition "texture.rd_texture.is_null()" is true.
   at: RendererRD::TextureStorage::texture_2d_initialize (.\servers/rendering/re
nderer_rd/storage_rd/texture_storage.cpp:841)
ERROR: Attempting to use an uninitialized RID
   at: (.\core/templates/rid_owner.h:199)
ERROR: Parameter "tex" is null.
   at: RendererRD::TextureStorage::texture_set_size_override (.\servers/renderin
g/renderer_rd/storage_rd/texture_storage.cpp:1407)
ERROR: Attempting to use an uninitialized RID
   at: (.\core/templates/rid_owner.h:199)
ERROR: Parameter "tex" is null.
   at: RendererRD::TextureStorage::texture_set_path (.\servers/rendering/rendere
r_rd/storage_rd/texture_storage.cpp:1416)
ERROR: Attempting to use an uninitialized RID
   at: (.\core/templates/rid_owner.h:199)
ERROR: Parameter "tex" is null.
   at: RendererRD::TextureStorage::texture_set_detect_3d_callback (.\servers/ren
dering/renderer_rd/storage_rd/texture_storage.cpp:1437)
ERROR: Attempting to use an uninitialized RID
   at: (.\core/templates/rid_owner.h:199)
ERROR: Parameter "tex" is null.
   at: RendererRD::TextureStorage::texture_set_detect_roughness_callback (.\serv
ers/rendering/renderer_rd/storage_rd/texture_storage.cpp:1453)
ERROR: Attempting to use an uninitialized RID
   at: (.\core/templates/rid_owner.h:199)
ERROR: Parameter "tex" is null.
   at: RendererRD::TextureStorage::texture_set_detect_normal_callback (.\servers
/rendering/renderer_rd/storage_rd/texture_storage.cpp:1445)
ERROR: Attempting to use an uninitialized RID
   at: (.\core/templates/rid_owner.h:199)
ERROR: Parameter "tex" is null.
   at: RendererRD::TextureStorage::texture_set_path (.\servers/rendering/rendere
r_rd/storage_rd/texture_storage.cpp:1416)
ERROR: Attempting to use an uninitialized RID
   at: (.\core/templates/rid_owner.h:199)
ERROR: Parameter "tex" is null.
   at: RendererRD::TextureStorage::texture_2d_get (.\servers/rendering/renderer_
rd/storage_rd/texture_storage.cpp:1264)
ERROR: CreateResource failed with error 0x887a0005.
   at: (drivers\d3d12\rendering_device_d3d12.cpp:2242)
ERROR: Condition "texture.rd_texture.is_null()" is true.
   at: RendererRD::TextureStorage::texture_2d_initialize (.\servers/rendering/re
nderer_rd/storage_rd/texture_storage.cpp:841)
ERROR: Attempting to use an uninitialized RID
   at: (.\core/templates/rid_owner.h:199)
ERROR: Parameter "tex" is null.
   at: RendererRD::TextureStorage::texture_set_size_override (.\servers/renderin
g/renderer_rd/storage_rd/texture_storage.cpp:1407)
ERROR: Attempting to use an uninitialized RID
   at: (.\core/templates/rid_owner.h:199)
ERROR: Parameter "tex" is null.
   at: RendererRD::TextureStorage::texture_set_path (.\servers/rendering/rendere
r_rd/storage_rd/texture_storage.cpp:1416)
ERROR: Attempting to use an uninitialized RID
   at: (.\core/templates/rid_owner.h:199)
ERROR: Parameter "tex" is null.
   at: RendererRD::TextureStorage::texture_set_detect_3d_callback (.\servers/ren
dering/renderer_rd/storage_rd/texture_storage.cpp:1437)
ERROR: Attempting to use an uninitialized RID
   at: (.\core/templates/rid_owner.h:199)
ERROR: Parameter "tex" is null.
   at: RendererRD::TextureStorage::texture_set_detect_roughness_callback (.\serv
ers/rendering/renderer_rd/storage_rd/texture_storage.cpp:1453)
ERROR: Attempting to use an uninitialized RID
   at: (.\core/templates/rid_owner.h:199)
ERROR: Parameter "tex" is null.
   at: RendererRD::TextureStorage::texture_set_detect_normal_callback (.\servers
/rendering/renderer_rd/storage_rd/texture_storage.cpp:1445)
ERROR: Attempting to use an uninitialized RID
   at: (.\core/templates/rid_owner.h:199)
ERROR: Parameter "tex" is null.
   at: RendererRD::TextureStorage::texture_set_path (.\servers/rendering/rendere
r_rd/storage_rd/texture_storage.cpp:1416)
ERROR: Attempting to use an uninitialized RID
   at: (.\core/templates/rid_owner.h:199)
ERROR: Parameter "tex" is null.
   at: RendererRD::TextureStorage::texture_2d_get (.\servers/rendering/renderer_
rd/storage_rd/texture_storage.cpp:1264)
ERROR: CreateResource failed with error 0x887a0005.
   at: (drivers\d3d12\rendering_device_d3d12.cpp:2242)
ERROR: Condition "texture.rd_texture.is_null()" is true.
   at: RendererRD::TextureStorage::texture_2d_initialize (.\servers/rendering/re
nderer_rd/storage_rd/texture_storage.cpp:841)
ERROR: Attempting to use an uninitialized RID
   at: (.\core/templates/rid_owner.h:199)
ERROR: Parameter "tex" is null.
   at: RendererRD::TextureStorage::texture_set_size_override (.\servers/renderin
g/renderer_rd/storage_rd/texture_storage.cpp:1407)
ERROR: Attempting to use an uninitialized RID
   at: (.\core/templates/rid_owner.h:199)
ERROR: Parameter "tex" is null.
   at: RendererRD::TextureStorage::texture_set_path (.\servers/rendering/rendere
r_rd/storage_rd/texture_storage.cpp:1416)
ERROR: Attempting to use an uninitialized RID
   at: (.\core/templates/rid_owner.h:199)
ERROR: Parameter "tex" is null.
   at: RendererRD::TextureStorage::texture_set_detect_3d_callback (.\servers/ren
dering/renderer_rd/storage_rd/texture_storage.cpp:1437)
ERROR: Attempting to use an uninitialized RID
   at: (.\core/templates/rid_owner.h:199)
ERROR: Parameter "tex" is null.
   at: RendererRD::TextureStorage::texture_set_detect_roughness_callback (.\serv
ers/rendering/renderer_rd/storage_rd/texture_storage.cpp:1453)
ERROR: Attempting to use an uninitialized RID
   at: (.\core/templates/rid_owner.h:199)
ERROR: Parameter "tex" is null.
   at: RendererRD::TextureStorage::texture_set_detect_normal_callback (.\servers
/rendering/renderer_rd/storage_rd/texture_storage.cpp:1445)
ERROR: Attempting to use an uninitialized RID
   at: (.\core/templates/rid_owner.h:199)
ERROR: Parameter "tex" is null.
   at: RendererRD::TextureStorage::texture_set_path (.\servers/rendering/rendere
r_rd/storage_rd/texture_storage.cpp:1416)
ERROR: Attempting to use an uninitialized RID
   at: (.\core/templates/rid_owner.h:199)
ERROR: Parameter "tex" is null.
   at: RendererRD::TextureStorage::texture_2d_get (.\servers/rendering/renderer_
rd/storage_rd/texture_storage.cpp:1264)
ERROR: Attempting to use an uninitialized RID
   at: (.\core/templates/rid_owner.h:199)
ERROR: Parameter "t" is null.
   at: RendererRD::TextureStorage::texture_free (.\servers/rendering/renderer_rd
/storage_rd/texture_storage.cpp:767)
ERROR: Can't create buffer of size: 432, error 0x887a0005.
   at: (drivers\d3d12\rendering_device_d3d12.cpp:1694)
ERROR: Condition "err != OK" is true. Returning: RID()
   at: RenderingDeviceD3D12::vertex_buffer_create (drivers\d3d12\rendering_devic
e_d3d12.cpp:4039)
ERROR: Can't create buffer of size: 144, error 0x887a0005.
   at: (drivers\d3d12\rendering_device_d3d12.cpp:1694)
ERROR: Condition "err != OK" is true. Returning: RID()
   at: RenderingDeviceD3D12::vertex_buffer_create (drivers\d3d12\rendering_devic
e_d3d12.cpp:4039)
ERROR: Can't create buffer of size: 192, error 0x887a0005.
   at: (drivers\d3d12\rendering_device_d3d12.cpp:1694)
ERROR: Condition "err != OK" is true. Returning: RID()
   at: RenderingDeviceD3D12::index_buffer_create (drivers\d3d12\rendering_device
_d3d12.cpp:4213)
ERROR: Condition "!index_buffer_owner.owns(p_index_buffer)" is true. Returning:
RID()
   at: RenderingDeviceD3D12::index_array_create (drivers\d3d12\rendering_device_
d3d12.cpp:4230)
ERROR: Can't create buffer of size: 204, error 0x887a0005.
   at: (drivers\d3d12\rendering_device_d3d12.cpp:1694)
ERROR: Condition "err != OK" is true. Returning: RID()
   at: RenderingDeviceD3D12::vertex_buffer_create (drivers\d3d12\rendering_devic
e_d3d12.cpp:4039)
ERROR: Can't create buffer of size: 68, error 0x887a0005.
   at: (drivers\d3d12\rendering_device_d3d12.cpp:1694)
ERROR: Condition "err != OK" is true. Returning: RID()
   at: RenderingDeviceD3D12::vertex_buffer_create (drivers\d3d12\rendering_devic
e_d3d12.cpp:4039)
ERROR: Can't create buffer of size: 144, error 0x887a0005.
   at: (drivers\d3d12\rendering_device_d3d12.cpp:1694)
ERROR: Condition "err != OK" is true. Returning: RID()
   at: RenderingDeviceD3D12::index_buffer_create (drivers\d3d12\rendering_device
_d3d12.cpp:4213)
ERROR: Condition "!index_buffer_owner.owns(p_index_buffer)" is true. Returning:
RID()
   at: RenderingDeviceD3D12::index_array_create (drivers\d3d12\rendering_device_
d3d12.cpp:4230)
ERROR: Can't create buffer of size: 72, error 0x887a0005.
   at: (drivers\d3d12\rendering_device_d3d12.cpp:1694)
ERROR: Condition "err != OK" is true. Returning: RID()
   at: RenderingDeviceD3D12::index_buffer_create (drivers\d3d12\rendering_device
_d3d12.cpp:4213)
ERROR: Condition "!index_buffer_owner.owns(p_index_buffer)" is true. Returning:
RID()
   at: RenderingDeviceD3D12::index_array_create (drivers\d3d12\rendering_device_
d3d12.cpp:4230)
ERROR: Can't create buffer of size: 36, error 0x887a0005.
   at: (drivers\d3d12\rendering_device_d3d12.cpp:1694)
ERROR: Condition "err != OK" is true. Returning: RID()
   at: RenderingDeviceD3D12::index_buffer_create (drivers\d3d12\rendering_device
_d3d12.cpp:4213)
ERROR: Condition "!index_buffer_owner.owns(p_index_buffer)" is true. Returning:
RID()
   at: RenderingDeviceD3D12::index_array_create (drivers\d3d12\rendering_device_
d3d12.cpp:4230)
ERROR: Can't create buffer of size: 288, error 0x887a0005.
   at: (drivers\d3d12\rendering_device_d3d12.cpp:1694)
ERROR: Condition "err != OK" is true. Returning: RID()
   at: RenderingDeviceD3D12::vertex_buffer_create (drivers\d3d12\rendering_devic
e_d3d12.cpp:4039)
ERROR: Can't create buffer of size: 192, error 0x887a0005.
   at: (drivers\d3d12\rendering_device_d3d12.cpp:1694)
ERROR: Condition "err != OK" is true. Returning: RID()
   at: RenderingDeviceD3D12::index_buffer_create (drivers\d3d12\rendering_device
_d3d12.cpp:4213)
ERROR: Condition "!index_buffer_owner.owns(p_index_buffer)" is true. Returning:
RID()
   at: RenderingDeviceD3D12::index_array_create (drivers\d3d12\rendering_device_
d3d12.cpp:4230)
ERROR: Can't create buffer of size: 136, error 0x887a0005.
   at: (drivers\d3d12\rendering_device_d3d12.cpp:1694)
ERROR: Condition "err != OK" is true. Returning: RID()
   at: RenderingDeviceD3D12::vertex_buffer_create (drivers\d3d12\rendering_devic
e_d3d12.cpp:4039)
ERROR: Can't create buffer of size: 144, error 0x887a0005.
   at: (drivers\d3d12\rendering_device_d3d12.cpp:1694)
ERROR: Condition "err != OK" is true. Returning: RID()
   at: RenderingDeviceD3D12::index_buffer_create (drivers\d3d12\rendering_device
_d3d12.cpp:4213)
ERROR: Condition "!index_buffer_owner.owns(p_index_buffer)" is true. Returning:
RID()
   at: RenderingDeviceD3D12::index_array_create (drivers\d3d12\rendering_device_
d3d12.cpp:4230)
ERROR: Can't create buffer of size: 72, error 0x887a0005.
   at: (drivers\d3d12\rendering_device_d3d12.cpp:1694)
ERROR: Condition "err != OK" is true. Returning: RID()
   at: RenderingDeviceD3D12::index_buffer_create (drivers\d3d12\rendering_device
_d3d12.cpp:4213)
ERROR: Condition "!index_buffer_owner.owns(p_index_buffer)" is true. Returning:
RID()
   at: RenderingDeviceD3D12::index_array_create (drivers\d3d12\rendering_device_
d3d12.cpp:4230)
ERROR: Can't create buffer of size: 36, error 0x887a0005.
   at: (drivers\d3d12\rendering_device_d3d12.cpp:1694)
ERROR: Condition "err != OK" is true. Returning: RID()
   at: RenderingDeviceD3D12::index_buffer_create (drivers\d3d12\rendering_device
_d3d12.cpp:4213)
ERROR: Condition "!index_buffer_owner.owns(p_index_buffer)" is true. Returning:
RID()
   at: RenderingDeviceD3D12::index_array_create (drivers\d3d12\rendering_device_
d3d12.cpp:4230)
ERROR: Condition "res" is true. Returning: ERR_UNAVAILABLE
   at: D3D12Context::_update_swap_chain (drivers\d3d12\d3d12_context.cpp:742)
ERROR: CreateRootSignature failed with error 0x887a0005.
   at: (drivers\d3d12\rendering_device_d3d12.cpp:5236)
ERROR: Parameter "p_version->variants" is null.
   at: ShaderRD::_allocate_placeholders (.\servers/rendering/renderer_rd/shader_
rd.cpp:483)
ERROR: Parameter "p_version->variants" is null.
   at: ShaderRD::_allocate_placeholders (.\servers/rendering/renderer_rd/shader_
rd.cpp:483)
ERROR: Parameter "p_version->variants" is null.
   at: ShaderRD::_allocate_placeholders (.\servers/rendering/renderer_rd/shader_
rd.cpp:483)
ERROR: Condition "!shader_singleton->shader.version_is_valid(version)" is true.
   at: RendererSceneRenderImplementation::SceneShaderForwardClustered::ShaderDat
a::set_code (servers\rendering\renderer_rd\forward_clustered\scene_shader_forwar
d_clustered.cpp:181)
ERROR: Map failed with error 0x887a0005.
   at: (drivers\d3d12\rendering_device_d3d12.cpp:1903)
ERROR: Map failed with error 0x887a0005.
   at: (drivers\d3d12\rendering_device_d3d12.cpp:1903)
ERROR: Map failed with error 0x887a0005.
   at: (drivers\d3d12\rendering_device_d3d12.cpp:1903)
ERROR: Map failed with error 0x887a0005.
   at: (drivers\d3d12\rendering_device_d3d12.cpp:1903)
ERROR: Map failed with error 0x887a0005.
   at: (drivers\d3d12\rendering_device_d3d12.cpp:1903)
ERROR: Map failed with error 0x887a0005.
   at: (drivers\d3d12\rendering_device_d3d12.cpp:1903)
ERROR: Map failed with error 0x887a0005.
   at: (drivers\d3d12\rendering_device_d3d12.cpp:1903)
ERROR: Map failed with error 0x887a0005.
   at: (drivers\d3d12\rendering_device_d3d12.cpp:1903)
ERROR: Map failed with error 0x887a0005.
   at: (drivers\d3d12\rendering_device_d3d12.cpp:1903)
ERROR: Map failed with error 0x887a0005.
   at: (drivers\d3d12\rendering_device_d3d12.cpp:1903)
ERROR: Map failed with error 0x887a0005.
   at: (drivers\d3d12\rendering_device_d3d12.cpp:1903)
ERROR: Map failed with error 0x887a0005.
   at: (drivers\d3d12\rendering_device_d3d12.cpp:1903)
ERROR: Map failed with error 0x887a0005.
   at: (drivers\d3d12\rendering_device_d3d12.cpp:1903)
ERROR: Map failed with error 0x887a0005.
   at: (drivers\d3d12\rendering_device_d3d12.cpp:1903)
ERROR: Map failed with error 0x887a0005.
   at: (drivers\d3d12\rendering_device_d3d12.cpp:1903)
ERROR: Map failed with error 0x887a0005.
   at: (drivers\d3d12\rendering_device_d3d12.cpp:1903)
ERROR: Map failed with error 0x887a0005.
   at: (drivers\d3d12\rendering_device_d3d12.cpp:1903)
ERROR: Map failed with error 0x887a0005.
   at: (drivers\d3d12\rendering_device_d3d12.cpp:1903)
ERROR: Map failed with error 0x887a0005.
   at: (drivers\d3d12\rendering_device_d3d12.cpp:1903)
ERROR: Map failed with error 0x887a0005.
   at: (drivers\d3d12\rendering_device_d3d12.cpp:1903)
ERROR: Map failed with error 0x887a0005.
   at: (drivers\d3d12\rendering_device_d3d12.cpp:1903)

================================================================
CrashHandlerException: Program crashed
Engine version: Godot Engine v4.3.dev.custom_build (f60b64765c52d043a1fc2405af5b
375d22864914)
Dumping the backtrace. Please include this when reporting the bug to the project
 developer.
[0] <couldn't map PC to fn name>
[1] <couldn't map PC to fn name>
[2] <couldn't map PC to fn name>
[3] <couldn't map PC to fn name>
[4] <couldn't map PC to fn name>
[5] <couldn't map PC to fn name>
[6] <couldn't map PC to fn name>
[7] <couldn't map PC to fn name>
[8] <couldn't map PC to fn name>
[9] <couldn't map PC to fn name>
[10] <couldn't map PC to fn name>
[11] <couldn't map PC to fn name>
[12] <couldn't map PC to fn name>
[13] <couldn't map PC to fn name>
[14] <couldn't map PC to fn name>
[15] <couldn't map PC to fn name>
[16] <couldn't map PC to fn name>
[17] <couldn't map PC to fn name>
[18] <couldn't map PC to fn name>
[19] <couldn't map PC to fn name>
[20] <couldn't map PC to fn name>
[21] <couldn't map PC to fn name>
[22] <couldn't map PC to fn name>
[23] <couldn't map PC to fn name>
[24] <couldn't map PC to fn name>
[25] <couldn't map PC to fn name>
-- END OF BACKTRACE --
================================================================

Steps to reproduce

Minimal reproduction project (MRP)

https://github.com/gdquest-demos/godot-4-3d-third-person-controller

RandomShaper commented 9 months ago

This happens due to a compressed texture whose size is not multiple of block size (4x4), during a texture read operation. Since #83452 overhauls that function to make it API-agnostic, it may very well be the case that this is already fixed there. If it's not, I'll anyway fix it already there since otherwise it'd be like fixing it twice.