Skip to content

Tab switching stalls for 1-5 s on live SSH tabs #104

Description

@wilsonglasser

Split out from #87, where it was reported alongside the vertical tab strip work. It is not a side-dock problem, so it gets its own issue.

What was reported

@sosokun sees a 1-5 s freeze when switching between tabs, most visibly at 0:20-0:24 of the recording below, switching from pxm1 to sys-el9. Shorter stalls happen on other switches too.
https://github.com/user-attachments/assets/f7672947-7086-4ec0-9423-4ce35f72adb7

What we already know

Not specific to the side dock.
The reporter confirmed the same delays with every tab on the top strip, so the vertical strip work
(#87) is not the cause and this outlives it. All tabs are live SSH sessions, not local shells.
Reported on v0.10.0 nightly (cfaedc8).
Reporter environment:

OS CachyOS Linux Rolling (x86_64), kernel 7.1.3-2-cachyos
Display Wayland, KDE
Renderer Vulkan, NVIDIA GeForce RTX 4080 SUPER

Leading theory (unconfirmed)

A terminal buffer reflow on reveal.
A background tab is not resized while it is hidden, so if the window geometry changed in the meantime, making it visible reflows its entire scrollback in one go, which can take a while on a large buffer. That would explain why the stall scales with the specific tab rather than being uniform. This is a theory, not a diagnosis. It has not been reproduced locally.

What would settle it

The Performance HUD (Settings > Advanced > Performance HUD) measures the terminal frame time, and the reveal-time re-layout is inside what it measures. So a screenshot of the HUD taken during or right after a slow switch splits the problem in two: a huge frame (hundreds of ms to seconds) exactly on the switch means the cost is the terminal re-layout, and the fix has a precise target; the HUD staying low while the app still hangs rules the terminal out entirely and moves the search elsewhere (compositor, surface reconfigure, the iced layout pass). Deliberately not guess-fixing this before the measurement exists: both branches lead to completely different code, and the wrong guess would add complexity to a path that is already correct.

Also useful, if easy to check

Does it happen with the window untouched since launch, or only after a resize / sidebar toggle / layout change? Is the slow tab always one with a lot of scrollback or a long-running session? Any tab, or consistently the same one?

Metadata

Metadata

Assignees

Labels

c: performanceComponent: Performance & Resource Utilizationc: terminalComponent: Terminal Emulationn: feedbackNeeds: Feedback from Reportert: bugType: Bug or problem, not working as expected

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions