Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Occasional panic when window closes #434

Open
sullyj3 opened this issue Jun 12, 2024 · 2 comments
Open

Occasional panic when window closes #434

sullyj3 opened this issue Jun 12, 2024 · 2 comments
Labels
bug Something isn't working

Comments

@sullyj3
Copy link
Contributor

sullyj3 commented Jun 12, 2024

Niri occasionally panics when closing a window.

I'm not sure exactly how to repro. It's happened 3 or 4 times so far. So far I've only had it happen with wezterm, but that's the window I open and close most frequently.

journalctl --user -u niri --since "10 minutes ago" > niri.log
Jun 12 13:57:02 dorian niri[588410]: thread 'main' panicked at /home/james/.cargo/registry/src/index.crates.io-6f17d22bba15001f/wayland-backend-0.3.3/src/sys/server_impl/mod.rs:1097:56:
Jun 12 13:57:02 dorian niri[588410]: called `Result::unwrap()` on an `Err` value: InvalidId
Jun 12 13:57:02 dorian niri[588410]: stack backtrace:
Jun 12 13:57:02 dorian niri[588410]:    0: rust_begin_unwind
Jun 12 13:57:02 dorian niri[588410]:              at /rustc/36153f1a4e3162f0a143c7b3e468ecb3beb0008e/library/std/src/panicking.rs:652:5
Jun 12 13:57:02 dorian niri[588410]:    1: core::panicking::panic_fmt
Jun 12 13:57:02 dorian niri[588410]:              at /rustc/36153f1a4e3162f0a143c7b3e468ecb3beb0008e/library/core/src/panicking.rs:72:14
Jun 12 13:57:02 dorian niri[588410]:    2: core::result::unwrap_failed
Jun 12 13:57:02 dorian niri[588410]:              at /rustc/36153f1a4e3162f0a143c7b3e468ecb3beb0008e/library/core/src/result.rs:1658:5
Jun 12 13:57:02 dorian niri[588410]:    3: unwrap<wayland_backend::sys::server::ClientId, wayland_backend::types::server::InvalidId>
Jun 12 13:57:02 dorian niri[588410]:              at /rustc/36153f1a4e3162f0a143c7b3e468ecb3beb0008e/library/core/src/result.rs:1081:23
Jun 12 13:57:02 dorian niri[588410]:    4: send_event<niri::niri::State>
Jun 12 13:57:02 dorian niri[588410]:    5: send_event
Jun 12 13:57:02 dorian niri[588410]:              at ./.cargo/registry/src/index.crates.io-6f17d22bba15001f/wayland-backend-0.3.3/src/sys/server_impl/mod.rs:579:9
Jun 12 13:57:02 dorian niri[588410]:    6: send_event
Jun 12 13:57:02 dorian niri[588410]:              at ./.cargo/registry/src/index.crates.io-6f17d22bba15001f/wayland-backend-0.3.3/src/sys/../server_api.rs:371:9
Jun 12 13:57:02 dorian niri[588410]:    7: send_event<wayland_server::protocol::wl_pointer::WlPointer>
Jun 12 13:57:02 dorian niri[588410]:              at ./.cargo/registry/src/index.crates.io-6f17d22bba15001f/wayland-server-0.31.1/src/display.rs:182:21
Jun 12 13:57:02 dorian niri[588410]:    8: send_event
Jun 12 13:57:02 dorian niri[588410]:              at ./.cargo/registry/src/index.crates.io-6f17d22bba15001f/wayland-server-0.31.1/src/lib.rs:123:5
Jun 12 13:57:02 dorian niri[588410]:    9: leave
Jun 12 13:57:02 dorian niri[588410]:              at ./.cargo/registry/src/index.crates.io-6f17d22bba15001f/wayland-server-0.31.1/src/lib.rs:123:5
Jun 12 13:57:02 dorian niri[588410]:   10: {closure#3}<niri::niri::State>
Jun 12 13:57:02 dorian niri[588410]:              at ./.cargo/git/checkouts/smithay-b5a338d5236320f6/fb44b24/src/wayland/seat/pointer.rs:194:13
Jun 12 13:57:02 dorian niri[588410]:   11: for_each_focused_pointers<niri::niri::State, smithay::wayland::seat::pointer::{impl#1}::leave::{closure_env#3}<niri::niri::State>>
Jun 12 13:57:02 dorian niri[588410]:              at ./.cargo/git/checkouts/smithay-b5a338d5236320f6/fb44b24/src/wayland/seat/pointer.rs:88:17
Jun 12 13:57:02 dorian niri[588410]:   12: leave<niri::niri::State>
Jun 12 13:57:02 dorian niri[588410]:              at ./.cargo/git/checkouts/smithay-b5a338d5236320f6/fb44b24/src/wayland/seat/pointer.rs:193:9
Jun 12 13:57:02 dorian niri[588410]:   13: replace<wayland_server::protocol::wl_surface::WlSurface, niri::niri::State>
Jun 12 13:57:02 dorian niri[588410]:              at ./.cargo/git/checkouts/smithay-b5a338d5236320f6/fb44b24/src/input/pointer/mod.rs:155:9
Jun 12 13:57:02 dorian niri[588410]:   14: motion<niri::niri::State>
Jun 12 13:57:02 dorian niri[588410]:              at ./.cargo/git/checkouts/smithay-b5a338d5236320f6/fb44b24/src/input/pointer/mod.rs:796:21
Jun 12 13:57:02 dorian niri[588410]:   15: motion<niri::niri::State>
Jun 12 13:57:02 dorian niri[588410]:              at ./.cargo/git/checkouts/smithay-b5a338d5236320f6/fb44b24/src/input/pointer/mod.rs:571:9
Jun 12 13:57:02 dorian niri[588410]:   16: motion<niri::niri::State>
Jun 12 13:57:02 dorian niri[588410]:              at ./.cargo/git/checkouts/smithay-b5a338d5236320f6/fb44b24/src/input/pointer/grab.rs:216:16
Jun 12 13:57:02 dorian niri[588410]:   17: {closure#0}<niri::niri::State>
Jun 12 13:57:02 dorian niri[588410]:              at ./.cargo/git/checkouts/smithay-b5a338d5236320f6/fb44b24/src/input/pointer/mod.rs:251:13
Jun 12 13:57:02 dorian niri[588410]:   18: with_grab<niri::niri::State, smithay::input::pointer::{impl#5}::motion::{closure_env#0}<niri::niri::State>>
Jun 12 13:57:02 dorian niri[588410]:              at ./.cargo/git/checkouts/smithay-b5a338d5236320f6/fb44b24/src/input/pointer/mod.rs:897:17
Jun 12 13:57:02 dorian niri[588410]:   19: motion<niri::niri::State>
Jun 12 13:57:02 dorian niri[588410]:              at ./.cargo/git/checkouts/smithay-b5a338d5236320f6/fb44b24/src/input/pointer/mod.rs:250:9
Jun 12 13:57:02 dorian niri[588410]:   20: move_cursor
Jun 12 13:57:02 dorian niri[588410]:              at ./dev/niri/src/niri.rs:512:9
Jun 12 13:57:02 dorian niri[588410]:   21: move_cursor_to_rect
Jun 12 13:57:02 dorian niri[588410]:              at ./dev/niri/src/niri.rs:562:9
Jun 12 13:57:02 dorian niri[588410]:   22: move_cursor_to_focused_tile
Jun 12 13:57:02 dorian niri[588410]:              at ./dev/niri/src/niri.rs:588:18
Jun 12 13:57:02 dorian niri[588410]:   23: maybe_warp_cursor_to_focus
Jun 12 13:57:02 dorian niri[588410]:              at ./dev/niri/src/niri.rs:599:9
Jun 12 13:57:02 dorian niri[588410]:   24: toplevel_destroyed
Jun 12 13:57:02 dorian niri[588410]:              at ./dev/niri/src/handlers/xdg_shell.rs:482:13
Jun 12 13:57:02 dorian niri[588410]:   25: destroyed<niri::niri::State>
Jun 12 13:57:02 dorian niri[588410]:              at ./.cargo/git/checkouts/smithay-b5a338d5236320f6/fb44b24/src/wayland/shell/xdg/handlers/surface/toplevel.rs:160:13
Jun 12 13:57:02 dorian niri[588410]:   26: destroyed
Jun 12 13:57:02 dorian niri[588410]:              at ./.cargo/registry/src/index.crates.io-6f17d22bba15001f/wayland-server-0.31.1/src/dispatch.rs:367:17
Jun 12 13:57:02 dorian niri[588410]:   27: destroyed<wayland_protocols::xdg::shell::generated::server::xdg_toplevel::XdgToplevel, smithay::wayland::shell::xdg::handlers::surface::XdgShellSurfaceUserData, niri::niri::State>
Jun 12 13:57:02 dorian niri[588410]:              at ./.cargo/registry/src/index.crates.io-6f17d22bba15001f/wayland-server-0.31.1/src/dispatch.rs:292:9
Jun 12 13:57:02 dorian niri[588410]:   28: {closure#0}<niri::niri::State>
Jun 12 13:57:02 dorian niri[588410]:              at ./.cargo/registry/src/index.crates.io-6f17d22bba15001f/wayland-backend-0.3.3/src/sys/server_impl/mod.rs:1610:13
Jun 12 13:57:02 dorian niri[588410]:   29: with<(alloc::sync::Arc<std::sync::mutex::Mutex<(dyn wayland_backend::sys::server_impl::ErasedState + core::marker::Send)>, alloc::alloc::Global>, *mut core::ffi::c_void), wayland_backend::sys::server_impl::resource_destructor::{closure_env#0}<niri::niri::State>, ()>
Jun 12 13:57:02 dorian niri[588410]:              at ./.cargo/registry/src/index.crates.io-6f17d22bba15001f/scoped-tls-1.0.1/src/lib.rs:171:13
Jun 12 13:57:02 dorian niri[588410]:   30: resource_destructor<niri::niri::State>
Jun 12 13:57:02 dorian niri[588410]:              at ./.cargo/registry/src/index.crates.io-6f17d22bba15001f/wayland-backend-0.3.3/src/sys/server_impl/mod.rs:1607:9
Jun 12 13:57:02 dorian niri[588410]:   31: <unknown>
Jun 12 13:57:02 dorian niri[588410]:   32: wl_client_destroy
Jun 12 13:57:02 dorian niri[588410]:   33: <unknown>
Jun 12 13:57:02 dorian niri[588410]:   34: wl_event_loop_dispatch
Jun 12 13:57:02 dorian niri[588410]:   35: {closure#0}<niri::niri::State>
Jun 12 13:57:02 dorian niri[588410]:              at ./.cargo/registry/src/index.crates.io-6f17d22bba15001f/wayland-backend-0.3.3/src/sys/server_impl/mod.rs:410:13
Jun 12 13:57:02 dorian niri[588410]:   36: set<(alloc::sync::Arc<std::sync::mutex::Mutex<(dyn wayland_backend::sys::server_impl::ErasedState + core::marker::Send)>, alloc::alloc::Global>, *mut core::ffi::c_void), wayland_backend::sys::server_impl::{impl#21}::dispatch_all_clients::{closure_env#0}<niri::niri::State>, i32>
Jun 12 13:57:02 dorian niri[588410]:              at ./.cargo/registry/src/index.crates.io-6f17d22bba15001f/scoped-tls-1.0.1/src/lib.rs:137:9
Jun 12 13:57:02 dorian niri[588410]:   37: dispatch_all_clients<niri::niri::State>
Jun 12 13:57:02 dorian niri[588410]:              at ./.cargo/registry/src/index.crates.io-6f17d22bba15001f/wayland-backend-0.3.3/src/sys/server_impl/mod.rs:407:19
Jun 12 13:57:02 dorian niri[588410]:   38: dispatch_all_clients<niri::niri::State>
Jun 12 13:57:02 dorian niri[588410]:              at ./.cargo/registry/src/index.crates.io-6f17d22bba15001f/wayland-backend-0.3.3/src/sys/../server_api.rs:575:9
Jun 12 13:57:02 dorian niri[588410]:   39: dispatch_clients<niri::niri::State>
Jun 12 13:57:02 dorian niri[588410]:              at ./.cargo/registry/src/index.crates.io-6f17d22bba15001f/wayland-server-0.31.1/src/display.rs:59:22
Jun 12 13:57:02 dorian niri[588410]:   40: {closure#14}
Jun 12 13:57:02 dorian niri[588410]:              at ./dev/niri/src/niri.rs:1454:39
Jun 12 13:57:02 dorian niri[588410]:   41: {closure#0}<niri::niri::State, calloop::sources::generic::Generic<wayland_server::display::Display<niri::niri::State>, std::io::error::Error>, niri::niri::{impl#4}::new::{closure_env#14}>
Jun 12 13:57:02 dorian niri[588410]:              at ./.cargo/registry/src/index.crates.io-6f17d22bba15001f/calloop-0.13.0/src/sources/mod.rs:327:61
Jun 12 13:57:02 dorian niri[588410]:   42: process_events<wayland_server::display::Display<niri::niri::State>, std::io::error::Error, calloop::sources::{impl#4}::process_events::{closure_env#0}<niri::niri::State, calloop::sources::generic::Generic<wayland_server::display::Display<niri::niri::State>, std::io::error::Error>, niri::niri::{impl#4}::new::{closure_env#14}>>
Jun 12 13:57:02 dorian niri[588410]:              at ./.cargo/registry/src/index.crates.io-6f17d22bba15001f/calloop-0.13.0/src/sources/generic.rs:290:9
Jun 12 13:57:02 dorian niri[588410]:   43: process_events<niri::niri::State, calloop::sources::generic::Generic<wayland_server::display::Display<niri::niri::State>, std::io::error::Error>, niri::niri::{impl#4}::new::{closure_env#14}>
Jun 12 13:57:02 dorian niri[588410]:              at ./.cargo/registry/src/index.crates.io-6f17d22bba15001f/calloop-0.13.0/src/sources/mod.rs:326:9
Jun 12 13:57:02 dorian niri[588410]:   44: dispatch_events<niri::niri::State>
Jun 12 13:57:02 dorian niri[588410]:              at ./.cargo/registry/src/index.crates.io-6f17d22bba15001f/calloop-0.13.0/src/loop_logic.rs:445:31
Jun 12 13:57:02 dorian niri[588410]:   45: dispatch<niri::niri::State, core::option::Option<core::time::Duration>>
Jun 12 13:57:02 dorian niri[588410]:              at ./.cargo/registry/src/index.crates.io-6f17d22bba15001f/calloop-0.13.0/src/loop_logic.rs:559:9
Jun 12 13:57:02 dorian niri[588410]:   46: run<niri::niri::State, niri::main::{closure_env#4}, core::option::Option<core::time::Duration>>
Jun 12 13:57:02 dorian niri[588410]:              at ./.cargo/registry/src/index.crates.io-6f17d22bba15001f/calloop-0.13.0/src/loop_logic.rs:596:13
Jun 12 13:57:02 dorian niri[588410]:   47: main
Jun 12 13:57:02 dorian niri[588410]:              at ./dev/niri/src/main.rs:261:5
Jun 12 13:57:02 dorian niri[588410]:   48: call_once<fn() -> core::result::Result<(), alloc::boxed::Box<dyn core::error::Error, alloc::alloc::Global>>, ()>
Jun 12 13:57:02 dorian niri[588410]:              at /rustc/36153f1a4e3162f0a143c7b3e468ecb3beb0008e/library/core/src/ops/function.rs:250:5
Jun 12 13:57:02 dorian niri[588410]: note: Some details are omitted, run with `RUST_BACKTRACE=full` for a verbose backtrace.
Jun 12 13:57:02 dorian niri[588410]: 2024-06-12T03:57:02.904285Z DEBUG niri::utils::watcher: exiting watcher thread for /home/james/.config/niri/config.kdl
Jun 12 13:57:03 dorian systemd[588286]: niri.service: Main process exited, code=exited, status=101/n/a
Jun 12 13:57:03 dorian systemd[588286]: niri.service: Failed with result 'exit-code'.
Jun 12 13:57:03 dorian systemd[588286]: niri.service: Consumed 5h 10min 18.075s CPU time, 2.5G memory peak, 310.8M memory swap peak.
Jun 12 13:57:41 dorian systemd[588286]: Starting A scrollable-tiling Wayland compositor...
Jun 12 13:57:41 dorian niri[2837004]: 2024-06-12T03:57:41.017278Z  INFO niri: starting version 0.1.6 (d193f3e-modified)
Jun 12 13:57:41 dorian niri[2837004]: 2024-06-12T03:57:41.036847Z DEBUG niri_config: loaded config from "/home/james/.config/niri/config.kdl"
Jun 12 13:57:41 dorian niri[2837004]: 2024-06-12T03:57:41.058451Z  INFO niri::backend::tty: using as the render node: "/dev/dri/renderD128"
Jun 12 13:57:41 dorian niri[2837004]: 2024-06-12T03:57:41.077641Z DEBUG niri::backend::tty: device added: 57857 "/dev/dri/card1"
Jun 12 13:57:41 dorian niri[2837004]: 2024-06-12T03:57:41.391232Z DEBUG niri::backend::tty: this is the primary node
Jun 12 13:57:41 dorian niri[2837004]: 2024-06-12T03:57:41.391247Z DEBUG niri::backend::tty: this is the primary render node
Jun 12 13:57:41 dorian niri[2837004]: 2024-06-12T03:57:41.546591Z DEBUG niri::backend::tty: device changed: 57857
Jun 12 13:57:42 dorian niri[2837004]: 2024-06-12T03:57:42.196642Z DEBUG niri::backend::tty: connecting connector: eDP-1
Jun 12 13:57:42 dorian niri[2837004]: 2024-06-12T03:57:42.196741Z DEBUG niri::backend::tty: picking mode: Mode { name: "1920x1080", clock: 142520, size: (1920, 1080), hsync: (1968, 2000, 2080), vsync: (1083, 1088, 1142), hskew: 0, vscan: 0, vrefresh: 60, mode_type: ModeTypeFlags(PREFERRED | DRIVER) }
Jun 12 13:57:42 dorian niri[2837004]: 2024-06-12T03:57:42.196790Z DEBUG niri::backend::tty: set max bpc to 8
Jun 12 13:57:42 dorian niri[2837004]: 2024-06-12T03:57:42.207990Z DEBUG niri::niri: putting output eDP-1 at x=0 y=0
Jun 12 13:57:42 dorian niri[2837004]: 2024-06-12T03:57:42.208115Z  INFO niri: listening on Wayland socket: wayland-1
Jun 12 13:57:42 dorian niri[2837004]: 2024-06-12T03:57:42.208126Z  INFO niri: IPC listening on: /run/user/1000/niri.wayland-1.2837004.sock
Jun 12 13:57:42 dorian systemd[588286]: niri.service: Got notification message from PID 2837056, but reception only permitted for main PID 2837004
Jun 12 13:57:42 dorian systemd[588286]: Started A scrollable-tiling Wayland compositor.
Jun 12 13:57:42 dorian niri[2837004]: libinput error: client bug: timer event7 hold: scheduled expiry is in the past (-611ms), your system is too slow

System Information

  • niri version: niri 0.1.6 (d193f3e-modified)
  • Distro: Arch
  • GPU:
▷ lspci -k| grep -A 2 -E "(VGA|3D)"
00:02.0 VGA compatible controller: Intel Corporation TigerLake-LP GT2 [Iris Xe Graphics] (rev 01)
        Subsystem: Dell Device 0a5c
        Kernel driver in use: i915
  • CPU: 11th Gen Intel(R) Core(TM) i7-1165G7 @ 2.80GHz
@sullyj3 sullyj3 added the bug Something isn't working label Jun 12, 2024
@sullyj3
Copy link
Contributor Author

sullyj3 commented Jun 12, 2024

The log indicates it crashes at the pointer.motion() call:

pub fn move_cursor(&mut self, location: Point<f64, Logical>) {
    let under = self.niri.surface_under_and_global_space(location);
    self.niri
        .maybe_activate_pointer_constraint(location, &under);
    self.niri.pointer_focus.clone_from(&under);

    let pointer = &self.niri.seat.get_pointer().unwrap();
    pointer.motion(
        self,
        under.surface,
        &MotionEvent {
            location,
            serial: SERIAL_COUNTER.next_serial(),
            time: get_monotonic_time().as_millis() as u32,
        },
    );
    pointer.frame(self);
    
    // We moved the pointer, show it.
    self.niri.pointer_hidden = false;

    // FIXME: granular
    self.niri.queue_redraw_all();
}

Is this a smithay bug?

@YaLTeR
Copy link
Owner

YaLTeR commented Jun 12, 2024

Uhh, huh. I guess it's trying to send leave to the just-destroyed surface? This might be a Smithay bug, yeah, probably worth bringing it up there.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working
Projects
None yet
Development

No branches or pull requests

2 participants