Skip to content

[Windows] multiwindow example panics when opening additional windows #1427

@filnet

Description

@filnet

Running the master multiwindow example and pressing space to open more windows yields:

# cargo run --example multiwindow
    Finished dev [unoptimized + debuginfo] target(s) in 0.17s
     Running `target\debug\examples\multiwindow.exe`
thread 'main' panicked at 'already mutably borrowed: BorrowError', src\libcore\result.rs:1165:5
stack backtrace:
   0: core::fmt::write
             at /rustc/73528e339aae0f17a15ffa49a8ac608f50c6cf14\/src\libcore\fmt\mod.rs:1028
   1: std::io::Write::write_fmt<std::sys::windows::stdio::Stderr>
             at /rustc/73528e339aae0f17a15ffa49a8ac608f50c6cf14\/src\libstd\io\mod.rs:1412
   2: std::panicking::default_hook::{{closure}}
             at /rustc/73528e339aae0f17a15ffa49a8ac608f50c6cf14\/src\libstd\panicking.rs:188
   3: std::panicking::default_hook
             at /rustc/73528e339aae0f17a15ffa49a8ac608f50c6cf14\/src\libstd\panicking.rs:205
   4: std::panicking::rust_panic_with_hook
             at /rustc/73528e339aae0f17a15ffa49a8ac608f50c6cf14\/src\libstd\panicking.rs:464
   5: std::panicking::continue_panic_fmt
             at /rustc/73528e339aae0f17a15ffa49a8ac608f50c6cf14\/src\libstd\panicking.rs:373
   6: std::panicking::rust_begin_panic
             at /rustc/73528e339aae0f17a15ffa49a8ac608f50c6cf14\/src\libstd\panicking.rs:302
   7: core::panicking::panic_fmt
             at /rustc/73528e339aae0f17a15ffa49a8ac608f50c6cf14\/src\libcore\panicking.rs:139
   8: core::result::unwrap_failed
             at /rustc/73528e339aae0f17a15ffa49a8ac608f50c6cf14\/src\libcore\result.rs:1165
   9: core::result::Result<core::cell::Ref<core::option::Option<winit::platform_impl::platform::event_loop::runner::EventLoopRunner<()>>>, core::cell::BorrowError>::expect<core::cell::Ref<core::option::Option<winit::platform_impl::platform::event_loop::runner::
             at /rustc/73528e339aae0f17a15ffa49a8ac608f50c6cf14\src\libcore\result.rs:960
  10: core::cell::RefCell<core::option::Option<winit::platform_impl::platform::event_loop::runner::EventLoopRunner<()>>>::borrow<core::option::Option<winit::platform_impl::platform::event_loop::runner::EventLoopRunner<()>>>
             at /rustc/73528e339aae0f17a15ffa49a8ac608f50c6cf14\src\libcore\cell.rs:788
  11: gapfnScSendMessage
  12: winit::platform_impl::platform::event_loop::SubclassInput<()>::send_event<()>
             at .\src\platform_impl\windows\event_loop.rs:104
  13: winit::platform_impl::platform::event_loop::public_window_callback<()>
             at .\src\platform_impl\windows\event_loop.rs:1367
  14: DefSubclassProc
  15: DPA_Clone
  16: gapfnScSendMessage
  17: GetThreadDesktop
  18: GetThreadDesktop
  19: GetThreadDesktop
  20: KiUserCallbackDispatcher
  21: gapfnScSendMessage
  22: gapfnScSendMessage
  23: gapfnScSendMessage
  24: GetThreadDesktop
  25: GetThreadDesktop
  26: GetThreadDesktop
  27: KiUserCallbackDispatcher
  28: winit::platform_impl::platform::window::{{impl}}::set_visible::{{closure}}
             at .\src\platform_impl\windows\window.rs:134
  29: winit::platform_impl::platform::event_loop::EventLoopThreadExecutor::execute_in_thread<closure-0>
             at .\src\platform_impl\windows\event_loop.rs:420
  30: winit::platform_impl::platform::window::Window::set_visible
             at .\src\platform_impl\windows\window.rs:135
  31: winit::event::WindowEvent::to_static
             at .\src\event.rs:402
  32: winit::platform_impl::platform::window::Window::new<()>
             at .\src\platform_impl\windows\window.rs:72
  33: winit::window::WindowBuilder::build<()>
             at .\src\window.rs:333
  34: winit::window::Window::new<()>
             at .\src\window.rs:360
  35: multiwindow::main::{{closure}}
             at .\examples\multiwindow.rs:42
  36: winit::platform_impl::platform::event_loop::{{impl}}::run_return::{{closure}}<(),closure-0>
             at .\src\platform_impl\windows\event_loop.rs:208
  37: alloc::boxed::{{impl}}::call_mut<(winit::event::Event<()>, mut winit::event_loop::ControlFlow*),FnMut<(winit::event::Event<()>, mut winit::event_loop::ControlFlow*)>>
             at /rustc/73528e339aae0f17a15ffa49a8ac608f50c6cf14\src\liballoc\boxed.rs:950
  38: winit::platform_impl::platform::event_loop::runner::{{impl}}::call_event_handler::{{closure}}<()>
             at .\src\platform_impl\windows\event_loop\runner.rs:565
  39: std::panic::{{impl}}::call_once<(),closure-0>
             at /rustc/73528e339aae0f17a15ffa49a8ac608f50c6cf14\src\libstd\panic.rs:318
  40: std::panicking::try::do_call<std::panic::AssertUnwindSafe<closure-0>,()>
             at /rustc/73528e339aae0f17a15ffa49a8ac608f50c6cf14\src\libstd\panicking.rs:289
  41: panic_unwind::__rust_maybe_catch_panic
             at /rustc/73528e339aae0f17a15ffa49a8ac608f50c6cf14\/src\libpanic_unwind\lib.rs:78
  42: std::panicking::try<(),std::panic::AssertUnwindSafe<closure-0>>
             at /rustc/73528e339aae0f17a15ffa49a8ac608f50c6cf14\src\libstd\panicking.rs:265
  43: std::panic::catch_unwind<std::panic::AssertUnwindSafe<closure-0>,()>
             at /rustc/73528e339aae0f17a15ffa49a8ac608f50c6cf14\src\libstd\panic.rs:396
  44: winit::platform_impl::platform::event_loop::runner::EventLoopRunner<()>::call_event_handler<()>
             at .\src\platform_impl\windows\event_loop\runner.rs:563
  45: winit::platform_impl::platform::event_loop::runner::EventLoopRunner<()>::process_event<()>
             at .\src\platform_impl\windows\event_loop\runner.rs:439
  46: winit::platform_impl::platform::event_loop::runner::ELRShared<()>::send_event_unbuffered<()>
             at .\src\platform_impl\windows\event_loop\runner.rs:161
  47: winit::platform_impl::platform::event_loop::runner::ELRShared<()>::send_event<()>
             at .\src\platform_impl\windows\event_loop\runner.rs:150
  48: winit::platform_impl::platform::event_loop::SubclassInput<()>::send_event<()>
             at .\src\platform_impl\windows\event_loop.rs:104
  49: winit::platform_impl::platform::event_loop::public_window_callback<()>
             at .\src\platform_impl\windows\event_loop.rs:940
  50: DefSubclassProc
  51: DPA_Clone
  52: gapfnScSendMessage
  53: GetThreadDesktop
  54: CharPrevW
  55: DispatchMessageW
  56: winit::platform_impl::platform::event_loop::EventLoop<()>::run_return<(),closure-0>
             at .\src\platform_impl\windows\event_loop.rs:235
  57: winit::platform_impl::platform::event_loop::EventLoop<()>::run<(),closure-0>
             at .\src\platform_impl\windows\event_loop.rs:192
  58: winit::event_loop::EventLoop<()>::run<(),closure-0>
             at .\src\event_loop.rs:148
  59: multiwindow::main
             at .\examples\multiwindow.rs:18
  60: std::rt::lang_start::{{closure}}<()>
             at /rustc/73528e339aae0f17a15ffa49a8ac608f50c6cf14\src\libstd\rt.rs:61

Metadata

Metadata

Assignees

No one assigned

    Labels

    B - bugDang, that shouldn't have happenedD - averageLikely as difficult as most tasks hereDS - win32Affects the Win32/Windows backendF - duplicateThis issue or pull request already exists

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions