Skip to content

# Windsurf IDE Freeze Bug Report #284

@aeongeon

Description

@aeongeon

Environment

  • Windsurf version: 1.9544.35 (1.106.0)
  • OS: Linux (Pop!_OS / Ubuntu-based)
  • Architecture: x64
  • GPU: NVIDIA (tested with both GPU and software rendering — no difference)

Reproduction

  1. Open any workspace in Windsurf
  2. Send any message in Cascade (even "hello")
  3. Wait for AI response to complete
  4. IDE freezes for ~5 minutes — no clicks, scrolling, or keyboard input works
  5. After ~5 minutes, IDE becomes responsive again
  6. Repeat — happens every single time

Diagnostic Evidence

1. Main Thread Blocked on futex (strace)

strace -p <renderer_pid> shows:
futex(0x..., FUTEX_WAIT_PRIVATE, ...) = 0  [5.4 seconds]

The renderer main thread is blocked in futex_do_wait for exactly ~5.4 seconds after each response. This is a synchronous block — the entire event loop is stalled.

2. GC is NOT the cause

V8 --trace-gc output shows:

  • Renderer heap: ~12 MB, max pause 0.45ms
  • Extension host heap: 120-210 MB sawtooth, max pause 58ms
  • No GC event exceeds 60ms — cannot explain 5-second freeze

3. 70+ Duplicate gRPC Calls Per Second

Immediately after each response, verbose logging shows massive duplicate API calls within 1 second:

  • GetMcpServerStates × 6
  • GetCodeValidationStates × 8
  • GetAllWorkflows × 4
  • GetAllRules × 4
  • GetCascadeMemories × 3
  • GetUserMemories × 3
  • StreamCascadePanelReactiveUpdates × 3
  • SetUserSettings × 4
  • Plus ~20 more duplicates

4. Telemetry Still Active Despite Settings

Unleash feature flag polling continues even with all telemetry settings disabled:

telemetry.telemetryLevel: "off"
telemetry.enableTelemetry: false
telemetry.enableCrashReporter: false

URL params show disableTelemetry=false in actual Unleash requests.

5. Browser Process is Fine

Using Chrome DevTools Protocol (port 9222), the browser process responds normally during the freeze. Only the renderer main thread is blocked.

What Was Ruled Out (3 days of investigation)

Potential Cause Status Evidence
GPU acceleration ❌ Ruled out Same with --disable-hardware-acceleration and software rendering
Git integration ❌ Ruled out git.enabled: false at user level, no change
File watcher overload ❌ Ruled out Extensive watcherExclude patterns, no change
Garbage collection ❌ Ruled out --trace-gc shows max 58ms pause
Large workspace ❌ Ruled out Happens in any workspace
Extensions ❌ Ruled out No third-party extensions installed
Memory pressure ❌ Ruled out System has plenty of RAM, heap sizes normal
inotify limits ❌ Ruled out Increased to 524288, no change
Process priority ❌ Ruled out Exempted from system76-scheduler, no change
Multiple windows ❌ Ruled out Single window, same behavior
Cascade data corruption ❌ Ruled out Deleted ~/.codeium/windsurf/cascade, cleared caches, no change
Fresh install ❌ Ruled out Complete reinstall, same behavior
Conversation length ❌ Ruled out Happens on first message in new conversation
Kernel-level blocking ❌ Ruled out strace shows userspace futex, not kernel I/O

Root Cause Assessment

The freeze is caused by CPU-bound JavaScript execution on the renderer main thread that processes the flood of 70+ gRPC responses synchronously after each Cascade response. The main thread event loop is completely blocked during this processing, making the entire UI unresponsive.

Suggested Fix Areas

  1. Debounce/deduplicate the reactive gRPC calls (70+ duplicate calls in 1 second is excessive)
  2. Move heavy processing off the main thread (use Web Workers or requestIdleCallback)
  3. Batch state updates instead of processing each gRPC response individually
  4. Honor telemetry settings — Unleash polling continues despite telemetry.telemetryLevel: "off"

Settings Applied (none helped)

{
    "windsurf.lifeguard.enabled": false,
    "windsurf.searchMaxWorkspaceFileCount": 500,
    "windsurf.useIndexingV2": false,
    "windsurf.annotations.enabled": false,
    "telemetry.telemetryLevel": "off",
    "telemetry.enableTelemetry": false,
    "telemetry.enableCrashReporter": false
}

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