summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/node_perf.cc1
-rw-r--r--test/parallel/test-performance-gc.js2
2 files changed, 3 insertions, 0 deletions
diff --git a/src/node_perf.cc b/src/node_perf.cc
index f5aafbab63..155f1e66e4 100644
--- a/src/node_perf.cc
+++ b/src/node_perf.cc
@@ -215,6 +215,7 @@ void MarkGarbageCollectionEnd(Isolate* isolate,
uv_async_t* async = new uv_async_t(); // coverity[leaked_storage]
if (uv_async_init(env->event_loop(), async, PerformanceGCCallback))
return delete async;
+ uv_unref(reinterpret_cast<uv_handle_t*>(async));
async->data =
new PerformanceEntry::Data(env, "gc", "gc",
performance_last_gc_start_mark_,
diff --git a/test/parallel/test-performance-gc.js b/test/parallel/test-performance-gc.js
index 1ff4c9ae62..89a9041c1c 100644
--- a/test/parallel/test-performance-gc.js
+++ b/test/parallel/test-performance-gc.js
@@ -48,4 +48,6 @@ const kinds = [
}));
obs.observe({ entryTypes: ['gc'] });
global.gc();
+ // Keep the event loop alive to witness the GC async callback happen.
+ setImmediate(() => setImmediate(() => 0));
}