In teoria è possibile recuperare dopo che un processo è stato erroneamente indicato per leggere da un indirizzo di memoria sbagliato, invece di terminarlo?
Diciamo che un errore mentre si lavora con i registri porta il processore a leggere un posto casuale nella memoria e quindi a lanciare un'eccezione di istruzioni illegali. A questo punto, ci sono dei modi per ripristinare uno stato stabile piuttosto che terminare il processo?
Esistono architetture di processori (specialmente per sistemi Embedded), con alcune funzionalità extra per gestire questi problemi?
Ci sono anche documenti di ricerca che cercano di capire quali sono gli indirizzi di ritorno validi per una funzione? Ad esempio, se la mia funzione sta tentando di tornare a un indirizzo che è (virtualmente) non valido per il mio programma di fare il suo lavoro, ci sono stati degli sforzi per rilevare tale violazione? O sul livello di programmazione o sul sistema operativo e gestione della memoria?
Nota: Istruzioni illegali è un'eccezione generata dal processore.
Aggiorna
Il salvataggio dell'ultimo puntatore di istruzioni valido noto potrebbe contribuire in qualche modo manualmente? Forse in un registro inutilizzato o riservato, ma dovrebbe essere in qualche modo garantito di non essere toccato dal resto del programma.