Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

Comments

Close side panel

fix: add error handling to RPC system to prevent crashes on session abort#7939

Open
oorestisime wants to merge 3 commits intoanomalyco:devanomalyco/opencode:devfrom
oorestisime:fix/rpc-error-handlingoorestisime/opencode:fix/rpc-error-handlingCopy head branch name to clipboard
Open

fix: add error handling to RPC system to prevent crashes on session abort#7939
oorestisime wants to merge 3 commits intoanomalyco:devanomalyco/opencode:devfrom
oorestisime:fix/rpc-error-handlingoorestisime/opencode:fix/rpc-error-handlingCopy head branch name to clipboard

Conversation

@oorestisime
Copy link

@oorestisime oorestisime commented Jan 12, 2026

What does this PR do?

Fixes a crash that occurs when aborting a session with double-escape. The app would crash with "Unexpected end of JSON input" error.

Fixes #7946

An example of error

error/crash [09:17:24] [LOG] 'bootstrapping'
[09:17:25] [LOG] 'resolveSystemTheme'
[09:17:25] [LOG] '{"type":"home"}'
[09:17:26] [LOG] [
      '#1d1f21', '#cc6666',
      '#b5bd68', '#f0c674',
      '#81a2be', '#b294bb',
      '#8abeb7', '#c5c8c6',
      '#666666', '#d54e53',
      '#b9ca4a', '#e7c547',
      '#7aa6da', '#c397d8',
      '#70c0b1', '#eaeaea'
    ]
[09:17:49] [LOG] 'navigate' { type: 'session', sessionID: 'ses_44eee8c1cffeyYbm3ENuvzhYkm' }
[09:17:49] [LOG] '{"type":"session","sessionID":"ses_44eee8c1cffeyYbm3ENuvzhYkm"}'
[09:17:53] [LOG] 'TSWorker:' 'Loading from local path: /$bunfs/root/tree-sitter-markdown-411r6y9b.wasm'
[09:17:53] [LOG] 'TSWorker:' 'Loading from local path: /$bunfs/root/highlights-r812a2qc.scm'
[09:17:53] [LOG] 'TSWorker:' 'Loading from local path: /$bunfs/root/injections-73j83es3.scm'
[09:17:53] [LOG] 'TSWorker:' 'Loading from local path: /$bunfs/root/tree-sitter-markdown_inline-j5349f42.wasm'
[09:17:53] [LOG] 'TSWorker:' 'Loading from local path: /$bunfs/root/highlights-x6tmsnaa.scm'
[09:25:00] [ERROR] Error: Unexpected end of JSON input
    SyntaxError: Unexpected end of JSON input
        at <parse> (:0)
        at json (unknown)
        at <anonymous> (../sdk/js/src/v2/gen/client/client.gen.ts:167:33)
        at processTicksAndRejections (native:7:39) 

Changes:

  • Add try/catch in RPC listener to send error responses back to client instead of leaving promises hanging
  • Handle rpc.error messages in client to reject promises properly
  • Add .catch() to session.abort call to prevent unhandled rejections
  • Return JSON from /session/:sessionID/prompt instead of a streaming response to avoid empty bodies on abort
  • Fire-and-forget /session/:sessionID/prompt_async with a 204 no-content response and server-side error logging

How did you verify your code works?

  1. Started opencode TUI
  2. Started an agent task
  3. Pressed escape twice to abort mid-work
  4. Verified the app no longer crashes with JSON parse errors

Note: I have not rerun the flow after the latest server response adjustments in this environment.

…bort

- Add try/catch in RPC listener to send error responses back to client
- Handle rpc.error messages in client to reject promises properly
- Add .catch() to session.abort call to prevent unhandled rejections

Previously, when aborting a session with double-escape, the app could crash
with 'Unexpected end of JSON input' if an RPC call failed. This was because
errors in the worker weren't being sent back to the main process, leaving
promises unresolved and potentially causing JSON parse errors downstream.
@github-actions
Copy link
Contributor

Thanks for your contribution!

This PR doesn't have a linked issue. All PRs must reference an existing issue.

Please:

  1. Open an issue describing the bug/feature (if one doesn't exist)
  2. Add Fixes #<number> or Closes #<number> to this PR description

See CONTRIBUTING.md for details.

@github-actions
Copy link
Contributor

The following comment was made by an LLM, it may be inaccurate:

No duplicate PRs found

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

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Crash on double-escape abort: JSON parse error from prompt response

1 participant

Morty Proxy This is a proxified and sanitized view of the page, visit original site.