Ich melde mich in einem Monat nochmal zu dem Thema und beantworte dir die frage ob es Zufall ist oder nicht.
Zufall heißt in diesem Fall Pseudozufall. Und das kann heißen, dass es ohne weitere Änderungen am Code immer funktioniert, aber eine andere Änderung dann plötzlich zu Problemen führt, obwohl diese eigentlich gar nichts damit zu tun hat.
Es ist ja nicht so, dass solche Probleme nicht bekannt wären. Ich habe nach solchen Problemen schon viele Stunden gesucht inkl. Analyse von Speicherdumps usw., wobei dann auch schon herauskam, dass das Problem gar nicht im eigenen Code lag. Zum Beispiel musste ich damals bei der
BDE Änderungen im Speicher vornehmen damit die
BDE unter Windows 7 noch sauber beendet werden konnte (konditionaler Jump in fixen Jump geändert). In solchen Fällen kommt dann erschwerend hinzu, dass man gar nicht weiß wie die Abläufe in dem fremden Code sind, man aber nur den Assemblercode zur Analyse hat.
Das heißt bei solchen Problemen wie bei dir ist die Analyse noch verhältnismäßig einfach...