Skip to content

Renderer process crashes (exitCode 5) when connecting to remote server — infinite recursion in constructMessageRows #28984

Closed as not planned

Description

@sduygun

Description

Description

The desktop app crashes consistently when connecting to a remote server. The renderer process hangs (becomes unresponsive), then exits with exitCode: 5 (killed by OS). This has happened across multiple app sessions today (v1.15.10).

Environment

  • OpenCode version: 1.15.10
  • Platform: macOS 26.3 (arm64)
  • Electron: 41.2.1
  • Node: 24.14.1

Steps to Reproduce

  1. Open OpenCode Desktop
  2. Connect to a remote server (SSH/remote workspace)
  3. The app loads the previous session's message history (fetchOlderMessages)
  4. Renderer becomes unresponsive → crashes

Expected Behavior

App connects to the remote server and displays message history without crashing.

Actual Behavior

Renderer process hangs, then exits:

[error] (window)  renderer process gone {
  window: 'main',
  currentURL: 'oc://renderer/index.html',
  details: { reason: 'crashed', exitCode: 5 }
}

Root Cause (from logs)

The crash is not a network issue. The window.log captures the renderer unresponsive stack trace, which shows an infinite recursion in SolidJS's reactive system triggered by loading old session messages:

at fetchOlderMessages (session-DrMr1Tk2.js:28817)
  └─ at loadMessages (main-BftoHaU0.js:66068)
       └─ at constructMessageRows (session-DrMr1Tk2.js:20903)
            └─ at createMemo → readSignal → runUpdates → runQueue
                 └─ at cleanNode (styles-CNvLU9FN.js:691)
                      └─ at cleanNode (styles-CNvLU9FN.js:710) ← recursive call
                           └─ at cleanNode ...  (infinite loop)

constructMessageRows creates a SolidJS memo that triggers a reactive update cycle. The cleanNode function calls itself recursively through the dependency graph, locking the renderer thread until the OS kills it.

Full unresponsive sample from window.log:

at Object.constructMessageRows (session-DrMr1Tk2.js:20903:55)
at Object.fn (session-DrMr1Tk2.js:21360:29)
at runComputation (styles-CNvLU9FN.js:486:22)
...
at cleanNode (styles-CNvLU9FN.js:691:5)
at cleanNode (styles-CNvLU9FN.js:710:50)   ← recursive
...
at async fetchOlderMessages (session-DrMr1Tk2.js:28817:7)

Frequency

Reproducible on every connection attempt to the remote server. Occurred in sessions:

  • 20260523T133235 — crash
  • 20260523T133533 — crash
  • 20260523T134641 — crash

Workaround

Starting a new session instead of loading existing remote session history avoids the crash.

Attachments

Debug log bundle exported from the app (Help → Export Debug Logs) is available — contains window.log with full stack traces and 5 crashpad .dmp files.

Plugins

No response

OpenCode version

1.15.10

Steps to reproduce

  1. Open OpenCode Desktop
  2. Connect to a remote server (SSH/remote workspace)
  3. The app loads the previous session's message history (fetchOlderMessages)
  4. Renderer becomes unresponsive → crashes

Screenshot and/or share link

No response

Operating System

macOS 26.3 (arm64)

Terminal

No response

Activity

  1. github-actions commented on May 23, 2026

    @github-actions
    Contributor

    This issue might be a duplicate of existing issues. Please check:

    If your issue is distinct (e.g. the crash occurs with small sessions or without an unusually large message history), please clarify in a comment.

  2. sduygun commented on May 23, 2026

    @sduygun
    Author

    There is already open bug report

  3. github-actions commented on Jul 23, 2026

    @github-actions
    Contributor

    To stay organized issues are automatically closed after 60 days of no activity. If the issue is still relevant please open a new one.

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

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