Skip to content

Commit

Permalink
src: use a higher limit in the NearHeapLimitCallback
Browse files Browse the repository at this point in the history
V8 requires the NearHeapLimitCallback to return a limit that's higher
than the initial one or otherwise it will crash.

PR-URL: #41041
Refs: #41013
Reviewed-By: Michaël Zasso <targos@protonmail.com>
Reviewed-By: Tobias Nießen <tniessen@tnie.de>
Reviewed-By: Anna Henningsen <anna@addaleax.net>
Reviewed-By: James M Snell <jasnell@gmail.com>
  • Loading branch information
joyeecheung authored and danielleadams committed Dec 13, 2021
1 parent b353ded commit 6f0ec98
Showing 1 changed file with 8 additions and 3 deletions.
11 changes: 8 additions & 3 deletions src/env.cc
Expand Up @@ -1577,7 +1577,7 @@ size_t Environment::NearHeapLimitCallback(void* data,
// may eventually crash with this new limit - effectively raising
// the heap limit to the new one.
if (env->is_processing_heap_limit_callback_) {
size_t new_limit = initial_heap_limit + max_young_gen_size;
size_t new_limit = current_heap_limit + max_young_gen_size;
Debug(env,
DebugCategory::DIAGNOSTICS,
"Not generating snapshots in nested callback. "
Expand All @@ -1595,7 +1595,9 @@ size_t Environment::NearHeapLimitCallback(void* data,
"Not generating snapshots because it's too risky.\n");
env->isolate()->RemoveNearHeapLimitCallback(NearHeapLimitCallback,
initial_heap_limit);
return current_heap_limit;
// The new limit must be higher than current_heap_limit or V8 might
// crash.
return current_heap_limit + 1;
}

// Take the snapshot synchronously.
Expand Down Expand Up @@ -1631,7 +1633,10 @@ size_t Environment::NearHeapLimitCallback(void* data,
env->isolate()->AutomaticallyRestoreInitialHeapLimit(0.95);

env->is_processing_heap_limit_callback_ = false;
return initial_heap_limit;

// The new limit must be higher than current_heap_limit or V8 might
// crash.
return current_heap_limit + 1;
}

inline size_t Environment::SelfSize() const {
Expand Down

0 comments on commit 6f0ec98

Please sign in to comment.