Skip to content

SIGSEGV crash in AST parser (ast.Node.InEmptyFunction) when indexing TypeScript service files #1186

@RhettPrichard

Description

@RhettPrichard

CLAUDE ripped though the log of the gemini crash and generated this. the gemini inside of vscode is crashing enough I could not ask it what was going on.

Environment:

  • Gemini Code Assist Extension Version: 2.59.0
  • cloudcode_cli Build: Nov 20 2025 00:18:17, cl:834626974
  • VSCode Version: 1.106.3
  • OS: macOS Darwin 24.1.0 (ARM64)
  • Node: v24.2.0

Description:
The Gemini Code Assist language server crashes with a segmentation fault when indexing TypeScript files in a multi-file project. The server crashed 5 times in 3 minutes before VSCode stopped restarting it.

Crash Location:

  • File: ast/match.go:121 and ast/node.go:293-306
  • Function: ast.Node.InEmptyFunction.AllOf.func2()
  • Trigger: writeNodeMetrics()fetchInlineCompletionResponse()completeCodeExperimental()

Root Cause:
Nil pointer dereference in AST node matching. The tokenizer context gets canceled (tokenizeFunc: context canceled) leaving nodes in an inconsistent state, then InEmptyFunction() is called on a nil node.

Files being indexed when crash occurred:

  • api/src/services/BaseIntegrationService.ts
  • api/src/services/BaseOrchestrationService.ts
  • api/src/services/BootstrapService.ts (9217 bytes)
  • api/src/services/CacheService.ts (10200 bytes)
  • api/src/services/ContainerService.ts (10102 bytes)
  • api/src/services/CourseService.ts (14938 bytes)
  • api/src/services/EnrollmentService.ts (15249 bytes)
  • api/src/services/ExportImportService.ts (15600 bytes)

Stack Trace:
panic: runtime error: invalid memory address or nil pointer dereference
[signal SIGSEGV: segmentation violation code=0x2 addr=0x0 pc=0x102aeefe0]

goroutine 28 [running]:
google3/cloud/developer_experience/cloudcode/ai_companion/pkg/ast/ast.Node.InEmptyFunction.AllOf.func2(...)
cloud/developer_experience/cloudcode/ai_companion/pkg/ast/match.go:121 +0x50
google3/cloud/developer_experience/cloudcode/ai_companion/pkg/ast/ast.Node.nodeOrParentMatches(...)
cloud/developer_experience/cloudcode/ai_companion/pkg/ast/node.go:293 +0x6c
google3/cloud/developer_experience/cloudcode/ai_companion/pkg/ast/ast.Node.InEmptyFunction(...)
cloud/developer_experience/cloudcode/ai_companion/pkg/ast/node.go:306 +0xe4
google3/cloud/developer_experience/cloudcode/ai_companion/language_server/server/server.(*Server).writeNodeMetrics(...)
cloud/developer_experience/cloudcode/ai_companion/language_server/server/completion.go:426 +0x218
google3/cloud/developer_experience/cloudcode/ai_companion/language_server/server/server.(*Server).fetchInlineCompletionResponse(...)
cloud/developer_experience/cloudcode/ai_companion/language_server/server/completion.go:392 +0x54
google3/cloud/developer_experience/cloudcode/ai_companion/language_server/server/server.(*Server).completeCodeExperimental.func1()
cloud/developer_experience/cloudcode/ai_companion/language_server/server/completion.go:331 +0x5c

Preceding Warnings (pattern repeats for each file):
W1202 02:38:51.435246 bm25.go:82] Tokenization failed for URI: tokenizeFunc: context canceled
E1202 02:38:51.435248 workspace_context.go:179] error indexing fragment for file: tokenizeFunc: context canceled

Suggested Fix:
Add nil check before calling methods on AST nodes in nodeOrParentMatches() and InEmptyFunction(), or handle the context cancellation gracefully before accessing node properties.

Workaround:
Added .aiexclude file to exclude the problematic directory.

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