Commit c718af3
committed
Fix Node.js exit for library builds with pthreads
When building without a main function (a library build), and using pthreads
to do background work, the main Node.js thread has no event loop work to
keep Node.js alive. The workers are also unreferenced when they start
executing, so Node.js will exit prematurely before the background thread
can finish its work.
To prevent this, change the worker reference logic so that we only
`unref()` workers upon execution if `HAS_MAIN` is enabled. For library
builds, we keep them referenced (`worker.ref()`) to keep the process
alive while they are active.
We also ensure idle workers returned to the pool are `unref()`'d across
all Node builds (not just with `PROXY_TO_PTHREAD`) so that an idle
pool doesn't leak references preventing exit.
Fixes #230921 parent 3051725 commit c718af3
5 files changed
Lines changed: 71 additions & 3 deletions
File tree
- src/lib
- test
- core/pthread
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
208 | 208 | | |
209 | 209 | | |
210 | 210 | | |
211 | | - | |
| 211 | + | |
212 | 212 | | |
213 | | - | |
| 213 | + | |
214 | 214 | | |
215 | | - | |
| 215 | + | |
216 | 216 | | |
217 | 217 | | |
218 | 218 | | |
| |||
689 | 689 | | |
690 | 690 | | |
691 | 691 | | |
| 692 | + | |
692 | 693 | | |
693 | 694 | | |
694 | 695 | | |
695 | 696 | | |
696 | 697 | | |
| 698 | + | |
| 699 | + | |
| 700 | + | |
| 701 | + | |
| 702 | + | |
697 | 703 | | |
698 | 704 | | |
699 | 705 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
| 23 | + | |
| 24 | + | |
| 25 | + | |
| 26 | + | |
| 27 | + | |
| 28 | + | |
| 29 | + | |
| 30 | + | |
| 31 | + | |
| 32 | + | |
| 33 | + | |
| 34 | + | |
| 35 | + | |
| 36 | + | |
| 37 | + | |
| 38 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
9164 | 9164 | | |
9165 | 9165 | | |
9166 | 9166 | | |
| 9167 | + | |
| 9168 | + | |
| 9169 | + | |
| 9170 | + | |
| 9171 | + | |
| 9172 | + | |
9167 | 9173 | | |
9168 | 9174 | | |
9169 | 9175 | | |
| |||
0 commit comments