Commit 0884c70
child_process: workaround fd passing issue on OS X
There's an issue on some `OS X` versions when passing fd's between processes.
When the handle associated to a specific file descriptor is closed by the sender
process before it's received in the destination, the handle is indeed closed
while it should remain opened. In order to fix this behaviour, don't close the
handle until the `NODE_HANDLE_ACK` is received by the sender.
Added `test-child-process-pass-fd` that is basically `test-cluster-net-send` but
creating lots of workers, so the issue reproduces on `OS X` consistently.
Fixes: #7512
PR-URL: #7572
Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl>
Reviewed-By: Colin Ihrig <cjihrig@gmail.com>1 parent 4deb054 commit 0884c70Copy full SHA for 0884c70
File tree
Expand file treeCollapse file tree
2 files changed
+86
-8
lines changedOpen diff view settings
Filter options
- lib/internal
- test/sequential
Expand file treeCollapse file tree
2 files changed
+86
-8
lines changedOpen diff view settings
Collapse file
lib/internal/child_process.js
Copy file name to clipboardExpand all lines: lib/internal/child_process.js+33-8Lines changed: 33 additions & 8 deletions
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| ||
94 | 94 | |
95 | 95 | |
96 | 96 | |
97 | | - |
98 | | - |
99 | | - |
100 | | - |
| 97 | + |
| 98 | + |
| 99 | + |
| 100 | + |
| 101 | + |
| 102 | + |
| 103 | + |
| 104 | + |
| 105 | + |
| 106 | + |
| 107 | + |
| 108 | + |
| 109 | + |
| 110 | + |
| 111 | + |
101 | 112 | |
102 | 113 | |
103 | 114 | |
| ||
400 | 411 | |
401 | 412 | |
402 | 413 | |
| 414 | + |
403 | 415 | |
404 | 416 | |
405 | 417 | |
| ||
465 | 477 | |
466 | 478 | |
467 | 479 | |
| 480 | + |
| 481 | + |
| 482 | + |
| 483 | + |
| 484 | + |
468 | 485 | |
469 | 486 | |
470 | 487 | |
| ||
610 | 627 | |
611 | 628 | |
612 | 629 | |
613 | | - |
614 | | - |
| 630 | + |
| 631 | + |
| 632 | + |
| 633 | + |
| 634 | + |
| 635 | + |
| 636 | + |
615 | 637 | |
616 | 638 | |
617 | 639 | |
618 | | - |
619 | | - |
620 | 640 | |
621 | 641 | |
622 | 642 | |
| ||
677 | 697 | |
678 | 698 | |
679 | 699 | |
| 700 | + |
| 701 | + |
| 702 | + |
| 703 | + |
| 704 | + |
680 | 705 | |
681 | 706 | |
682 | 707 | |
|
Collapse file
test/sequential/test-child-process-pass-fd.js
Copy file name to clipboard+53Lines changed: 53 additions & 0 deletions
| 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 | + |
| 39 | + |
| 40 | + |
| 41 | + |
| 42 | + |
| 43 | + |
| 44 | + |
| 45 | + |
| 46 | + |
| 47 | + |
| 48 | + |
| 49 | + |
| 50 | + |
| 51 | + |
| 52 | + |
| 53 | + |
0 commit comments