Мои дорогие друзья, сегодня вечеромночьюутром я расскажу как не надо писать программы.
Жила-была большая программа. И вот она странно заглючила: в консольке писалось terminated без видимых причин. Знакомо, правда? После убития всех кронов, ненужных демонов и прочей нечисти проблема... осталась, причём заметил что умирают все дочерние процессы вместе с родительским. Логично было предположить что прога хитрым образом себя сама прибивает, но нет, strace молчит. Дошло дело до systemtap. И, о ужас, оказалось сигнал посылается коммандой perf которой я статистику собираю.
Пока разбирался с кодом выловил кучу багов с тредами и chdir(), аккуратно расставил блокировки... Но аккелла промахнулся и в одном месте упустил это. А perf, написанный великими гуру Инго Молнаром, просто берёт и kill(0, SIGTERM). Т.е. всю группу процессов грохает нафиг без разбора и ругани.
Ну чо, я стал умнее. Но если клава чешится написать про мои умственные способности то не сдерживайте себя, форум всё стерпит.