Perché un buffer overflow del buffer causerebbe un arresto anomalo solo su alcuni sistemi Windows 10?

4

Ho un tentativo di accesso in lettura out-of-bounds di stl::vector (VS 2010 SP1, x86) che causa un arresto anomalo solo su tre sistemi Windows 10. È completamente riproducibile su questi sistemi, ma non può essere riprodotto su altri sistemi (Windows 10 o altro), utilizzando lo stesso file eseguibile e di dati.

Quali protezioni di sicurezza potrebbero essere installate su quei tre sistemi che rilevano la violazione, o perché potrebbero non esserlo negli altri sistemi?

Il software errante è in una libreria statica C ++ in esecuzione da un eseguibile .NET (gestito).

    
posta Patrick 10.06.2016 - 16:03
fonte

1 risposta

3

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.

    
risposta data 10.06.2016 - 22:24
fonte

Leggi altre domande sui tag