Warum sind Stackoverflow-Fehler chaotisch?

Dieses einfache C-Programm wird selten mit derselben Aufruftiefe beendet:

#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);
}

Was könnten die Gründe für dieses chaotische Verhalten sein?

Ich verwende Fedora (16 GB RAM, Stapelgröße 8192) und kompiliere mit CC ohne Optionen.

BEARBEITE

ch bin mir bewusst, dass dieses Programm einen Stackoverflow auslösIch weiß, dass das Aktivieren einiger Compiler-Optimierungen das Verhalten ändert und dass das Programm einen Ganzzahlüberlauf erreicht. Mir ist bewusst, dass dies ein undefiniertes Verhalten ist. Der Zweck dieser Frage ist es, einen Überblick über die implementierungsspezifischen internen Verhaltensweisen zu erhalten, die möglicherweise erklären, was wir dort beobachten.

Die Frage ist mehr, da unter Linux die Thread-Stack-Größe festgelegt und durch @ gegeben isulimit -s, was würde die verfügbare Stack-Größe beeinflussen, so dass der Stack-Overflow nicht immer bei der gleichen Aufruftiefe auftritt?

EDIT 2 @BlueMoon sieht auf seinem CentOS immer die gleiche Ausgabe, während ich auf meinem Fedora mit einem Stapel von 8M verschiedene Ausgaben sehe (zuletzt gedruckte Ganzzahl 261892 oder 261845 oder 261826 oder ...)

Antworten auf die Frage(14)

Ihre Antwort auf die Frage