GeezerVison is showing github.com — n-api: revert change to finalization · nodejs/node@0c17dbd
File tree
Expand file treeCollapse file tree
Open diff view settings
test/node-api/test_worker_terminate_finalization
Expand file treeCollapse file tree
Open diff view settings
Collapse file
Copy file name to clipboardExpand all lines: src/js_native_api_v8.cc +2-4Lines changed: 2 additions & 4 deletions | Original file line number | Diff line number | Diff line change |
|---|
@@ -228,10 +228,9 @@ class RefBase : protected Finalizer, RefTracker { |
228 | 228 | // from one of Unwrap or napi_delete_reference. |
229 | 229 | // |
230 | 230 | // When it is called from Unwrap or napi_delete_reference we only |
231 | | - // want to do the delete if there is no finalizer or the finalizer has already |
232 | | - // run or cannot have been queued to run (i.e. the reference count is > 0), |
| 231 | + // want to do the delete if the finalizer has already run or |
| 232 | + // cannot have been queued to run (ie the reference count is > 0), |
233 | 233 | // otherwise we may crash when the finalizer does run. |
234 | | - // |
235 | 234 | // If the finalizer may have been queued and has not already run |
236 | 235 | // delay the delete until the finalizer runs by not doing the delete |
237 | 236 | // and setting _delete_self to true so that the finalizer will |
@@ -243,7 +242,6 @@ class RefBase : protected Finalizer, RefTracker { |
243 | 242 | static inline void Delete(RefBase* reference) { |
244 | 243 | reference->Unlink(); |
245 | 244 | if ((reference->RefCount() != 0) || |
246 | | - (reference->_finalize_callback == nullptr) || |
247 | 245 | (reference->_delete_self) || |
248 | 246 | (reference->_finalize_ran)) { |
249 | 247 | delete reference; |
|
Collapse file
Copy file name to clipboardExpand all lines: test/node-api/test_worker_terminate_finalization/test.js +6Lines changed: 6 additions & 0 deletions | Original file line number | Diff line number | Diff line change |
|---|
|
1 | 1 | 'use strict'; |
2 | 2 | const common = require('../../common'); |
3 | 3 |
|
| 4 | +// TODO(addaleax): Run this test once it stops failing under ASAN/valgrind. |
| 5 | +// Refs: https://github.com/nodejs/node/issues/34731 |
| 6 | +// Refs: https://github.com/nodejs/node/pull/35777 |
| 7 | +// Refs: https://github.com/nodejs/node/issues/35778 |
| 8 | +common.skip('Reference management in N-API leaks memory'); |
| 9 | + |
4 | 10 | const { Worker, isMainThread } = require('worker_threads'); |
5 | 11 |
|
6 | 12 | if (isMainThread) { |
|