From e1881bba730c47b0af679a97853222733f1f20f5 Mon Sep 17 00:00:00 2001 From: Sean Mann Date: Mon, 5 Jul 2021 16:35:11 -0700 Subject: [PATCH 1/3] 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. --- .../mini_racer_extension.cc | 17 +++++++++-------- 1 file changed, 9 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..b91de648 100644 --- a/ext/mini_racer_extension/mini_racer_extension.cc +++ b/ext/mini_racer_extension/mini_racer_extension.cc @@ -467,6 +467,15 @@ 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); +printf("lim: %lu %lu aaa\n", (size_t)IsolateData::Get(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