Closed
Description
- Version:
v14.6.0, v12.14.1
- Platform:
4.15.0-1091-oem #101-Ubuntu SMP Thu Jun 25 17:55:29 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux
- Subsystem:
worker_threads
What steps will reproduce the bug?
I have opened up a repository here that can be used to reliably crash node. Follow the steps in README.md
to replicate.
How often does it reproduce? Is there a required condition?
This reproduces so long as a native node module has an active async handle for async completion.
What is the expected behavior?
Worker thread should not terminate until all handles are cleaned up. Modules should be able to exit gracefully when terminate is requested.
npm test
> [email protected] test /home/tylerw/github/test/native-node-tests
> node -e "w = new (require('worker_threads').Worker)('./runDoAsyncThing.js'); setTimeout(w.terminate.bind(w), 2000);"
Entering execute thread
What do you see instead?
npm test
> [email protected] test /home/tylerw/github/test/native-node-tests
> node -e "w = new (require('worker_threads').Worker)('./runDoAsyncThing.js'); setTimeout(w.terminate.bind(w), 2000);"
Entering execute thread
uv loop at [0x7f18151e1ad8] has open handles:
uv loop at [0x7f18151e1ad8] has 0 open handles in total
node[23076]: ../src/debug_utils.cc:322:void node::CheckedUvLoopClose(uv_loop_t*): Assertion `0 && "uv_loop_close() while having open handles"' failed.
1: 0x9fb000 node::Abort() [node]
2: 0x9fb07e [node]
3: 0x98e9f1 [node]
4: 0xab2e44 node::worker::Worker::Run() [node]
5: 0xab2e88 [node]
6: 0x7f1817de06db [/lib/x86_64-linux-gnu/libpthread.so.0]
7: 0x7f1817b09a3f clone [/lib/x86_64-linux-gnu/libc.so.6]
Aborted (core dumped)
npm ERR! Test failed. See above for more details.