mirror of
https://github.com/nodejs/node.git
synced 2025-08-15 21:58:48 +02:00
n-api: detect deadlocks in thread-safe function
We introduce status `napi_would_deadlock` to be used as a return status by `napi_call_threadsafe_function` if the call is made with `napi_tsfn_blocking` on the main thread and the queue is full. Fixes: https://github.com/nodejs/node/issues/32615 Signed-off-by: Gabriel Schulhof <gabriel.schulhof@intel.com> PR-URL: https://github.com/nodejs/node/pull/32860 Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl> Reviewed-By: Michael Dawson <michael_dawson@ca.ibm.com> Reviewed-By: Zeyu Yang <himself65@outlook.com>
This commit is contained in:
parent
250060a050
commit
d26ca06c16
7 changed files with 125 additions and 10 deletions
|
@ -210,8 +210,13 @@ new Promise(function testWithoutJSMarshaller(resolve) {
|
|||
}))
|
||||
.then((result) => assert.strictEqual(result.indexOf(0), -1))
|
||||
|
||||
// Start a child process to test rapid teardown
|
||||
// Start a child process to test rapid teardown.
|
||||
.then(() => testUnref(binding.MAX_QUEUE_SIZE))
|
||||
|
||||
// Start a child process with an infinite queue to test rapid teardown
|
||||
.then(() => testUnref(0));
|
||||
// Start a child process with an infinite queue to test rapid teardown.
|
||||
.then(() => testUnref(0))
|
||||
|
||||
// Test deadlock prevention.
|
||||
.then(() => assert.deepStrictEqual(binding.TestDeadlock(), {
|
||||
deadlockTest: 'Main thread would deadlock'
|
||||
}));
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue