kvark / blade

Sharp and simple graphics library
MIT License
489 stars 31 forks source link

Crash in create_swapchain() when testing Intel presentation #149

Open flukejones opened 1 month ago

flukejones commented 1 month ago

This commit updating the blade version used is causing a segfault: https://github.com/zed-industries/zed/commit/d034d73af9d335f2a97dbc784999d2b94af58a03

[2024-07-24T17:13:11+12:00 INFO  blade_graphics::hal::init] Testing presentation capability on Linux/Intel
Segmentation fault (core dumped)

Partial backtrace (app start noise removed):

#0  0x00007ffff7fb62f4 in wl_proxy_get_version () from /lib64/libwayland-client.so.0
#1  0x00007fff9a2b3591 in wsi_wl_surface_create_swapchain ()
   from /usr/lib64/libvulkan_intel.so
#2  0x00007fff9a2a75b4 in wsi_CreateSwapchainKHR () from /usr/lib64/libvulkan_intel.so
#3  0x00007ffff5e9fe75 in terminator_CreateSwapchainKHR () from /lib64/libvulkan.so.1
#4  0x00005555614356e7 in ash::extensions_generated::khr::swapchain::Device::create_swapchain ()
    at /home/luke/.cargo/registry/src/index.crates.io-6f17d22bba15001f/ash-0.38.0+1.3.281/src/extensions/khr/swapchain.rs:20
#5  0x000055556142c36a in blade_graphics::hal::init::test_presentation ()
    at src/vulkan/init.rs:66
#6  0x000055556142cd31 in blade_graphics::hal::init::inspect_adapter ()
    at src/vulkan/init.rs:184
#7  0x000055556142ec79 in blade_graphics::hal::init::{impl#0}::init_impl::{closure#6} ()
    at src/vulkan/init.rs:474
#8  0x00005555614293ca in core::iter::traits::iterator::Iterator::find_map::check::{closure#0}<ash::vk::definitions::PhysicalDevice, (ash::vk::definitions::PhysicalDevice, blade_graphics::hal::init::AdapterCapabilities), blade_graphics::hal::init::{impl#0}::init_impl::{closure_env#6}> ()
    at /rustc/129f3b9964af4d4a709d1383930ade12dfe7c081/library/core/src/iter/traits/iterator.rs:2906
#9  0x0000555561442bd5 in core::iter::traits::iterator::Iterator::try_fold<alloc::vec::into_iter::IntoIter<ash::vk::definitions::PhysicalDevice, alloc::alloc::Global>, (), core::iter::traits::iterator::Iterator::find_map::check::{closure_env#0}<ash::vk::definitions::PhysicalDevice, (ash::vk::definitions::PhysicalDevice, blade_graphics::hal::init::AdapterCapabilities), blade_graphics::hal::init::{impl#0}::init_impl::{closure_env#6}>, core::ops::control_flow::ControlFlow<(ash::vk::definitions::PhysicalDevice, blade_graphics::hal::init::AdapterCapabilities), ()>> ()
    at /rustc/129f3b9964af4d4a709d1383930ade12dfe7c081/library/core/src/iter/traits/iterator.rs:2410
#10 0x00005555614428e6 in core::iter::traits::iterator::Iterator::find_map<alloc::vec::into_iter::IntoIter<ash::vk::definitions::PhysicalDevice, alloc::alloc::Global>, (ash::vk::definitions::PhysicalDevice, blade_graphics::hal::init::AdapterCapabilities), blade_graphics::hal::init::{impl#0}::init_impl::{closure_env#6}> ()
    at /rustc/129f3b9964af4d4a709d1383930ade12dfe7c081/library/core/src/iter/traits/iterator.rs:2912
#11 0x00005555613f5de6 in blade_graphics::hal::Context::init_impl ()
    at src/vulkan/init.rs:471
#12 0x0000555560a87789 in blade_graphics::hal::Context::init_windowed<gpui::platform::linux::wayland::window::RawWindow> ()
    at /home/luke/.cargo/git/checkouts/blade-ea462a0faa3f9995/9cd21915128d/blade-graphics/src/vulkan/init.rs:760
#13 0x0000555560ac44d7 in gpui::platform::linux::wayland::window::WaylandWindowState::new
    () at crates/gpui/src/platform/linux/wayland/window.rs:139
#14 0x0000555560ac55d4 in gpui::platform::linux::wayland::window::WaylandWindow::new ()
    at crates/gpui/src/platform/linux/wayland/window.rs:287
#15 0x0000555560d1becd in gpui::platform::linux::wayland::client::{impl#5}::open_window
    () at crates/gpui/src/platform/linux/wayland/client.rs:605
#16 0x0000555560a30171 in gpui::platform::linux::platform::{impl#1}::open_window<gpui::platform::linux::wayland::client::WaylandClient> ()
    at crates/gpui/src/platform/linux/platform.rs:248

reverting to the previous blade version runs fine.

ConradIrwin commented 1 month ago

@flukejones this is not merged into blade yet. I pulled #144 into nightly to get some feedback, see https://github.com/zed-industries/zed/issues/14225.

It's reverted as of this morning and we'll continue trying to figure this one out.

kvark commented 1 month ago

@flukejones would you be interested in investigating the crash locally, e.g. by running "bunnymark" example from #144 ?