Почему ошибки stackoverflow хаотичны?

Эта простая программа на C редко заканчивается на одной и той же глубине вызова:

#include <stdio.h>
#include <stdlib.h>

void recursive(unsigned int rec);

int main(void)
{
  recursive(1);
  return 0;
}

void recursive(unsigned int rec) {
    printf("%u\n", rec);
    recursive(rec + 1);
}

Какие могут быть причины этого хаотического поведения?

Я использую Fedora (16 ГБ оперативной памяти, размер стека 8192), и скомпилирован с помощью CC без каких-либо опций.

РЕДАКТИРОВАТЬ

Я знаю, что эта программа будет выбрасыватьЯ знаю, что включение некоторых оптимизаций компилятора изменит поведение и что программа достигнет целочисленного переполнения.Я знаю, что это неопределенное поведение, цель этого вопроса - понять / получить представление о конкретных внутренних поведениях реализации, которые могут объяснить то, что мы наблюдаем там.

Вопрос больше, учитывая, что в Linux размер стека потоков фиксирован и задаетсяulimit -sЧто повлияет на доступный размер стека, чтобы стекопоток не всегда происходил на одной и той же глубине вызова?

РЕДАКТИРОВАТЬ 2 @BlueMoon всегда видит одни и те же выходные данные на своем CentOS, в то время как на моей Fedora со стеком 8M я вижу разные выходные данные (последнее напечатанное целое число 261892 или 261845, или 261826, или ...)

Ответы на вопрос(7)

Ваш ответ на вопрос