zed icon indicating copy to clipboard operation
zed copied to clipboard

panic: ERROR_OUT_OF_POOL_MEMORY on Windows

Open dannycoates opened this issue 1 year ago • 3 comments

Check for existing issues

  • [X] Completed

Describe the bug / provide steps to reproduce it

Seemingly random crashes occur at any time

built from commit 8583c3bd94f4797395c1266f9f56bd4b5586cecd

Thread "main" panicked with "called `Result::unwrap()` on an `Err` value: ERROR_OUT_OF_POOL_MEMORY" at \.cargo\git\checkouts\blade-b2bcd1de1cf7ab6a\61cbd6b\blade-graphics\src\vulkan\command.rs:708:18
   0: backtrace::backtrace::dbghelp::trace
             at \.cargo\registry\src\index.crates.io-6f17d22bba15001f\backtrace-0.3.69\src\backtrace\dbghelp.rs:98
   1: backtrace::backtrace::trace_unsynchronized
             at \.cargo\registry\src\index.crates.io-6f17d22bba15001f\backtrace-0.3.69\src\backtrace\mod.rs:66
   2: backtrace::backtrace::trace
             at \.cargo\registry\src\index.crates.io-6f17d22bba15001f\backtrace-0.3.69\src\backtrace\mod.rs:53
   3: backtrace::capture::Backtrace::create
             at \.cargo\registry\src\index.crates.io-6f17d22bba15001f\backtrace-0.3.69\src\capture.rs:176
   4: backtrace::capture::Backtrace::new
             at\.cargo\registry\src\index.crates.io-6f17d22bba15001f\backtrace-0.3.69\src\capture.rs:140
   5: Zed::init_panic_hook::closure$0
             at crates\zed\src\main.rs:624
   6: alloc::boxed::impl$49::call
             at /rustc/aedd173a2c086e558c2b66d3743b344f977621a7/library\alloc\src\boxed.rs:2029
   7: std::panicking::rust_panic_with_hook
             at /rustc/aedd173a2c086e558c2b66d3743b344f977621a7/library\std\src\panicking.rs:785
   8: std::panicking::begin_panic_handler::closure$0
             at /rustc/aedd173a2c086e558c2b66d3743b344f977621a7/library\std\src\panicking.rs:659
   9: std::sys_common::backtrace::__rust_end_short_backtrace<std::panicking::begin_panic_handler::closure_env$0,never$>
             at /rustc/aedd173a2c086e558c2b66d3743b344f977621a7/library\std\src\sys_common\backtrace.rs:171
  10: std::panicking::begin_panic_handler
             at /rustc/aedd173a2c086e558c2b66d3743b344f977621a7/library\std\src\panicking.rs:647
  11: core::panicking::panic_fmt
             at /rustc/aedd173a2c086e558c2b66d3743b344f977621a7/library\core\src\panicking.rs:72
  12: core::result::unwrap_failed
             at /rustc/aedd173a2c086e558c2b66d3743b344f977621a7/library\core\src\result.rs:1649
  13: core::result::Result::unwrap
             at /rustc/aedd173a2c086e558c2b66d3743b344f977621a7\library\core\src\result.rs:1073
  14: blade_graphics::hal::command::impl$19::bind
             at \.cargo\git\checkouts\blade-b2bcd1de1cf7ab6a\61cbd6b\blade-graphics\src\vulkan\command.rs:704
  15: blade_graphics::hal::PipelineEncoder::bind
             at \.cargo\git\checkouts\blade-b2bcd1de1cf7ab6a\61cbd6b\blade-graphics\src\vulkan\command.rs:688
  16: gpui::platform::blade::blade_renderer::BladeRenderer::draw
             at crates\gpui\src\platform\blade\blade_renderer.rs:617
  17: gpui::platform::windows::window::impl$5::draw
             at crates\gpui\src\platform\windows\window.rs:1552
  18: gpui::window::impl$15::new::closure$2
             at crates\gpui\src\window.rs:475
  19: alloc::boxed::impl$48::call_mut
             at /rustc/aedd173a2c086e558c2b66d3743b344f977621a7\library\alloc\src\boxed.rs:2022
  20: gpui::platform::windows::window::WindowsWindowInner::handle_paint_msg
             at crates\gpui\src\platform\windows\window.rs:358
  21: gpui::platform::windows::window::WindowsWindowInner::handle_msg
             at crates\gpui\src\platform\windows\window.rs:262
  22: gpui::platform::windows::window::wnd_proc
             at crates\gpui\src\platform\windows\window.rs:1763
  23: DispatchMessageW
  24: CallWindowProcW
  25: wglSwapBuffers
  26: DispatchMessageW
  27: DispatchMessageW
  28: GetClassLongW
  29: KiUserCallbackDispatcher
  30: NtUserRedrawWindow
  31: gpui::platform::windows::platform::impl$3::run
             at crates\gpui\src\platform\windows\platform.rs:231
  32: gpui::app::App::run<Zed::main::closure_env$3>
             at crates\gpui\src\app.rs:142
  33: Zed::main
             at crates\zed\src\main.rs:127
  34: core::ops::function::FnOnce::call_once
             at /rustc/aedd173a2c086e558c2b66d3743b344f977621a7\library\core\src\ops\function.rs:250
  35: std::sys_common::backtrace::__rust_begin_short_backtrace<void (*)(),tuple$<> >
             at /rustc/aedd173a2c086e558c2b66d3743b344f977621a7\library\std\src\sys_common\backtrace.rs:155
  36: std::rt::lang_start::closure$0
             at /rustc/aedd173a2c086e558c2b66d3743b344f977621a7\library\std\src\rt.rs:166
  37: core::ops::function::FnOnce::call_once
             at /rustc/aedd173a2c086e558c2b66d3743b344f977621a7\library\core\src\ops\function.rs:250
  38: core::ops::function::FnOnce::call_once<std::rt::lang_start::closure_env$0<tuple$<> >,tuple$<> >
             at /rustc/aedd173a2c086e558c2b66d3743b344f977621a7\library\std\src\rt.rs:166
  39: std::rt::lang_start_internal::closure$2
             at /rustc/aedd173a2c086e558c2b66d3743b344f977621a7/library\std\src\rt.rs:148
  40: std::panicking::try::do_call
             at /rustc/aedd173a2c086e558c2b66d3743b344f977621a7/library\std\src\panicking.rs:554
  41: std::panicking::try
             at /rustc/aedd173a2c086e558c2b66d3743b344f977621a7/library\std\src\panicking.rs:518
  42: std::panic::catch_unwind
             at /rustc/aedd173a2c086e558c2b66d3743b344f977621a7/library\std\src\panic.rs:142
  43: std::rt::lang_start_internal
             at /rustc/aedd173a2c086e558c2b66d3743b344f977621a7/library\std\src\rt.rs:148
  44: main
  45: invoke_main
             at D:\a\_work\1\s\src\vctools\crt\vcstartup\src\startup\exe_common.inl:78
  46: __scrt_common_main_seh
             at D:\a\_work\1\s\src\vctools\crt\vcstartup\src\startup\exe_common.inl:288
  47: BaseThreadInitThunk
  48: RtlUserThreadStart

error: process didn't exit successfully: `target\release\Zed.exe` (exit code: 0xffffffff)

Environment

Zed: v0.129.0 (Zed Dev) OS: Windows 10.0.22631 Memory: 15.8 GiB Architecture: x86_64 Processor: 11th Gen Intel(R) Core(TM) i5-1135G7 @ 2.40GHz 2.42 GHz

If applicable, add mockups / screenshots to help explain present your vision of the feature

No response

If applicable, attach your ~/Library/Logs/Zed/Zed.log file to this issue.

No response

dannycoates avatar Mar 31 '24 21:03 dannycoates

This is still occurring when built from commit ca187c8.

ndmj avatar Apr 29 '24 09:04 ndmj

Try patch blade-graphics

https://github.com/kvark/blade/blob/e35b2d41f221a48b75f7cf2e78a81e7ecb7a383c/blade-graphics/src/vulkan/mod.rs#L340C1-L343C64

from

let descriptor_pool_info = vk::DescriptorPoolCreateInfo::default()
                    .max_sets(ROUGH_SET_COUNT)
                    .pool_sizes(&descriptor_sizes)
                    .push_next(&mut inline_uniform_block_info);

to

let descriptor_pool_info = vk::DescriptorPoolCreateInfo::default()
                    .max_sets(ROUGH_SET_COUNT)
                    .flags(vk::DescriptorPoolCreateFlags::FREE_DESCRIPTOR_SET)
                    .pool_sizes(&descriptor_sizes)
                    .push_next(&mut inline_uniform_block_info);

This panic disappeared.

I'm not very familiar with Vulkan, I guess that this issue might be due to DescriptorSets on Windows not being released when calling vkResetDescriptorPool, causing them to exceed the maximum value set by VkDescriptorPoolCreateInfo::maxSets, leading to a panic with VK_ERROR_OUT_OF_POOL_MEMORY.

progmboy avatar May 13 '24 11:05 progmboy

Just experienced it with dev build on aee00d41d87cbca851055fbb2f14d2e46edb09a8

skyline75489 avatar May 14 '24 03:05 skyline75489