Не, задачата е по-елементарна от halting теоремата. Пък е и факт че има статични анализатори. Сега съм малко отпуска и другата седмица ще поровя още...
За нуждите на стек анализа не е необходима 100% точност. Примерно честа ситуация с виртуалните методи е да се зареждат обекти от файл или от някъде отвън. Четеш типа и създаваш един или друг обект и му викаш load(). Статичният анализатор няма как да знае какви ще са данните, но него го интересува максималния стек, т.е. достатъчно е да се знаят всички класове и всички наследявания. А те се знаят в повечето компилатори, така че просто се взема варианта на load() дето яде най-много и толкоз. По-точно търси се се най-дългия път, но това са подробности.
Да, статичния анализ няма да е 100% точен, но грешката му е в презапасяването, т.е. ще сметни по-голям стек от нужното. Това обаче не е фатално, известен преразход на памет не ме притеснява, притеснява ме недостига
Иначе, да може да се напише код, който трудно би се анализирал... но сме му яли попарата и вече го избягваме тоя стил щото не само анализатора и ние се бъркаме и не можем да го поддържаме.