From 50c36648b5a7324629e95f30ee45b52a90721f5e Mon Sep 17 00:00:00 2001 From: seanmakesgames Date: Mon, 5 Jul 2021 21:13:12 -0700 Subject: [PATCH] False positive on OOM error (#212) gc callback can happen between init and set this causes a confusing OOM crash because max mem is 0 at this point, so if the callback is hit, then the isolate will terminate no matter what. Co-authored-by: nightpool --- ext/mini_racer_extension/mini_racer_extension.cc | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/ext/mini_racer_extension/mini_racer_extension.cc b/ext/mini_racer_extension/mini_racer_extension.cc index 255a2962..f930ac83 100644 --- a/ext/mini_racer_extension/mini_racer_extension.cc +++ b/ext/mini_racer_extension/mini_racer_extension.cc @@ -467,6 +467,14 @@ nogvl_context_eval(void* arg) { IsolateData::Init(isolate); + if (eval_params->max_memory > 0) { + IsolateData::Set(isolate, IsolateData::MEM_SOFTLIMIT_MAX, eval_params->max_memory); + if (!isolate_info->added_gc_cb) { + isolate->AddGCEpilogueCallback(gc_callback); + isolate_info->added_gc_cb = true; + } + } + MaybeLocal