Сижу, переделываю код. Есть необходимость отучить постгрес запускать разные сервисные процессы. Решил по случаю переделать это по уму...
Переделываю кусок, запускаю, проверяю, переделываю, проверяю и тут падает оконная система... Вся.
Логинюсь обратно, восстанавливаю рабочий контекст, перехожу к проверке и оконная система падает снова.
Я, матерсь, выключаю компьютер, включаю компьютер, возвращаюсь к прерванной мысли, и оконная система падает снова.
Понимая, что дальше работать несудьба, прикидывая чего такое в компе должно сдохнуть чтобы было вот так вот, в ужасе понимая, что если это проблема в железе, то вообще трындец, мне в понедельник надо выходить в онлайн, другого компа у меня нет, и на работе замену выдать не успеют, все будут на конференции, я сворачиваю работу и начинаю двигаться к следующей точке сегодняшнего дня.
Пока еду, до меня начинает доходить...
Там для порождения сервисных процессов есть спец. фабрика, которая в качестве результата возвращает pid нового процесса. Для оторванных процессов я стал возвращать -1.
Видимо по какой-то своей внутренней логике, она после запуска сразу посылала одному из процессов какой-то сигнал (имеет право). А в линуксе процесс с номером -1 — это корневой процесс (скажите sudo pkill -9 -1, только не на подакшене, плиз)
Что это был за сигнал, и почему он будучи посланным от юзера (я постгрес запускал под собой) таки доходил до системного процесса — я не знаю, и наверное не буду разбираться, просто оторву посыл сигналов задезейбленным воркерам, благо там это тоже централизовано). Но эпичность допущенной ошибки меня восхитила. Можно мерить в сатиФаустах...
PS: и да, оконная система падала по нажатию Ctrl+C. Нажимаешь Ctrl+С в консоле и исчезает всё включая консоль!
Оно при принужительном завершении основного процесса кидало сигнал завершения детям, а он вместо этого уходил корневому процессу системы