> Сишечка не системная - Да? А кто у нас тогда системный то? На сях что-то большая часть системщины, бутлоадеры, кернелы, фирмвари, либы, вот это все :). И у других - failure mode еще больше так то. В сях они простые и понятные как правило и их немного.
> также можно исчерпать стек, вызывая функции. Особенно если
> где-то там, в глубине вызовов, будет на стеке буфер, не VLA,
> но и не очень маленький -
Одна из причин по которым жирное использование стека в функциях считается чем-то нехорошим, и кернел собирается с варнингом на размер стекфрейма, если что. По моему если у функции стек более кило - нате вам варнинг, во!
Кстати с современным компилером допустим сожрать стек рекурсией не так то просто, gcc допирает убрать сохранение-восстановление, копирование объекта и проч - и лианеризует рекурсивный вызов до чего-то типа цикла, с потреблением стека O(1) и временем выполнения O(n). И вот я вкатил рекурсию чтобы проверить работает ли мой детект stack overflow на мк и.. это не падает?! Ах ты ж блин, какой умный компилер! А чо, ассемблерщики, сможете оптимизнуть так же? :)
> есть вероятность, что почти всегда из него будет использоваться пару байт, а иногда
> столько, что хватит для переполнения стека.
Поэтому...
1) Там где это важно чекают stack usage функций.
2) MISRA запрещает рекурсивные вызовы например, и системный софт должен намотать на ус эту идею и так не делать.
> VLA, конечно, усугубляет, но сишечка сама по себе неадекватна задачам сиспрога например.
Ну вы то нам покажете что-то лучше? А то уж рекурсию можно на чем угодно, даже на асме, и тот кстати без оптимизаций - не будет линеаризовывать рекурсивный вызов до более плоского цикла и там все грохнется куда охотнее :)