Panic on terminal resize #229

Closed
opened 2025-10-14 15:43:13 -06:00 by navan · 0 comments
Owner

Originally created by @krachynski on 7/30/2024

My Environment: Windows 11, Windows Terminal, Fedora WSL2, iamb debug on main

I have iamb currently set up to display four rooms in a 2x2 layout. With Windows terminal fullscreen on one of my displays this works fine. I discovered yesterday, while splitting my Windows Terminal tab into two that iamb panics due to the suddenly small size.

Manually resizing the terminal shows that only the right two rooms are resized as it shrinks until they're too narrow to display anything.

thread 'main' panicked at src/message/printer.rs:97:9:
attempt to subtract with overflow
stack backtrace:
   0: rust_begin_unwind
             at /builddir/build/BUILD/rustc-1.79.0-src/library/std/src/panicking.rs:652:5
   1: core::panicking::panic_fmt
             at /builddir/build/BUILD/rustc-1.79.0-src/library/core/src/panicking.rs:72:14
   2: core::panicking::panic_const::panic_const_sub_overflow
             at /builddir/build/BUILD/rustc-1.79.0-src/library/core/src/panicking.rs:180:21
   3: iamb::message::printer::TextPrinter::remaining
             at ./src/message/printer.rs:97:9
   4: iamb::message::printer::TextPrinter::push_break
             at ./src/message/printer.rs:119:25
   5: iamb::message::printer::TextPrinter::commit
             at ./src/message/printer.rs:103:13
   6: iamb::message::printer::TextPrinter::finish
             at ./src/message/printer.rs:275:9
   7: iamb::message::MessageFormatter::push_reactions
             at ./src/message/mod.rs:778:28
   8: iamb::message::Message::show_with_preview
             at ./src/message/mod.rs:1000:13
   9: <iamb::windows::room::scrollback::Scrollback as ratatui::widgets::StatefulWidget>::render
             at ./src/windows/room/scrollback.rs:1346:17
  10: <iamb::windows::room::chat::Chat as ratatui::widgets::StatefulWidget>::render
             at ./src/windows/room/chat.rs:932:9
  11: <iamb::windows::room::chat::ChatState as modalkit_ratatui::WindowOps<iamb::base::IambInfo>>::draw
             at ./src/windows/room/chat.rs:654:9
  12: <iamb::windows::room::RoomState as modalkit_ratatui::WindowOps<iamb::base::IambInfo>>::draw
             at ./src/windows/room/mod.rs:421:38
  13: <iamb::windows::IambWindow as modalkit_ratatui::WindowOps<iamb::base::IambInfo>>::draw
             at ./src/windows/mod.rs:484:40
  14: <modalkit_ratatui::windows::slot::WindowSlot<W> as modalkit_ratatui::WindowOps<I>>::draw
             at /home/krachynski/.cargo/registry/src/index.crates.io-6f17d22bba15001f/modalkit-ratatui-0.0.19/src/windows/slot.rs:205:9
  15: modalkit_ratatui::windows::layout::WindowLayout<W,I>::_draw::{{closure}}
             at /home/krachynski/.cargo/registry/src/index.crates.io-6f17d22bba15001f/modalkit-ratatui-0.0.19/src/windows/layout.rs:1980:25
  16: <modalkit_ratatui::windows::AxisTreeNode<W,X,Y> as modalkit_ratatui::windows::tree::SubtreeOps<W,X,Y>>::for_each_value
             at /home/krachynski/.cargo/registry/src/index.crates.io-6f17d22bba15001f/modalkit-ratatui-0.0.19/src/windows/tree.rs:548:9
  17: <core::option::Option<alloc::boxed::Box<modalkit_ratatui::windows::AxisTreeNode<W,X,Y>>> as modalkit_ratatui::windows::tree::SubtreeOps<W,X,Y>>::for_each_value
             at /home/krachynski/.cargo/registry/src/index.crates.io-6f17d22bba15001f/modalkit-ratatui-0.0.19/src/windows/tree.rs:598:27
  18: <modalkit_ratatui::windows::AxisTreeNode<W,X,Y> as modalkit_ratatui::windows::tree::SubtreeOps<W,X,Y>>::for_each_value
             at /home/krachynski/.cargo/registry/src/index.crates.io-6f17d22bba15001f/modalkit-ratatui-0.0.19/src/windows/tree.rs:549:9
  19: modalkit_ratatui::windows::layout::WindowLayout<W,I>::_draw
             at /home/krachynski/.cargo/registry/src/index.crates.io-6f17d22bba15001f/modalkit-ratatui-0.0.19/src/windows/layout.rs:1993:9
  20: modalkit_ratatui::windows::layout::WindowLayout<W,I>::_draw::{{closure}}
             at /home/krachynski/.cargo/registry/src/index.crates.io-6f17d22bba15001f/modalkit-ratatui-0.0.19/src/windows/layout.rs:1986:21
  21: <modalkit_ratatui::windows::AxisTreeNode<W,X,Y> as modalkit_ratatui::windows::tree::SubtreeOps<W,X,Y>>::for_each_value
             at /home/krachynski/.cargo/registry/src/index.crates.io-6f17d22bba15001f/modalkit-ratatui-0.0.19/src/windows/tree.rs:548:9
  22: modalkit_ratatui::windows::layout::WindowLayout<W,I>::_draw
             at /home/krachynski/.cargo/registry/src/index.crates.io-6f17d22bba15001f/modalkit-ratatui-0.0.19/src/windows/layout.rs:1993:9
  23: <modalkit_ratatui::windows::layout::WindowLayout<W,I> as ratatui::widgets::StatefulWidget>::render
             at /home/krachynski/.cargo/registry/src/index.crates.io-6f17d22bba15001f/modalkit-ratatui-0.0.19/src/windows/layout.rs:2019:13
  24: <modalkit_ratatui::screen::Screen<W,I> as ratatui::widgets::StatefulWidget>::render
             at /home/krachynski/.cargo/registry/src/index.crates.io-6f17d22bba15001f/modalkit-ratatui-0.0.19/src/screen.rs:831:13
  25: ratatui::terminal::frame::Frame::render_stateful_widget
             at /home/krachynski/.cargo/registry/src/index.crates.io-6f17d22bba15001f/ratatui-0.26.1/src/terminal/frame.rs:125:9
  26: iamb::Application::redraw::{{closure}}
             at ./src/main.rs:315:13
  27: ratatui::terminal::terminal::Terminal<B>::draw
             at /home/krachynski/.cargo/registry/src/index.crates.io-6f17d22bba15001f/ratatui-0.26.1/src/terminal/terminal.rs:269:9
  28: iamb::Application::redraw
             at ./src/main.rs:299:9
  29: iamb::Application::step::{{closure}}
             at ./src/main.rs:338:13
  30: iamb::Application::run::{{closure}}
             at ./src/main.rs:650:35
  31: iamb::run::{{closure}}
             at ./src/main.rs:1019:23
  32: iamb::main::{{closure}}
             at ./src/main.rs:1064:44
  33: tokio::runtime::park::CachedParkThread::block_on::{{closure}}
             at /home/krachynski/.cargo/registry/src/index.crates.io-6f17d22bba15001f/tokio-1.37.0/src/runtime/park.rs:281:63
  34: tokio::runtime::coop::with_budget
             at /home/krachynski/.cargo/registry/src/index.crates.io-6f17d22bba15001f/tokio-1.37.0/src/runtime/coop.rs:107:5
  35: tokio::runtime::coop::budget
             at /home/krachynski/.cargo/registry/src/index.crates.io-6f17d22bba15001f/tokio-1.37.0/src/runtime/coop.rs:73:5
  36: tokio::runtime::park::CachedParkThread::block_on
             at /home/krachynski/.cargo/registry/src/index.crates.io-6f17d22bba15001f/tokio-1.37.0/src/runtime/park.rs:281:31
  37: tokio::runtime::context::blocking::BlockingRegionGuard::block_on
             at /home/krachynski/.cargo/registry/src/index.crates.io-6f17d22bba15001f/tokio-1.37.0/src/runtime/context/blocking.rs:66:9
  38: tokio::runtime::scheduler::multi_thread::MultiThread::block_on::{{closure}}
             at /home/krachynski/.cargo/registry/src/index.crates.io-6f17d22bba15001f/tokio-1.37.0/src/runtime/scheduler/multi_thread/mod.rs:87:13
  39: tokio::runtime::context::runtime::enter_runtime
             at /home/krachynski/.cargo/registry/src/index.crates.io-6f17d22bba15001f/tokio-1.37.0/src/runtime/context/runtime.rs:65:16
  40: tokio::runtime::scheduler::multi_thread::MultiThread::block_on
             at /home/krachynski/.cargo/registry/src/index.crates.io-6f17d22bba15001f/tokio-1.37.0/src/runtime/scheduler/multi_thread/mod.rs:86:9
  41: tokio::runtime::runtime::Runtime::block_on
             at /home/krachynski/.cargo/registry/src/index.crates.io-6f17d22bba15001f/tokio-1.37.0/src/runtime/runtime.rs:351:45
  42: iamb::main
             at ./src/main.rs:1064:5
  43: core::ops::function::FnOnce::call_once
             at /builddir/build/BUILD/rustc-1.79.0-src/library/core/src/ops/function.rs:250:5
note: Some details are omitted, run with `RUST_BACKTRACE=full` for a verbose backtrace.
*Originally created by @krachynski on 7/30/2024* My Environment: Windows 11, Windows Terminal, Fedora WSL2, iamb debug on main I have iamb currently set up to display four rooms in a 2x2 layout. With Windows terminal fullscreen on one of my displays this works fine. I discovered yesterday, while splitting my Windows Terminal tab into two that iamb panics due to the suddenly small size. Manually resizing the terminal shows that only the right two rooms are resized as it shrinks until they're too narrow to display anything. ``` thread 'main' panicked at src/message/printer.rs:97:9: attempt to subtract with overflow stack backtrace: 0: rust_begin_unwind at /builddir/build/BUILD/rustc-1.79.0-src/library/std/src/panicking.rs:652:5 1: core::panicking::panic_fmt at /builddir/build/BUILD/rustc-1.79.0-src/library/core/src/panicking.rs:72:14 2: core::panicking::panic_const::panic_const_sub_overflow at /builddir/build/BUILD/rustc-1.79.0-src/library/core/src/panicking.rs:180:21 3: iamb::message::printer::TextPrinter::remaining at ./src/message/printer.rs:97:9 4: iamb::message::printer::TextPrinter::push_break at ./src/message/printer.rs:119:25 5: iamb::message::printer::TextPrinter::commit at ./src/message/printer.rs:103:13 6: iamb::message::printer::TextPrinter::finish at ./src/message/printer.rs:275:9 7: iamb::message::MessageFormatter::push_reactions at ./src/message/mod.rs:778:28 8: iamb::message::Message::show_with_preview at ./src/message/mod.rs:1000:13 9: <iamb::windows::room::scrollback::Scrollback as ratatui::widgets::StatefulWidget>::render at ./src/windows/room/scrollback.rs:1346:17 10: <iamb::windows::room::chat::Chat as ratatui::widgets::StatefulWidget>::render at ./src/windows/room/chat.rs:932:9 11: <iamb::windows::room::chat::ChatState as modalkit_ratatui::WindowOps<iamb::base::IambInfo>>::draw at ./src/windows/room/chat.rs:654:9 12: <iamb::windows::room::RoomState as modalkit_ratatui::WindowOps<iamb::base::IambInfo>>::draw at ./src/windows/room/mod.rs:421:38 13: <iamb::windows::IambWindow as modalkit_ratatui::WindowOps<iamb::base::IambInfo>>::draw at ./src/windows/mod.rs:484:40 14: <modalkit_ratatui::windows::slot::WindowSlot<W> as modalkit_ratatui::WindowOps<I>>::draw at /home/krachynski/.cargo/registry/src/index.crates.io-6f17d22bba15001f/modalkit-ratatui-0.0.19/src/windows/slot.rs:205:9 15: modalkit_ratatui::windows::layout::WindowLayout<W,I>::_draw::{{closure}} at /home/krachynski/.cargo/registry/src/index.crates.io-6f17d22bba15001f/modalkit-ratatui-0.0.19/src/windows/layout.rs:1980:25 16: <modalkit_ratatui::windows::AxisTreeNode<W,X,Y> as modalkit_ratatui::windows::tree::SubtreeOps<W,X,Y>>::for_each_value at /home/krachynski/.cargo/registry/src/index.crates.io-6f17d22bba15001f/modalkit-ratatui-0.0.19/src/windows/tree.rs:548:9 17: <core::option::Option<alloc::boxed::Box<modalkit_ratatui::windows::AxisTreeNode<W,X,Y>>> as modalkit_ratatui::windows::tree::SubtreeOps<W,X,Y>>::for_each_value at /home/krachynski/.cargo/registry/src/index.crates.io-6f17d22bba15001f/modalkit-ratatui-0.0.19/src/windows/tree.rs:598:27 18: <modalkit_ratatui::windows::AxisTreeNode<W,X,Y> as modalkit_ratatui::windows::tree::SubtreeOps<W,X,Y>>::for_each_value at /home/krachynski/.cargo/registry/src/index.crates.io-6f17d22bba15001f/modalkit-ratatui-0.0.19/src/windows/tree.rs:549:9 19: modalkit_ratatui::windows::layout::WindowLayout<W,I>::_draw at /home/krachynski/.cargo/registry/src/index.crates.io-6f17d22bba15001f/modalkit-ratatui-0.0.19/src/windows/layout.rs:1993:9 20: modalkit_ratatui::windows::layout::WindowLayout<W,I>::_draw::{{closure}} at /home/krachynski/.cargo/registry/src/index.crates.io-6f17d22bba15001f/modalkit-ratatui-0.0.19/src/windows/layout.rs:1986:21 21: <modalkit_ratatui::windows::AxisTreeNode<W,X,Y> as modalkit_ratatui::windows::tree::SubtreeOps<W,X,Y>>::for_each_value at /home/krachynski/.cargo/registry/src/index.crates.io-6f17d22bba15001f/modalkit-ratatui-0.0.19/src/windows/tree.rs:548:9 22: modalkit_ratatui::windows::layout::WindowLayout<W,I>::_draw at /home/krachynski/.cargo/registry/src/index.crates.io-6f17d22bba15001f/modalkit-ratatui-0.0.19/src/windows/layout.rs:1993:9 23: <modalkit_ratatui::windows::layout::WindowLayout<W,I> as ratatui::widgets::StatefulWidget>::render at /home/krachynski/.cargo/registry/src/index.crates.io-6f17d22bba15001f/modalkit-ratatui-0.0.19/src/windows/layout.rs:2019:13 24: <modalkit_ratatui::screen::Screen<W,I> as ratatui::widgets::StatefulWidget>::render at /home/krachynski/.cargo/registry/src/index.crates.io-6f17d22bba15001f/modalkit-ratatui-0.0.19/src/screen.rs:831:13 25: ratatui::terminal::frame::Frame::render_stateful_widget at /home/krachynski/.cargo/registry/src/index.crates.io-6f17d22bba15001f/ratatui-0.26.1/src/terminal/frame.rs:125:9 26: iamb::Application::redraw::{{closure}} at ./src/main.rs:315:13 27: ratatui::terminal::terminal::Terminal<B>::draw at /home/krachynski/.cargo/registry/src/index.crates.io-6f17d22bba15001f/ratatui-0.26.1/src/terminal/terminal.rs:269:9 28: iamb::Application::redraw at ./src/main.rs:299:9 29: iamb::Application::step::{{closure}} at ./src/main.rs:338:13 30: iamb::Application::run::{{closure}} at ./src/main.rs:650:35 31: iamb::run::{{closure}} at ./src/main.rs:1019:23 32: iamb::main::{{closure}} at ./src/main.rs:1064:44 33: tokio::runtime::park::CachedParkThread::block_on::{{closure}} at /home/krachynski/.cargo/registry/src/index.crates.io-6f17d22bba15001f/tokio-1.37.0/src/runtime/park.rs:281:63 34: tokio::runtime::coop::with_budget at /home/krachynski/.cargo/registry/src/index.crates.io-6f17d22bba15001f/tokio-1.37.0/src/runtime/coop.rs:107:5 35: tokio::runtime::coop::budget at /home/krachynski/.cargo/registry/src/index.crates.io-6f17d22bba15001f/tokio-1.37.0/src/runtime/coop.rs:73:5 36: tokio::runtime::park::CachedParkThread::block_on at /home/krachynski/.cargo/registry/src/index.crates.io-6f17d22bba15001f/tokio-1.37.0/src/runtime/park.rs:281:31 37: tokio::runtime::context::blocking::BlockingRegionGuard::block_on at /home/krachynski/.cargo/registry/src/index.crates.io-6f17d22bba15001f/tokio-1.37.0/src/runtime/context/blocking.rs:66:9 38: tokio::runtime::scheduler::multi_thread::MultiThread::block_on::{{closure}} at /home/krachynski/.cargo/registry/src/index.crates.io-6f17d22bba15001f/tokio-1.37.0/src/runtime/scheduler/multi_thread/mod.rs:87:13 39: tokio::runtime::context::runtime::enter_runtime at /home/krachynski/.cargo/registry/src/index.crates.io-6f17d22bba15001f/tokio-1.37.0/src/runtime/context/runtime.rs:65:16 40: tokio::runtime::scheduler::multi_thread::MultiThread::block_on at /home/krachynski/.cargo/registry/src/index.crates.io-6f17d22bba15001f/tokio-1.37.0/src/runtime/scheduler/multi_thread/mod.rs:86:9 41: tokio::runtime::runtime::Runtime::block_on at /home/krachynski/.cargo/registry/src/index.crates.io-6f17d22bba15001f/tokio-1.37.0/src/runtime/runtime.rs:351:45 42: iamb::main at ./src/main.rs:1064:5 43: core::ops::function::FnOnce::call_once at /builddir/build/BUILD/rustc-1.79.0-src/library/core/src/ops/function.rs:250:5 note: Some details are omitted, run with `RUST_BACKTRACE=full` for a verbose backtrace. ```
navan closed this issue 2025-10-14 15:43:14 -06:00
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference: github/iamb#229
No description provided.