Skip to content

SIGSEGV: cc with a ~290-char argument crashes perry-compiled cc (rc=-11, nondeterministic 2/3 reps) — regression window includes today's merge trains #9552

Description

@proggeramlug

Full-suite verification on main 3b9c9dee2c (binary /root/claude-roots/app_verify): stress case C08_long_arg-p with a ~290-char xxxx… argument — segfaults where node exits 1 (the normal not-logged-in path).

node rc=[1] | perry rc=[-11]     NONDETERMINISTIC-PERRY-ONLY (2 signatures)

Nondeterministic across reps (2 of 3 signatures differ) — consistent with a GC-timing-dependent stale pointer or an overflow whose reachability depends on allocation state.

Why this looks like a fresh regression

This case passed in the previous full sweep (main+#9479, ~12h earlier, 167/196 run — C08 was not in its failure list). The window between the two runs contains today's merge trains: #9518 (stream read path — stdin/argv-adjacent), #9519, #9521 (error stacks — a long-arg error message flows through error rendering), #9522, #9540, #9544, and the worker PRs (#9531#9538 range). A long -p argument produces a long prompt string that flows into the auth-error path and the transcript writer.

Triage plan

  1. Reproduce standalone: HOME=<fresh> app_verify -p $(python3 -c "print('x'*290)") ×5; then bisect length (256/288/512/1024 — a boundary at 256 or around a header size would be telling).
  2. PERRY_GC_PROTECT_FROMSPACE=1 — if it faults on a retired address, it is the rooting class; the cc auth-error path: Cannot read properties of undefined (reading 'def') where node reports Not logged in #9417 ladder applies.
  3. If GC-clean: core dump + symbolize.py (/root/claude-9417/), and A/B against app_9485/app_final (pre-train binaries, both still on the box) to pin the introducing train.

Binaries for A/B: /root/claude-roots/app_verify (crashing, main tip), app_final (main+#9479, passing this case), app_9485, app_9499. Case runner: cd /root/claude-ccstress && PERRY_BIN=… python3 harness.py cases_all.jsonl C08_long_arg.

Found by the post-merge full verification sweep; the only new failure in it.

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

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions