PistonDevelopers / glfw-rs

GLFW3 bindings and idiomatic wrapper for Rust.
Apache License 2.0
645 stars 123 forks source link

Segfaulting when using glfw with wgpu. #536

Closed atomicf32 closed 1 year ago

atomicf32 commented 1 year ago

I am trying to use glfw with wgpu because I like it more than winit, but when I try with vulkan, the program segfaults at the end of execution when my RenderPipeline gets dropped. This does not happen when I use winit, so either I have configured glfw improperly or it is an actual problem with this lib. Everything works just fine if I set wgpu to use DX12. It looks like the segfault is caused during the runtime of ash::extensions::khr::swapchain::Swapchain::destroy_swapchain().

Call Stack:

nvoglv64.dll!00007ffa84c2510b() (Unknown Source:0)
nvoglv64.dll!00007ffa84c08d51() (Unknown Source:0)
nvoglv64.dll!00007ffa848af7c4() (Unknown Source:0)
nvoglv64.dll!00007ffa84c6cebf() (Unknown Source:0)
nvoglv64.dll!00007ffa84c6a871() (Unknown Source:0)
nvoglv64.dll!00007ffa84c670fa() (Unknown Source:0)
nvoglv64.dll!00007ffa84c65d5c() (Unknown Source:0)
nvoglv64.dll!00007ffa84c65f85() (Unknown Source:0)
OWClient.dll!00007ffa87241916() (Unknown Source:0)
RTSSVkLayer64.dll!00007ffae0da2211() (Unknown Source:0)
skewgame.exe!ash::extensions::khr::swapchain::Swapchain::destroy_swapchain(ash::vk::definitions::SwapchainKHR self, enum2$<core::option::Option<ref$<ash::vk::definitions::AllocationCallbacks>>> swapchain) Line 50 (c:\Users\r100p\.cargo\registry\src\github.com-1ecc6299db9ec823\ash-0.37.2+1.3.238\src\extensions\khr\swapchain.rs:50)
skewgame.exe!wgpu_hal::vulkan::instance::impl$5::unconfigure(wgpu_hal::vulkan::Surface * self, wgpu_hal::vulkan::Device * device) Line 730 (c:\Users\r100p\.cargo\registry\src\github.com-1ecc6299db9ec823\wgpu-hal-0.15.4\src\vulkan\instance.rs:730)
skewgame.exe!wgpu_core::hub::Hub<wgpu_hal::vulkan::Api,wgpu_core::hub::IdentityManagerFactory>::clear<wgpu_hal::vulkan::Api,wgpu_core::hub::IdentityManagerFactory>(wgpu_core::hub::Storage<wgpu_core::instance::Surface,wgpu_core::id::Id<wgpu_core::instance::Surface>> * self, bool surface_guard) Line 1010 (c:\Users\r100p\.cargo\registry\src\github.com-1ecc6299db9ec823\wgpu-core-0.15.1\src\hub.rs:1010)
skewgame.exe!wgpu_core::hub::impl$72::drop<wgpu_core::hub::IdentityManagerFactory>(wgpu_core::hub::Global<wgpu_core::hub::IdentityManagerFactory> * self) Line 1208 (c:\Users\r100p\.cargo\registry\src\github.com-1ecc6299db9ec823\wgpu-core-0.15.1\src\hub.rs:1208)
skewgame.exe!core::ptr::drop_in_place<wgpu_core::hub::Global<wgpu_core::hub::IdentityManagerFactory>>(wgpu_core::hub::Global<wgpu_core::hub::IdentityManagerFactory> *) Line 490 (c:\rustc\9eb3afe9ebe9c7d2b84b71002d44f4a0edac95e0\library\core\src\ptr\mod.rs:490)
skewgame.exe!core::ptr::drop_in_place<wgpu::backend::direct::Context>(wgpu::backend::direct::Context *) Line 490 (c:\rustc\9eb3afe9ebe9c7d2b84b71002d44f4a0edac95e0\library\core\src\ptr\mod.rs:490)
skewgame.exe!core::ptr::drop_in_place<dyn$<wgpu::context::DynContext>>(ptr_mut$<dyn$<wgpu::context::DynContext>>) Line 490 (c:\rustc\9eb3afe9ebe9c7d2b84b71002d44f4a0edac95e0\library\core\src\ptr\mod.rs:490)
skewgame.exe!alloc::sync::Arc<dyn$<wgpu::context::DynContext>>::drop_slow<dyn$<wgpu::context::DynContext>>() Line 1123 (c:\rustc\9eb3afe9ebe9c7d2b84b71002d44f4a0edac95e0\library\alloc\src\sync.rs:1123)
skewgame.exe!alloc::sync::impl$27::drop<dyn$<wgpu::context::DynContext>>(alloc::sync::Arc<dyn$<wgpu::context::DynContext>> * self) Line 1747 (c:\rustc\9eb3afe9ebe9c7d2b84b71002d44f4a0edac95e0\library\alloc\src\sync.rs:1747)
skewgame.exe!core::ptr::drop_in_place<alloc::sync::Arc<dyn$<wgpu::context::DynContext>>>(alloc::sync::Arc<dyn$<wgpu::context::DynContext>> *) Line 490 (c:\rustc\9eb3afe9ebe9c7d2b84b71002d44f4a0edac95e0\library\core\src\ptr\mod.rs:490)
skewgame.exe!core::ptr::drop_in_place<wgpu::RenderPipeline>(wgpu::RenderPipeline *) Line 490 (c:\rustc\9eb3afe9ebe9c7d2b84b71002d44f4a0edac95e0\library\core\src\ptr\mod.rs:490)
skewgame.exe!core::ptr::drop_in_place<skewgame::renderer::Renderer>(skewgame::renderer::Renderer *) Line 490 (c:\rustc\9eb3afe9ebe9c7d2b84b71002d44f4a0edac95e0\library\core\src\ptr\mod.rs:490)
skewgame.exe!skewgame::main() Line 45 (c:\Users\r100p\Documents\Programming\Rust\skewgame\src\main.rs:45)
skewgame.exe!core::ops::function::FnOnce::call_once<void (*)(),tuple$<>>(void(*)()) Line 250 (c:\rustc\9eb3afe9ebe9c7d2b84b71002d44f4a0edac95e0\library\core\src\ops\function.rs:250)
skewgame.exe!std::sys_common::backtrace::__rust_begin_short_backtrace<void (*)(),tuple$<>>(void(*)() f) Line 127 (c:\rustc\9eb3afe9ebe9c7d2b84b71002d44f4a0edac95e0\library\std\src\sys_common\backtrace.rs:127)
skewgame.exe!std::rt::lang_start::closure$0<tuple$<>>(std::rt::lang_start::closure_env$0<tuple$<>> *) Line 166 (c:\rustc\9eb3afe9ebe9c7d2b84b71002d44f4a0edac95e0\library\std\src\rt.rs:166)
[Inline Frame] skewgame.exe!core::ops::function::impls::impl$2::call_once() Line 287 (c:\rustc\9eb3afe9ebe9c7d2b84b71002d44f4a0edac95e0\library\core\src\ops\function.rs:287)
[Inline Frame] skewgame.exe!std::panicking::try::do_call() Line 483 (c:\rustc\9eb3afe9ebe9c7d2b84b71002d44f4a0edac95e0\library\std\src\panicking.rs:483)
[Inline Frame] skewgame.exe!std::panicking::try() Line 447 (c:\rustc\9eb3afe9ebe9c7d2b84b71002d44f4a0edac95e0\library\std\src\panicking.rs:447)
[Inline Frame] skewgame.exe!std::panic::catch_unwind() Line 140 (c:\rustc\9eb3afe9ebe9c7d2b84b71002d44f4a0edac95e0\library\std\src\panic.rs:140)
[Inline Frame] skewgame.exe!std::rt::lang_start_internal::closure$2() Line 148 (c:\rustc\9eb3afe9ebe9c7d2b84b71002d44f4a0edac95e0\library\std\src\rt.rs:148)
[Inline Frame] skewgame.exe!std::panicking::try::do_call() Line 483 (c:\rustc\9eb3afe9ebe9c7d2b84b71002d44f4a0edac95e0\library\std\src\panicking.rs:483)
[Inline Frame] skewgame.exe!std::panicking::try() Line 447 (c:\rustc\9eb3afe9ebe9c7d2b84b71002d44f4a0edac95e0\library\std\src\panicking.rs:447)
[Inline Frame] skewgame.exe!std::panic::catch_unwind() Line 140 (c:\rustc\9eb3afe9ebe9c7d2b84b71002d44f4a0edac95e0\library\std\src\panic.rs:140)
skewgame.exe!std::rt::lang_start_internal() Line 148 (c:\rustc\9eb3afe9ebe9c7d2b84b71002d44f4a0edac95e0\library\std\src\rt.rs:148)
skewgame.exe!std::rt::lang_start<tuple$<>>(void(*)() main, __int64 argc, unsigned char * * argv, unsigned char sigpipe) Line 165 (c:\rustc\9eb3afe9ebe9c7d2b84b71002d44f4a0edac95e0\library\std\src\rt.rs:165)
skewgame.exe!main() (Unknown Source:0)
[Inline Frame] skewgame.exe!invoke_main() Line 78 (d:\a\_work\1\s\src\vctools\crt\vcstartup\src\startup\exe_common.inl:78)
skewgame.exe!__scrt_common_main_seh() Line 288 (d:\a\_work\1\s\src\vctools\crt\vcstartup\src\startup\exe_common.inl:288)
kernel32.dll!00007ffae71e7614() (Unknown Source:0)
ntdll.dll!00007ffae7d626a1() (Unknown Source:0)