Skip to content

Report heap snapshots as unsupported under record/replay - #163

Draft
Andarist wants to merge 1 commit into
masterfrom
heap-snapshots-unsupported
Draft

Andarist wants to merge 1 commit into
masterfrom
heap-snapshots-unsupported

Conversation

@Andarist

@Andarist Andarist commented Oct 1, 2026

Copy link
Copy Markdown
Member

Heap contents differ between recording and replaying, so the snapshot serializer already emits "{}" under record/replay, but the snapshot was still generated first. On a big heap that is one native call long enough for a replaying process to be considered hung. getHeapSnapshot()'s stream also never ended, and worker.getHeapSnapshot() crashed on exit.

Fail every entry point before generating anything:

  • v8.writeHeapSnapshot() and v8.getHeapSnapshot() throw ERR_RECORD_REPLAY_UNSUPPORTED, and worker.getHeapSnapshot() rejects with it.
  • The --heapsnapshot-signal listener emits a warning instead, since throwing from it would crash the process.
  • --heapsnapshot-near-heap-limit doesn't install its callback and prints a notice to stderr. It isn't a process warning because console messages logged while bootstrapping crash replaying processes that collect console messages.
  • The inspector's HeapProfiler.takeHeapSnapshot and stopTrackingHeapObjects return an error.

Heap contents differ between recording and replaying, so the snapshot
serializer already emits "{}" under record/replay, but the snapshot was
still generated first. On a big heap that is one native call long enough
for a replaying process to be considered hung. getHeapSnapshot()'s stream
also never ended, and worker.getHeapSnapshot() crashed on exit.

Fail every entry point before generating anything:

- v8.writeHeapSnapshot() and v8.getHeapSnapshot() throw
  ERR_RECORD_REPLAY_UNSUPPORTED, and worker.getHeapSnapshot() rejects
  with it.
- The --heapsnapshot-signal listener emits a warning instead, since
  throwing from it would crash the process.
- --heapsnapshot-near-heap-limit doesn't install its callback and prints
  a notice to stderr. It isn't a process warning because console messages
  logged while bootstrapping crash replaying processes that collect
  console messages.
- The inspector's HeapProfiler.takeHeapSnapshot and
  stopTrackingHeapObjects return an error.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant