Commit f7eee72
committed
WIP: Forward parent death to descendant processes (unix)
If the uds_fd connection to the parent BEAM is broken or closed, react
by killing all spawned children. When a spawned port is closed, kill
the associated OS process.
A concise demonstration of the problem being solved is to run the
following command with and without the patch, then kill the BEAM.
Without the patch, the "sleep" process will continue:
erl -noshell -eval 'os:cmd("sleep 60")'
Keeps the mapping of all living child processes so that it's possible
to iterate over them during clean up. Previously, child processes
were only stored in forker_hash if the :in bit was set.
A new forker command message is introduced, which allows it to kill
the child and clean up internal resources if the port is closed before
the process ends naturally.
TODO:
* Needs a decision made between killing the process or process group.
* Separate patch for win321 parent f64ad0a commit f7eee72
File tree
4 files changed
+124
-79
lines changed- erts
- emulator/sys/unix
- preloaded/src
4 files changed
+124
-79
lines changed| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
96 | 96 | | |
97 | 97 | | |
98 | 98 | | |
| 99 | + | |
| 100 | + | |
| 101 | + | |
| 102 | + | |
| 103 | + | |
| 104 | + | |
| 105 | + | |
| 106 | + | |
| 107 | + | |
99 | 108 | | |
100 | 109 | | |
101 | 110 | | |
| |||
174 | 183 | | |
175 | 184 | | |
176 | 185 | | |
177 | | - | |
178 | | - | |
| 186 | + | |
| 187 | + | |
179 | 188 | | |
180 | 189 | | |
181 | 190 | | |
| |||
564 | 573 | | |
565 | 574 | | |
566 | 575 | | |
| 576 | + | |
567 | 577 | | |
568 | 578 | | |
569 | 579 | | |
| |||
572 | 582 | | |
573 | 583 | | |
574 | 584 | | |
| 585 | + | |
575 | 586 | | |
576 | 587 | | |
577 | 588 | | |
578 | 589 | | |
579 | 590 | | |
580 | | - | |
| 591 | + | |
| 592 | + | |
581 | 593 | | |
582 | | - | |
| 594 | + | |
583 | 595 | | |
584 | | - | |
| 596 | + | |
585 | 597 | | |
586 | | - | |
587 | | - | |
588 | | - | |
| 598 | + | |
| 599 | + | |
| 600 | + | |
589 | 601 | | |
590 | | - | |
| 602 | + | |
| 603 | + | |
| 604 | + | |
| 605 | + | |
591 | 606 | | |
592 | | - | |
593 | | - | |
594 | | - | |
595 | | - | |
596 | | - | |
597 | | - | |
| 607 | + | |
| 608 | + | |
| 609 | + | |
| 610 | + | |
| 611 | + | |
| 612 | + | |
598 | 613 | | |
599 | 614 | | |
600 | | - | |
601 | | - | |
| 615 | + | |
| 616 | + | |
602 | 617 | | |
603 | 618 | | |
604 | | - | |
605 | | - | |
606 | | - | |
607 | | - | |
| 619 | + | |
| 620 | + | |
| 621 | + | |
| 622 | + | |
| 623 | + | |
| 624 | + | |
| 625 | + | |
| 626 | + | |
| 627 | + | |
| 628 | + | |
| 629 | + | |
| 630 | + | |
| 631 | + | |
| 632 | + | |
| 633 | + | |
| 634 | + | |
| 635 | + | |
608 | 636 | | |
609 | 637 | | |
610 | 638 | | |
611 | 639 | | |
612 | 640 | | |
| 641 | + | |
613 | 642 | | |
614 | 643 | | |
615 | 644 | | |
616 | 645 | | |
617 | 646 | | |
618 | | - | |
619 | | - | |
620 | | - | |
621 | | - | |
622 | | - | |
623 | | - | |
624 | | - | |
625 | | - | |
626 | | - | |
627 | | - | |
628 | | - | |
629 | | - | |
630 | | - | |
| 647 | + | |
| 648 | + | |
| 649 | + | |
| 650 | + | |
| 651 | + | |
| 652 | + | |
| 653 | + | |
| 654 | + | |
| 655 | + | |
| 656 | + | |
| 657 | + | |
| 658 | + | |
| 659 | + | |
| 660 | + | |
| 661 | + | |
631 | 662 | | |
632 | 663 | | |
633 | 664 | | |
634 | 665 | | |
635 | 666 | | |
636 | 667 | | |
637 | | - | |
638 | | - | |
639 | | - | |
640 | | - | |
641 | | - | |
642 | | - | |
643 | | - | |
| 668 | + | |
644 | 669 | | |
645 | | - | |
646 | | - | |
647 | | - | |
648 | | - | |
649 | | - | |
650 | | - | |
651 | | - | |
652 | | - | |
| 670 | + | |
| 671 | + | |
| 672 | + | |
653 | 673 | | |
654 | 674 | | |
655 | 675 | | |
656 | | - | |
657 | | - | |
658 | | - | |
659 | | - | |
660 | | - | |
661 | | - | |
662 | | - | |
663 | | - | |
664 | | - | |
665 | | - | |
| 676 | + | |
| 677 | + | |
| 678 | + | |
| 679 | + | |
| 680 | + | |
| 681 | + | |
| 682 | + | |
666 | 683 | | |
667 | 684 | | |
668 | 685 | | |
| |||
691 | 708 | | |
692 | 709 | | |
693 | 710 | | |
| 711 | + | |
694 | 712 | | |
695 | 713 | | |
696 | 714 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
56 | 56 | | |
57 | 57 | | |
58 | 58 | | |
59 | | - | |
| 59 | + | |
| 60 | + | |
60 | 61 | | |
61 | 62 | | |
62 | 63 | | |
63 | 64 | | |
64 | 65 | | |
| 66 | + | |
65 | 67 | | |
66 | 68 | | |
67 | 69 | | |
| |||
71 | 73 | | |
72 | 74 | | |
73 | 75 | | |
| 76 | + | |
| 77 | + | |
| 78 | + | |
74 | 79 | | |
75 | 80 | | |
76 | 81 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
703 | 703 | | |
704 | 704 | | |
705 | 705 | | |
706 | | - | |
| 706 | + | |
| 707 | + | |
707 | 708 | | |
708 | 709 | | |
709 | 710 | | |
| |||
1046 | 1047 | | |
1047 | 1048 | | |
1048 | 1049 | | |
| 1050 | + | |
| 1051 | + | |
| 1052 | + | |
| 1053 | + | |
| 1054 | + | |
| 1055 | + | |
| 1056 | + | |
| 1057 | + | |
| 1058 | + | |
| 1059 | + | |
1049 | 1060 | | |
1050 | 1061 | | |
1051 | 1062 | | |
| |||
1814 | 1825 | | |
1815 | 1826 | | |
1816 | 1827 | | |
1817 | | - | |
1818 | | - | |
1819 | | - | |
1820 | | - | |
1821 | | - | |
1822 | | - | |
1823 | | - | |
1824 | | - | |
1825 | | - | |
1826 | | - | |
1827 | | - | |
1828 | | - | |
1829 | | - | |
| 1828 | + | |
| 1829 | + | |
| 1830 | + | |
1830 | 1831 | | |
1831 | | - | |
1832 | | - | |
1833 | 1832 | | |
1834 | | - | |
| 1833 | + | |
| 1834 | + | |
| 1835 | + | |
| 1836 | + | |
| 1837 | + | |
| 1838 | + | |
| 1839 | + | |
| 1840 | + | |
| 1841 | + | |
| 1842 | + | |
| 1843 | + | |
| 1844 | + | |
| 1845 | + | |
| 1846 | + | |
1835 | 1847 | | |
1836 | 1848 | | |
1837 | | - | |
1838 | | - | |
| 1849 | + | |
| 1850 | + | |
1839 | 1851 | | |
| 1852 | + | |
| 1853 | + | |
| 1854 | + | |
| 1855 | + | |
| 1856 | + | |
1840 | 1857 | | |
1841 | 1858 | | |
1842 | 1859 | | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
7475 | 7475 | | |
7476 | 7476 | | |
7477 | 7477 | | |
| 7478 | + | |
| 7479 | + | |
| 7480 | + | |
| 7481 | + | |
| 7482 | + | |
7478 | 7483 | | |
7479 | 7484 | | |
7480 | 7485 | | |
| |||
0 commit comments