Я написал программу на C, в которой я сделал довольно тяжелое выделение стека, около 2 МБ. Поскольку я использую IDE для бедняков *, я автоматически запускал программу через make, чтобы проверить ее каждый раз, когда компилировал.
Я почти все обернул, но по какой-то причине во время окончательной оптимизации я запустил его прямо из оболочки. Мгновенный сегменто! Запуск с make все еще работал, а запуск вручную всегда приводил к одному и тому же segfault.
Я в конечном итоге уменьшил объем выделяемого стека до 256 КиБ, что решило проблему. Моим разумным предположением было то, что make, вероятно, выполнял процесс, и, таким образом, он наследовал некоторые странные параметры, которые позволяли ему использовать больше места в стеке.
Хотя сейчас все в порядке, у меня нет возможности проверить свою теорию. Кто-нибудь может подтвердить или опровергнуть или предложить какой-либо способ тестирования?
* zsh, vim, gcc, gdb и некоторые сумасшедшие make-файлы