godotengine / godot

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

Crash in `render_pipeline_create` in a build with double enabled #80684

Open QbieShay opened 1 year ago

QbieShay commented 1 year ago

Godot version

v4.2.dev.custom_build.90f90cbcb

System information

Fedora, RX 590

Issue description

If i try to open any project or create a new project in a build with doubles enabled i get this crash

[1] /lib64/libc.so.6(+0x3ea00) [0x7ffb96a3ea00] (??:0)
[2] /usr/lib64/libvulkan_radeon.so(+0xdf889) [0x7ffb7a0df889] (??:0)
[3] /usr/lib64/libvulkan_radeon.so(+0xe96ca) [0x7ffb7a0e96ca] (??:0)
[4] /usr/lib64/libvulkan_radeon.so(+0xecb98) [0x7ffb7a0ecb98] (??:0)
[5] RenderingDeviceVulkan::render_pipeline_create(RID, long, long, RenderingDevice::RenderPrimitive, RenderingDevice::PipelineRasterizationState const&, RenderingDevice::PipelineMultisampleState const&, RenderingDevice::PipelineDepthStencilState const&, RenderingDevice::PipelineColorBlendState const&, BitField<RenderingDevice::PipelineDynamicStateFlags>, unsigned int, Vector<RenderingDevice::PipelineSpecializationConstant> const&) (/run/media/qbie/WorkData/Projects/godot/drivers/vulkan/rendering_device_vulkan.cpp:6527)
[6] RendererCanvasRenderRD::RendererCanvasRenderRD() (/run/media/qbie/WorkData/Projects/godot/servers/rendering/renderer_rd/renderer_canvas_render_rd.cpp:2559 (discriminator 9))
[7] RendererCompositorRD::RendererCompositorRD() (/run/media/qbie/WorkData/Projects/godot/servers/rendering/renderer_rd/renderer_compositor_rd.cpp:306 (discriminator 2))
[8] RendererCompositorRD::_create_current() (/run/media/qbie/WorkData/Projects/godot/./servers/rendering/renderer_rd/renderer_compositor_rd.h:138)
[9] RendererCompositor::create() (/run/media/qbie/WorkData/Projects/godot/servers/rendering/renderer_compositor.cpp:45)
[10] RenderingServerDefault::RenderingServerDefault(bool) (/run/media/qbie/WorkData/Projects/godot/servers/rendering/rendering_server_default.cpp:413 (discriminator 2))
[11] Main::setup2() (/run/media/qbie/WorkData/Projects/godot/main/main.cpp:2298)
[12] Main::setup(char const*, int, char**, bool) (/run/media/qbie/WorkData/Projects/godot/main/main.cpp:2029)
[13] /run/media/qbie/WorkData/Projects/godot/bin/godot.linuxbsd.editor.dev.double.x86_64(main+0xff) [0x29d0b95] (/run/media/qbie/WorkData/Projects/godot/platform/linuxbsd/godot_linuxbsd.cpp:62)
[14] /lib64/libc.so.6(+0x29510) [0x7ffb96a29510] (??:0)
[15] /lib64/libc.so.6(__libc_start_main+0x89) [0x7ffb96a295c9] (??:0)
[16] /run/media/qbie/WorkData/Projects/godot/bin/godot.linuxbsd.editor.dev.double.x86_64(_start+0x25) [0x29d09d5] (??:?)

Steps to reproduce

Build godot with double_precision=yes, create new project (or open any project), it crashes

I only have forward+ projects, didn't test mobile renderer or gles3. Since it's a vulkan issue i imagine gles3 would work fine.

Minimal reproduction project

See above

darksylinc commented 1 year ago

Hi, please under "System information" post the output from Help -> Copy system Info

I want to determine whether you're using AMDVLK or AMDGPU-PRO (because libvulkan_radeon is definitely not RADV). If you already know this information, please post it.

There's 3 different Vulkan drivers from AMD for Linux (RADV, AMDVLK, and AMDGPU-PRO).

Obviously since the editor doesn't open for you, do this with the non-double version of the Editor. Alternatively you can first launch Godot with:

./godot -e --verbose

and it will output something like this:

Vulkan devices:
  #0: AMD AMD Radeon RX 6800 XT - Supported, Discrete
  #1: AMD AMD Radeon RX 6800 XT (RADV NAVI21) - Supported, Discrete
  #2: Unknown llvmpipe (LLVM 12.0.0, 256 bits) - Supported, CPU

Then (using this output as example) launch using RADV with:

./godot -e --gpu-index 1`

If RADV doesn't crash, you will at least be able to access Help -> Copy system Info

UPDATE

Nevermind! libvulkan_radeon is RADV! I got confused.

It would be great to know the Mesa version.

Please post the output of:

glxinfo | grep Mesa

(the output of Help -> Copy system Info is still appreciated though)

akien-mga commented 11 months ago

Is this still reproducible in the current master branch?

And to be clear, this crash doesn't happen in the 4.1 branch? I labelled this as regression back then but it's not obvious from the description whether it actually is one.

QbieShay commented 11 months ago

Reproduces as of [master after beta3 before beta4]

Crash log + mesa

[qbie@desktop-dunpf0o godot]$ 
================================================================
handle_crash: Program crashed with signal 8
Engine version: Godot Engine v4.2.beta.custom_build (dcbee437f7f238801e0c1a19a12a8d0e0aec63b4)
Dumping the backtrace. Please include this when reporting the bug to the project developer.
[1] /lib64/libc.so.6(+0x3ea00) [0x7f1fa103ea00] (??:0)
[2] /usr/lib64/libvulkan_radeon.so(+0xdf889) [0x7f1f846df889] (??:0)
[3] /usr/lib64/libvulkan_radeon.so(+0xe96ca) [0x7f1f846e96ca] (??:0)
[4] /usr/lib64/libvulkan_radeon.so(+0xecb98) [0x7f1f846ecb98] (??:0)
[5] /run/media/qbie/WorkData/Projects/godot/bin/godot.linuxbsd.editor.double.x86_64() [0x1274fd4] (??:0)
[6] /run/media/qbie/WorkData/Projects/godot/bin/godot.linuxbsd.editor.double.x86_64() [0x3a5ed7f] (??:0)
[7] /run/media/qbie/WorkData/Projects/godot/bin/godot.linuxbsd.editor.double.x86_64() [0x34bdc48] (??:0)
[8] /run/media/qbie/WorkData/Projects/godot/bin/godot.linuxbsd.editor.double.x86_64() [0x462b9b] (??:0)
[9] /run/media/qbie/WorkData/Projects/godot/bin/godot.linuxbsd.editor.double.x86_64() [0x33f7ac1] (??:0)
[10] /run/media/qbie/WorkData/Projects/godot/bin/godot.linuxbsd.editor.double.x86_64() [0x49f00a] (??:0)
[11] /run/media/qbie/WorkData/Projects/godot/bin/godot.linuxbsd.editor.double.x86_64() [0x4a7b25] (??:0)
[12] /run/media/qbie/WorkData/Projects/godot/bin/godot.linuxbsd.editor.double.x86_64() [0x425cfb] (??:0)
[13] /lib64/libc.so.6(+0x29510) [0x7f1fa1029510] (??:0)
[14] /lib64/libc.so.6(__libc_start_main+0x89) [0x7f1fa10295c9] (??:0)
[15] /run/media/qbie/WorkData/Projects/godot/bin/godot.linuxbsd.editor.double.x86_64() [0x432dd5] (??:0)
-- END OF BACKTRACE --
================================================================
[qbie@desktop-dunpf0o godot]$ glxinfo | grep Mesa
client glx vendor string: Mesa Project and SGI
OpenGL core profile version string: 4.6 (Core Profile) Mesa 22.1.7
OpenGL version string: 4.6 (Compatibility Profile) Mesa 22.1.7
OpenGL ES profile version string: OpenGL ES 3.2 Mesa 22.1.7
QbieShay commented 11 months ago

Useful stacktrace:

[1] /lib64/libc.so.6(+0x3ea00) [0x7f4280e3ea00] (??:0)
[2] /usr/lib64/libvulkan_radeon.so(+0xdf889) [0x7f42644df889] (??:0)
[3] /usr/lib64/libvulkan_radeon.so(+0xe96ca) [0x7f42644e96ca] (??:0)
[4] /usr/lib64/libvulkan_radeon.so(+0xecb98) [0x7f42644ecb98] (??:0)
[5] /run/media/qbie/WorkData/Projects/godot/bin/godot.linuxbsd.editor.double.x86_64() [0x1274fd4] (/run/media/qbie/WorkData/Projects/godot/drivers/vulkan/rendering_device_vulkan.cpp:6530)
[6] /run/media/qbie/WorkData/Projects/godot/bin/godot.linuxbsd.editor.double.x86_64() [0x3a5ed7f] (/run/media/qbie/WorkData/Projects/godot/./core/templates/cowdata.h:415)
[7] /run/media/qbie/WorkData/Projects/godot/bin/godot.linuxbsd.editor.double.x86_64() [0x34bdc48] (/run/media/qbie/WorkData/Projects/godot/servers/rendering/renderer_rd/renderer_compositor_rd.cpp:307)
[8] /run/media/qbie/WorkData/Projects/godot/bin/godot.linuxbsd.editor.double.x86_64() [0x462b9b] (/run/media/qbie/WorkData/Projects/godot/./servers/rendering/renderer_rd/renderer_compositor_rd.h:139)
[9] /run/media/qbie/WorkData/Projects/godot/bin/godot.linuxbsd.editor.double.x86_64() [0x33f7ac1] (/run/media/qbie/WorkData/Projects/godot/servers/rendering/rendering_server_default.cpp:411)
[10] /run/media/qbie/WorkData/Projects/godot/bin/godot.linuxbsd.editor.double.x86_64() [0x49f00a] (/run/media/qbie/WorkData/Projects/godot/./core/os/memory.h:90 (discriminator 3))
[11] /run/media/qbie/WorkData/Projects/godot/bin/godot.linuxbsd.editor.double.x86_64() [0x4a7b25] (/run/media/qbie/WorkData/Projects/godot/main/main.cpp:2161)
[12] /run/media/qbie/WorkData/Projects/godot/bin/godot.linuxbsd.editor.double.x86_64() [0x425cfb] (/run/media/qbie/WorkData/Projects/godot/platform/linuxbsd/godot_linuxbsd.cpp:62 (discriminator 2))
[13] /lib64/libc.so.6(+0x29510) [0x7f4280e29510] (??:0)
[14] /lib64/libc.so.6(__libc_start_main+0x89) [0x7f4280e295c9] (??:0)
[15] /run/media/qbie/WorkData/Projects/godot/bin/godot.linuxbsd.editor.double.x86_64() [0x432dd5] (??:?)
-- END OF BACKTRACE --
QbieShay commented 11 months ago

Crash in 4.1-stable

================================================================
handle_crash: Program crashed with signal 8
Engine version: Godot Engine v4.1.stable.custom_build (970459615f6b2b4151742ec6d7ef8559f87fd5c5)
Dumping the backtrace. Please include this when reporting the bug to the project developer.
[1] /lib64/libc.so.6(+0x3ea00) [0x7fd3eae3ea00] (??:0)
[2] /usr/lib64/libvulkan_radeon.so(+0xdf889) [0x7fd3ce4df889] (??:0)
[3] /usr/lib64/libvulkan_radeon.so(+0xe96ca) [0x7fd3ce4e96ca] (??:0)
[4] /usr/lib64/libvulkan_radeon.so(+0xecb98) [0x7fd3ce4ecb98] (??:0)
[5] /run/media/qbie/WorkData/Projects/godot/bin/godot.linuxbsd.editor.double.x86_64() [0x1ae9ddc] (/run/media/qbie/WorkData/Projects/godot/drivers/vulkan/rendering_device_vulkan.cpp:6402)
[6] /run/media/qbie/WorkData/Projects/godot/bin/godot.linuxbsd.editor.double.x86_64() [0x45a9379] (/run/media/qbie/WorkData/Projects/godot/./core/templates/cowdata.h:412)
[7] /run/media/qbie/WorkData/Projects/godot/bin/godot.linuxbsd.editor.double.x86_64() [0x3ffe6c6] (/run/media/qbie/WorkData/Projects/godot/servers/rendering/renderer_rd/renderer_compositor_rd.cpp:304)
[8] /run/media/qbie/WorkData/Projects/godot/bin/godot.linuxbsd.editor.double.x86_64() [0xb2071b] (/run/media/qbie/WorkData/Projects/godot/./servers/rendering/renderer_rd/renderer_compositor_rd.h:139)
[9] /run/media/qbie/WorkData/Projects/godot/bin/godot.linuxbsd.editor.double.x86_64() [0x3f242dd] (/run/media/qbie/WorkData/Projects/godot/servers/rendering/rendering_server_default.cpp:419)
[10] /run/media/qbie/WorkData/Projects/godot/bin/godot.linuxbsd.editor.double.x86_64() [0xb5f2c0] (/run/media/qbie/WorkData/Projects/godot/./core/os/memory.h:90 (discriminator 14))
[11] /run/media/qbie/WorkData/Projects/godot/bin/godot.linuxbsd.editor.double.x86_64() [0xb67328] (/run/media/qbie/WorkData/Projects/godot/main/main.cpp:2003)
[12] /run/media/qbie/WorkData/Projects/godot/bin/godot.linuxbsd.editor.double.x86_64() [0xae57bb] (/run/media/qbie/WorkData/Projects/godot/platform/linuxbsd/godot_linuxbsd.cpp:62 (discriminator 2))
[13] /lib64/libc.so.6(+0x29510) [0x7fd3eae29510] (??:0)
[14] /lib64/libc.so.6(__libc_start_main+0x89) [0x7fd3eae295c9] (??:0)
[15] /run/media/qbie/WorkData/Projects/godot/bin/godot.linuxbsd.editor.double.x86_64() [0xaf19b5] (??:?)
-- END OF BACKTRACE --
================================================================
clayjohn commented 4 months ago

Bit of context, we can't use doubles in shaders, so we should check if there are any places where a real_t is used that could cause problems in a shader

ChristopheClaustre commented 3 months ago

I built godot with double_precision=yes and I don't reproduce the bug on master 383a6e4ef285fddcb0e1cbe28a20332c7e5a815b. I am not on linux so maybe it is platform specific ? or AMD specific ?

My system info : Godot v4.3.beta (383a6e4ef285fddcb0e1cbe28a20332c7e5a815b) - Windows 10.0.19045 - Vulkan (Forward+) - dedicated NVIDIA GeForce GTX 1070 (NVIDIA; 32.0.15.5612) - Intel(R) Core(TM) i5-6600 CPU @ 3.30GHz (4 Threads)