Come qualcuno ha già sottolineato: non aspettarti che il comportamento indefinito sia riproducibile.
Detto questo, ci sono molte variabili. Ovviamente ci sono quelli ovvi (come l'architettura CPU / modalità a 32 bit o 64 bit, versioni esatte del sistema operativo o altri software coinvolti (come .NET), ecc.) Ma ce ne sono anche di più sottili. Come quanta memoria viene fornita il processo in un momento in cui richiede un po 'o persino quanto chiede alla volta.
Quindi, se controlli la quantità di memoria virtuale che il processo ha su diversi computer prima del crash, e i numeri sono diversi, questo può essere un buon motivo per bloccarsi su un sistema ma non sull'altro.
Quanta memoria il processo viene dato alla volta può dipendere da molti fattori diversi come la quantità di memoria fisica disponibile, quanto spazio di swap è disponibile, quale strategia di swap viene utilizzata, come viene allocata la memoria, ecc. Se lo hai provato su una macchina con 16 GB di RAM 10 volte con il suo attuale utilizzo di 1 GB di RAM per il sistema operativo e altre applicazioni e il processo non si bloccava, non hai riprodotto questo comportamento in modo affidabile. Hai mantenuto le variabili relativamente costanti. Potrebbe benissimo schiantarsi tutte le 10 volte su una macchina con lo stesso identico software ma solo 4 GB di ram e usarne 3 GB.