Skip to content

SIGILL (EXC_BAD_INSTRUCTION) crash when TUI starts over Termius/Android SSH on macOS 12 Intel #41497

Description

@kelastanpatembok

Summary

Running opencode (v1.18.16) crashes immediately with SIGILL (EXC_BAD_INSTRUCTION) when the interactive TUI starts over an SSH connection from the Termius app on Android. It works fine:

  • locally in Terminal.app,
  • over a plain ssh localhost TTY,
  • at any terminal size.

The crash is reproducible in both a plain SSH shell and inside tmux over the same Termius connection. It is a startup crash — the process dies before any log lines are written.

Environment

  • opencode 1.18.16 (Bun single binary, /Users/USER/.opencode/bin/opencode, 148 MB, x86_64)
  • macOS 12.7.6 (21H1320) on an Intel MacBookPro11,4 (i7-4770HQ)
  • Client: Termius on Android, SSH over Tailscale, TERM=xterm-256color, ~58x22 terminal
  • No tmux/opencode config involved; fresh session also crashes

Steps to reproduce

  1. From Termius on Android, SSH into the Mac (TERM=xterm-256color).
  2. Run opencode (also reproduced inside tmux).
  3. The process dies immediately with zsh: illegal hardware instruction.

Expected

The TUI starts and renders (as it does locally and over plain ssh).

Crash report

macOS crash reports (~/Library/Logs/DiagnosticReports/opencode-2026-08-10-13*.ips) all show the same signature:

exception: EXC_BAD_INSTRUCTION  signal: SIGILL
termination: Illegal instruction: 4
faultingThread: 0

crashed stack (main thread):
  opencode  (no symbol)   +57846957
  opencode  (no symbol)   +57809547
  opencode  (no symbol)   +17528424
  libsystem_platform.dylib  _sigtramp  +15869
  opencode  (no symbol)   +58597659
  ...

main image: x86_64, uuid 18601ead-261d-3873-a0a1-c9b95e96d94e

This looks like a JavaScriptCore (Bun) JIT code-generation crash on an old Intel macOS build, triggered only by a code path reached during TUI startup through the Termius terminal interaction. Happy to attach the full .ips files if useful.

Workarounds found

  • opencode serve / opencode web (headless, no TUI) works.
  • Plain ssh from another client (tested via ssh localhost) does not crash, so it appears specific to Termius's terminal capability responses.

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions