Skip to content

Server aborts when scrolling above an OSC 8 hyperlink row #3890

Description

@reyoung

Is this a reproducible bug?

  • I confirm this is a reproducible bug, not a feature request, idea, question, contribution proposal, or direction check.
  • I reproduced this bug on the version and environment reported below using the exact steps provided.

Current behavior

The server aborts when scrolling above a fixed row containing OSC 8 links. A fresh, isolated headless server exited with SIGABRT on two runs. The observed crash stack includes terminal.Screen.clearCells and ghostty_terminal_vt_write.

Expected behavior

Scrolling keeps the server running and preserves the fixed row and its links.

Reproduction

In a fresh disposable Herdr pane (tested at 120 columns × 40 rows), run:

python3 - <<'PY'
import os, sys
cols, rows = os.get_terminal_size()
sys.stdout.write(f'\x1b[{rows};1H')
for i in range(30):
    sys.stdout.write(f'\x1b]8;;https://example.com/{i}\x1b\\A\x1b]8;;\x1b\\')
sys.stdout.write(f'\x1b[1;{rows-10}r\x1b[{rows-10};1H')
for _ in range(2000):
    sys.stdout.write('hello\r\n\x1b[K')
sys.stdout.flush()
PY

The server process terminates with signal 6.

Impact

All panes in the server disconnect. My working server also aborted repeatedly today, interrupting its running sessions.

Environment

  • Herdr version: 0.8.2, custom build at 3b6b65ed (SSH connection-reuse patch), Linux x86_64 musl; libghostty ReleaseSafe, SIMD disabled.
  • Update channel (stable or preview): stable.
  • Operating system: TencentOS Server 4.2, Linux 6.6.110, x86_64.
  • Terminal: fresh headless Herdr server, 120×40 pane; reproduced through herdr pane run over SSH with no attached terminal client.
  • Shell: /bin/sh; Python 3.11.
  • Relevant config: fresh config, onboarding = false; default 10,000,000-byte pane scrollback.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't workinglinuxaffects Linux-specific behaviormaintainer-neededrequires maintainer judgment or maintainer-only reproductionp1serious defect affecting a common platform, core workflow, or broadly used integrationrenderingterminal emulation, reflow, layout, graphics, or output rendering

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions