godot: Vulkan: Godot crashes on startup with AMD graphics driver on Linux

Godot version: Godot Engine v4.0.dev.custom_build.948d95897

OS/device including version: Endeavour OS (based on Arch Linux) Radeon RX 580 uname -a Linux itx-dev 5.5.2-arch2-2 #1 SMP PREEMPT Wed, 05 Feb 2020 22:01:13 +0000 x86_64 GNU/Linux

Issue description: After compiling master, Godot crashes when starting with the following:

$ godot
Godot Engine v4.0.dev.custom_build.948d95897 - https://godotengine.org
VK_KHR_incremental_present extension NOT AVAILABLE

VK_GOOGLE_display_timing extension NOT AVAILABLE

Vulkan physical device creation success o_O
handle_crash: Program crashed with signal 11
Dumping the backtrace. Please include this when reporting the bug on https://github.com/godotengine/godot/issues
[1] /usr/lib/libc.so.6(+0x3bd70) [0x7fca79006d70] (??:0)
[2] /usr/lib/amdvlk64.so(+0x721987) [0x7fca716b4987] (??:0)
[3] /usr/lib/amdvlk64.so(+0x724116) [0x7fca716b7116] (??:0)
[4] /usr/lib/amdvlk64.so(+0x1f734c6) [0x7fca72f064c6] (??:0)
[5] /usr/lib/amdvlk64.so(+0x6d12df) [0x7fca716642df] (??:0)
[6] /usr/lib/amdvlk64.so(+0x582d1e) [0x7fca71515d1e] (??:0)
[7] /usr/lib/amdvlk64.so(+0x583e43) [0x7fca71516e43] (??:0)
[8] /usr/lib/amdvlk64.so(+0x583fcc) [0x7fca71516fcc] (??:0)
[9] /usr/lib/amdvlk64.so(+0x503d1b) [0x7fca71496d1b] (??:0)
[10] /usr/lib/amdvlk64.so(+0x57d36a) [0x7fca7151036a] (??:0)
[11] /usr/lib/amdvlk64.so(+0x562aa5) [0x7fca714f5aa5] (??:0)
[12] /usr/lib/amdvlk64.so(+0x54f409) [0x7fca714e2409] (??:0)
[13] godot() [0xfde6d4] (??:?)
[14] godot() [0x2c36715] (??:?)
[15] godot() [0x2b5f902] (??:?)
[16] godot() [0x2b0f287] (??:?)
[17] godot() [0x45c5bd] (??:?)
[18] godot() [0x2ac20a0] (??:?)
[19] godot() [0x44c9d4] (??:?)
[20] godot() [0x47d485] (??:?)
[21] godot() [0x47919b] (??:?)
[22] godot(main+0x7a) [0x44b00a] (??:?)
[23] /usr/lib/libc.so.6(__libc_start_main+0xf3) [0x7fca78ff2023] (??:0)
[24] godot() [0x44aece] (??:0)
-- END OF BACKTRACE --
Aborted (core dumped)

sha256sum 5f4b259ffeea46fbad717a7a7b5cdf2330755d42aa31aba8f0b797b663b01307 /usr/bin/godot

Steps to reproduce: Compile commit 948d95897 and try to open Godot

Minimal reproduction project: N/A

Summary. I will update this as I go.

Commit 948d95897

Commit 951ecc4f7

With release_debug. Windows begins to pop up, but crashes.

Godot Engine v4.0.dev.custom_build.951ecc4f7 - https://godotengine.org
ERROR: Cant find layer: VK_LAYER_LUNARG_standard_validation
   at: _check_layers (drivers/vulkan/vulkan_context.cpp:158)
ERROR: Cant find layer: VK_LAYER_GOOGLE_threading
   at: _check_layers (drivers/vulkan/vulkan_context.cpp:158)
 
handle_crash: Program crashed with signal 11
Dumping the backtrace. Please include this when reporting the bug on https://github.com/godotengine/godot/issues
[1] /usr/lib/libc.so.6(+0x3bd70) [0x7f774cf6dd70] (??:0)
[2] /usr/lib/libc.so.6(+0x164408) [0x7f774d096408] (??:0)
[3] /usr/lib/libvulkan_radeon.so(+0x8df8a) [0x7f77479ccf8a] (??:0)
[4] /usr/lib/libvulkan_radeon.so(+0x8e575) [0x7f77479cd575] (??:0)
[5] /usr/lib/libvulkan_radeon.so(+0x91551) [0x7f77479d0551] (??:0)
[6] /usr/lib/libvulkan_radeon.so(+0x9342e) [0x7f77479d242e] (??:0)
[7] godot() [0x1017317] (??:?)
[8] godot() [0x2c02de2] (??:?)
[9] godot() [0x2c03cc7] (??:?)
[10] godot() [0x2c044ff] (??:?)
[11] godot() [0x2bebbfe] (??:?)
[12] godot() [0x2becb03] (??:?)
[13] godot() [0x2ab7c2a] (??:?)
[14] godot() [0x2ab8402] (??:?)
[15] godot() [0x2a9425b] (??:?)
[16] godot() [0x48877e] (??:?)
[17] godot() [0x45a012] (??:?)
[18] godot(main+0x9c) [0x44c04c] (??:?)
[19] /usr/lib/libc.so.6(__libc_start_main+0xf3) [0x7f774cf59023] (??:0)
[20] godot() [0x44beee] (??:0)
-- END OF BACKTRACE --
Aborted (core dumped)

Commit 321ce4d4c

No grey screen on release_debug, Godot, just crashes.

VK_ICD_FILENAMES=/usr/share/vulkan/icd.d/radeon_icd.x86_64.json godot --verbose
Godot Engine v4.0.dev.custom_build.321ce4d4c - https://godotengine.org
XInput: Refreshing devices.
XInput: No touch devices found.
ERROR: Cant find layer: VK_LAYER_LUNARG_standard_validation
   at: _check_layers (drivers/vulkan/vulkan_context.cpp:158)
ERROR: Cant find layer: VK_LAYER_GOOGLE_threading
   at: _check_layers (drivers/vulkan/vulkan_context.cpp:158)
DisplayServer::_create_window 0 want rect: 0, 0, 1024, 600 got rect 2, 28, 1024, 600
DisplayServer::_window_changed: 0 rect: 3454, 478, 1024, 600
PulseAudio: detected 2 channels
PulseAudio: audio buffer frames: 512 calculated latency: 11ms
 
CORE API HASH: 17376873167113290496
EDITOR API HASH: 11001134350166415682
EditorSettings: Load OK!
EditorSettings: Save OK!
WARNING: Console window not supported by this display server.
     at: console_set_visible (servers/display_server.cpp:199)
Loaded builtin certs
handle_crash: Program crashed with signal 11
Dumping the backtrace. Please include this when reporting the bug on https://github.com/godotengine/godot/issues
[1] /usr/lib/libc.so.6(+0x3bd70) [0x7ff72d958d70] (??:0)
[2] /usr/lib/libc.so.6(+0x164408) [0x7ff72da81408] (??:0)
[3] /usr/lib/libvulkan_radeon.so(+0xa4eba) [0x7ff72c3d7eba] (??:0)
[4] /usr/lib/libvulkan_radeon.so(+0xa54b1) [0x7ff72c3d84b1] (??:0)
[5] /usr/lib/libvulkan_radeon.so(+0xa8445) [0x7ff72c3db445] (??:0)
[6] /usr/lib/libvulkan_radeon.so(+0xaa33e) [0x7ff72c3dd33e] (??:0)
[7] godot() [0x108b8b7] (??:?)
[8] godot() [0x2cde882] (??:?)
[9] godot() [0x2cdf767] (??:?)
[10] godot() [0x2cdff9f] (??:?)
[11] godot() [0x2cc75be] (??:?)
[12] godot() [0x2cc84c3] (??:?)
[13] godot() [0x2b4970a] (??:?)
[14] godot() [0x2b49ffe] (??:?)
[15] godot() [0x2b25c2b] (??:?)
[16] godot() [0x482b70] (??:?)
[17] godot() [0x44de06] (??:?)
[18] godot(main+0x9c) [0x44bfac] (??:?)
[19] /usr/lib/libc.so.6(__libc_start_main+0xf3) [0x7ff72d944023] (??:0)
[20] godot() [0x44be4e] (??:0)
-- END OF BACKTRACE --
Aborted (core dumped)

With debug Godot seems to run fine. Ran a very basic project and it seemed to work without any issues.

Commit e253451a5

With debug_release I get a black window.

godot --verbose
Godot Engine v4.0.dev.custom_build.e253451a5 - https://godotengine.org
XInput: Refreshing devices.
XInput: No touch devices found.
ERROR: Cant find layer: VK_LAYER_KHRONOS_validation
   at: _check_layers (drivers/vulkan/vulkan_context.cpp:158)
ERROR: Cant find layer: VK_LAYER_LUNARG_standard_validation
   at: _check_layers (drivers/vulkan/vulkan_context.cpp:158)
ERROR: Cant find layer: VK_LAYER_GOOGLE_threading
   at: _check_layers (drivers/vulkan/vulkan_context.cpp:158)
DisplayServer::_create_window 0 want rect: 768, 240, 1024, 600 got rect 2, 28, 1024, 600
DisplayServer::_window_changed: 0 rect: 894, 28, 1024, 600
PulseAudio: detected 2 channels
PulseAudio: audio buffer frames: 512 calculated latency: 11ms
 
CORE API HASH: 507351551903537738
EDITOR API HASH: 5225612577771749335
EditorSettings: Load OK!
EditorSettings: Save OK!
WARNING: Console window not supported by this display server.
     at: console_set_visible (servers/display_server.cpp:199)
Loaded builtin certs
EditorSettings: Save OK!
ERROR: Some texture bindings were not properly freed (leaked canvasitems?
   at: ~RasterizerCanvasRD (servers/rendering/rasterizer_rd/rasterizer_canvas_rd.cpp:2564)

With debug it opens and seems to be working correctly.

./godot.linuxbsd.tools.64 --verbose
Godot Engine v4.0.dev.custom_build.e253451a5 - https://godotengine.org
XInput: Refreshing devices.
XInput: No touch devices found.
ERROR: Cant find layer: VK_LAYER_KHRONOS_validation
   at: _check_layers (drivers/vulkan/vulkan_context.cpp:158)
ERROR: Cant find layer: VK_LAYER_LUNARG_standard_validation
   at: _check_layers (drivers/vulkan/vulkan_context.cpp:158)
ERROR: Cant find layer: VK_LAYER_GOOGLE_threading
   at: _check_layers (drivers/vulkan/vulkan_context.cpp:158)
DisplayServer::_create_window 0 want rect: 768, 240, 1024, 600 got rect 2, 28, 1024, 600
PulseAudio: detected 2 channels
PulseAudio: audio buffer frames: 512 calculated latency: 11ms
 
CORE API HASH: 507351551903537738
EDITOR API HASH: 5225612577771749335
EditorSettings: Load OK!
EditorSettings: Save OK!
WARNING: Console window not supported by this display server.
     at: console_set_visible (servers/display_server.cpp:199)
Loaded builtin certs

About this issue

  • Original URL
  • State: closed
  • Created 4 years ago
  • Reactions: 4
  • Comments: 34 (22 by maintainers)

Most upvoted comments

Nice! I’ll close this as I’m fairly sure most reports here were about that same issue triggered by optimizations (namely #40601). If anyone still reproduces some AMD-related crash with the latest master branch, please open a dedicated issue.

@akien-mga still have same issue after pull request

@Dodoveloper This is unrelated to AMD graphics and Vulkan, it’s #36246.

I can confirm I also cant get Vulkan working in release with my AMD on arch/manjaro where on my intel GPU it works.

debug builds are fine however.

@godofgrunts You can force specific driver by setting VK_ICD_FILENAMES environment variable:

VK_ICD_FILENAMES=path_to_icd.json godot

I just tried it on an up to date arch installation with a Radeon RX 580. Startup worked and AFAIK everything looks ok.

Okay so this is weird. With the target being debug I can actually get the start up screen.

Looks like only the release and the release_debug targets are broken. I’ve recompiled the current master with the debug target and it (sort of) works now:

Screenshot from 2020-02-12 15-38-42

godot-dbg -e -v
Godot Engine v4.0.dev.custom_build.957d097fd - https://godotengine.org
XInput: Refreshing devices.
XInput: No touch devices found.
Driver: Vulkan [0]
WARNING: radv is not a conformant vulkan implementation, testing use only.
VK_KHR_incremental_present extension enabled

VK_GOOGLE_display_timing extension NOT AVAILABLE

Vulkan physical device creation success o_O
uniform total: 0
uniform total: 0
uniform total: 0
ERROR: Method definition provides more arguments than the method actually has 'VisualServer::environment_set_ssao'.
   at: bind_methodfi (core/class_db.cpp:1264)
ERROR: Method/Function Failed.
   at: bind_integer_constant (core/class_db.cpp:700)
ERROR: Method/Function Failed.
   at: bind_integer_constant (core/class_db.cpp:700)
ERROR: Method/Function Failed.
   at: bind_integer_constant (core/class_db.cpp:700)
compilation success
PulseAudio: detected 2 channels
PulseAudio: audio buffer frames: 512 calculated latency: 11ms
 
CORE API HASH: 3963098128681627916
EDITOR API HASH: 14713410137106571556
Construct gdnative interface

Destruct gdnative interface

uniform total: 0
Loading resource: editor_data/editor_settings-4.tres
EditorSettings: Load OK!
uniform total: 36
ERROR: In Object of type 'EditorNetworkProfiler': Attempt to connect nonexistent signal 'break_request' to method 'ScriptEditorDebugger._profiler_seeked'.
   at: connect (core/object.cpp:1452)
Loaded builtin certs
EditorSettings: Save OK!
uniform total: 124
uniform total: 124
uniform total: 124
uniform total: 124
uniform total: 124
uniform total: 124
uniform total: 124
uniform total: 124
uniform total: 124
uniform total: 124
uniform total: 124
early out of data
EditorSettings: Save OK!
EditorSettings: Save OK!
out of date
uniform total: 124

Crash, at least with excuse, after sliding over an value in the Inspector (this is another issue that has probably already been reported)

… EditorSettings: Save OK! out of date uniform total: 124 [xcb] Unknown sequence number while processing queue [xcb] Most likely this is a multi-threaded client and XInitThreads has not been called [xcb] Aborting, sorry about that. godot-dbg: …/…/src/xcb_io.c:259: poll_for_event: Assertion `!xcb_xlib_threads_sequence_lost’ failed. Aborted