Skip to content

[Bug]: Claude Code SIGABRT shows only "Provider turn failed." while the cause stays in the server log #26082

Closed

Description

@VDrozd-Cyclis

Before submitting

  • I searched existing issues and did not find a duplicate.
  • I included enough detail to reproduce or investigate the problem.

Area

apps/server

Steps to reproduce

Seen three times on 2026-10-27, plus one deliberate repro, on a Linux container whose cgroup caps tasks at 1000 (pids.max, threads included):

  1. Run T3 with the Claude provider in a container with a low task limit (ours: pids.max 1000, 48 visible CPUs).
  2. Use a project whose .claude/settings.json has a heavy Stop hook (ours ran a monorepo-wide turbo run lint and turbo run typecheck in parallel, several hundred threads).
  3. Start a Claude thread or a Claude delegate_task child and let a turn finish. The Stop hook pushes the cgroup to its limit. Forks fail with EAGAIN, and the Claude Code process aborts.
  4. Look at the thread.

The deliberate repro was a trivial claude-haiku-5-5 child task. Its reply arrived, and 14 s later, during the Stop hook, the run failed the same way.

I expect any abnormal Claude Code exit (for example kill -ABRT <claude pid> during a turn) to take the same path, but I haven't verified that shortcut.

Expected behavior

The thread's error item names the cause the server already has: Claude Code process terminated by signal SIGABRT.

When T3's own process spawns fail with EAGAIN at the same moment, a hint that the host ran out of process slots would point users to the real problem. T3 already runs t3-resource-monitor.

Actual behavior

The thread shows only Provider error: Provider turn failed. The cause appears only in ~/.t3/userdata/logs/boot-service.log.

In one thread the run also stayed running for about 6 minutes after the model's end_turn. Claude Code was blocked in the Stop hook, and nothing in the UI said so; then the turn failed with the same bare message.

On the next notification turn, T3 resumed the session into a new Claude Code process. That process aborted within about 3 ms of query.open, again shown only as "Provider turn failed."

Impact

Minor bug or occasional failure

Version or commit

0.1.4-nightly.20261027.3770 (service launcher 0.1.3-nightly.20261027.3754)

Environment

Linux 6.18 container (Railway), cgroup v2 pids.max 1000, Node 24, Claude Code 2.1.311 through the Claude Agent SDK, model claude-opus-5-5 (also claude-haiku-5-5)

Logs or stack traces

[17:19:49.612] WARN (#1142505): orchestration-v2.claude-query-stream-failed
    cause: 'ClaudeAgentSdkQueryRunnerError: Claude Agent SDK query failed.
      at ClaudeAdapterV2.startTurn (…/0.1.4-nightly.20261027.3770/t3:360437:171)
      …
  [cause]: Error: Claude Code process terminated by signal SIGABRT
      at OR.getProcessExitError (…/t3:261049:15)'

[17:19:55.640] WARN (#1510541): thread branch pull request lookup failed
  … [cause]: Error: spawn git EAGAIN

[17:19:57.297] WARN (#1510517): orchestration-v2.claude-mcp-servers-unavailable { servers: [ 't3-code' ] }
[17:19:57.300] WARN (#1510993): orchestration-v2.claude-query-stream-failed
  … [cause]: Error: Claude Code process terminated by signal SIGABRT

The thread item at the same time:

type: error, title: "Provider error", text: "Provider turn failed."

boot-service.log holds 11 terminated by signal SIGABRT failures across several days on this host. Each one showed only "Provider turn failed." in its thread.

Workaround

Grep boot-service.log for claude-query-stream-failed and check /sys/fs/cgroup/pids.events. We cut our Stop hook's thread use so the host stays under its limit.

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

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions