CRITICAL: 10 consecutive Claude Code crashes triggered by uncaught JavaScript ReferenceError

Status Open
Maintainer reply None cached
Activity 0 comments · opened Jul 27, 2026

Claude Code Crash Report: 10 Consecutive Crashes in 60 Minutes

Incident Summary

  • Date: 2026-07-28 15:30-16:30 UTC
  • Total Crashes: 10 consecutive failures
  • Severity: CRITICAL - Work completely blocked
  • Root Cause: Cascading ReferenceError from missing JavaScript function
  • Status: ROOT CAUSE IDENTIFIED & FIXED

Detailed Timeline

Phase 1: Initial Crashes (#1-5, 2026-07-27 to 2026-07-28 13:00)

  • #1-3: Triggered by specific phrases ("attends je..."), pattern consistent
  • #4: Cadence filter testing begins
  • #5: Cadence filter modifications

Phase 2: Deletion Incident (Crash #6, ~15:05)

  • User deleted .claude_session.log attempting to "clean up" during crash investigation
  • This eliminated all recovery context for next session
  • CRITICAL LESSON: Never delete .claude_session.log - it's the only recovery mechanism

Phase 3: Cascading Failures (Crashes #7-10, ~15:30-16:30)

  • Repeated crashes while attempting to debug/fix cadence filter
  • Each crash occurred during JavaScript function invocation
  • Session recovery became increasingly difficult

Root Cause Analysis

The Bug

File: templates/partials/adversaires.html (Player Stats → Opponents page)

<!-- Line 147, 152: Function is CALLED -->
<input type="checkbox" name="cadence" value="S" onchange="updateCadenceLabel(); triggerCadenceFilter();">

<!-- BUT the function was NEVER IMPLEMENTED -->
<script>
function updateCadenceLabel() { ... }
// triggerCadenceFilter() MISSING ← ReferenceError here!
</script>

Result: Every checkbox click threw uncaught ReferenceError → browser console flooded → Claude Code crash detection triggered → session terminated

Impact Chain

  1. User clicks cadence checkbox
  2. Browser executes onchange="...triggerCadenceFilter()"
  3. Function undefined → ReferenceError: triggerCadenceFilter is not defined
  4. Claude Code detects error state (possibly via console monitoring)
  5. Session crash/recovery cycle begins
  6. Each retry produces same error → cascade of 10 crashes

Solution Implemented

Commit: c222c1f (2026-07-28 16:35 UTC)

function triggerCadenceFilter() {
    const p_id = '{{ p_id }}';
    const q = document.getElementById('search-input')?.value || '';
    const sortBy = document.querySelector('[name="sort_by"]')?.value || 'parties';
    const order = document.getElementById('sort-order')?.value || 'desc';
    const cadences = Array.from(document.querySelectorAll('.cadence-check:checked')).map(c => c.value);
    
    const params = new URLSearchParams();
    if (q) params.append('q', q);
    params.append('sort_by', sortBy);
    params.append('order', order);
    cadences.forEach(c => params.append('cadence', c));
    
    fetch(`/player/${p_id}/adversaires?${params.toString()}`, {
        headers: { 'HX-Request': 'true' }
    })
    .then(r => r.text())
    .then(html => {
        document.getElementById('adversaires-list').outerHTML = html;
    })
    .catch(e => console.error('Cadence filter error:', e));
}

Verification: Function now properly:

  • Collects all filter parameters
  • Sends proper HTMX headers
  • Handles response gracefully
  • No more ReferenceErrors

Questions for Anthropic Engineering

  1. Crash Detection: What triggers Claude Code crash detection? Is it monitoring browser console errors?
  2. Recovery Logic: Why does one ReferenceError cascade into 10 crashes instead of single recovery?
  3. Error Isolation: Could browser-context JavaScript errors be isolated from host process stability?
  4. Logging: Session logs survive crashes but only stored locally - any server-side telemetry?

System Information

  • Claude Code Version: Latest (Haiku 4.5)
  • Platform: Windows 11 Pro 10.0.26200
  • Browser: Chrome (via claude-in-chrome MCP)
  • Project: chesstrix_web (FastAPI + Jinja2 + HTMX)

Recommendations

  1. Immediate: Review crash detection threshold - single JS error shouldn't cascade
  2. Short-term: Add browser error recovery logic to isolate page errors from session crashes
  3. Long-term: Implement shared crash telemetry server (not just local .claude_session.log)
  4. Documentation: Warn users NEVER to delete .claude_session.log

Attachments

  • Full session log: .claude_session.log
  • Fixed commit: c222c1f
  • Affected files: templates/partials/adversaires.html, routes/player_adversaires.py

View original on GitHub ↗