github / github/copilot-cli

Copilot CLI crashes with JavaScript heap out of memory when resuming a long-standing session

オープン
#4,664 コメント 8 件 リアクション 2 件 担当者 0 名 GitHub で見る

まだ誰も着手していません。

area:context-memory area:sessions
主要言語
Shell
スター
11.2k
フォーク
1.9k
平均マージ
14時間 16分
マージ済み PR(30日)
6

説明

Describe the bug

Copilot CLI crashes with a fatal Node.js/V8 JavaScript heap out of memory error when attempting to resume a long-standing/large session.

The failure occurs while loading/resuming the old session, before I can continue working in the session.

The Node.js process reaches approximately 4.1 GB of heap usage, performs repeated garbage collection / mark-compact cycles, and then aborts:

Scavenge (interleaved) 4062.4 (4097.2) -> 4061.6 (4097.5) MB
Mark-Compact 4062.4 (4098.2) -> 4061.5 (4097.5) MB

FATAL ERROR: Ineffective mark-compacts near heap limit
Allocation failed - JavaScript heap out of memory

Affected version

1.0.81

Steps to reproduce the behavior
  1. Have a long-standing Copilot CLI session with a substantial conversation history and tool usage.
  2. Exit Copilot CLI.
  3. At a later point, attempt to resume that session using the session resume functionality.
  4. Copilot CLI starts loading the old session.
  5. Memory usage grows to approximately 4 GB.
  6. Node.js garbage collection becomes increasingly expensive.
  7. Copilot CLI terminates with a fatal heap OOM.

The problem appears to correlate strongly with the size/age of the session. Newer/smaller sessions do not exhibit the problem.

Actual behavior

Copilot CLI crashes:

[1511802:0x125f9000] 10626721 ms: Scavenge (interleaved) 4062.4 (4097.2) -> 4061.6 (4097.5) MB, pooled: 0 MB, 3.54 / 0.00 ms
[1511802:0x125f9000] 10629420 ms: Mark-Compact 4062.4 (4098.2) -> 4061.5 (4097.5) MB, pooled: 0 MB, 2694.82 / 0.00 ms

FATAL ERROR: Ineffective mark-compacts near heap limit
Allocation failed - JavaScript heap out of memory

Writing Node.js report to file:
report.20260830.021306.1511802.0.001.json

Node.js report completed
Aborted (core dumped)

The session cannot be resumed, effectively making the accumulated context inaccessible through the normal resume mechanism.

Expected behavior

Copilot CLI should be able to resume a previously saved session without exhausting the Node.js heap.

If a session has become too large to load in its entirety, Copilot CLI should ideally:

Detect the excessive session size before attempting to fully load it.
Compact/summarize the session before restoring it, if possible.
Provide a mechanism to resume from a recent checkpoint.
Gracefully report that the session is too large rather than crashing the entire CLI process.
Preserve the ability to recover/use the historical session.

Additional context

Copilot CLI version: 1.0.81
OS: Linux
Model: Claude Opus 5 (High)
Repository: private/local repository
Session: long-standing session with substantial history

The crash occurs at approximately 4 GB of V8 heap usage.

The garbage collector is unable to reclaim meaningful memory:

4062.4 MB -> 4061.6 MB
4062.4 MB -> 4061.5 MB

The second Mark-Compact operation takes approximately 2.7 seconds, after which V8 reports that further compaction is ineffective.

This suggests that a significant amount of session-related data remains strongly referenced while the old session is being restored.

コントリビューションガイド

コントリビューションガイドを開く

はじめの一歩

  1. issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
  2. 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
  3. リポジトリをフォークし、ブランチを切って変更します。
  4. issue 番号を参照したプルリクエストを送ります。

調査の方向性

まず、長期間存在する大規模なセッションで Copilot CLI のセッション再開機能を使って失敗を再現し、その後、保存されたセッションがどのように読み込まれ、復元されるかを追跡します。Issue にはファイルやテストが記載されていないため、最初にセッション読み込みのエントリポイントを特定してください。大規模なセッションで Node.js ヒープが枯渇せず、サイズ超過のセッションが適切に失敗するか、復旧可能な状態に保たれれば完了です。

索引モデルが issue の本文から書いたものです。

評価

技術スタック
node.js
領域
cli, performance
issue の種類
バグ
難易度
4/5
見積もり時間
3〜5日
活発さ
活発
明瞭さ
おおむね明確
初心者へのやさしさ
48/100

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。