Cosa provoca errori come i “fatal exception error”?

    Quando un programma come Microsoft Word o Excel “va in crash”, significa che durante l’esecuzione è successo qualcosa di serio. In genere il sistema operativo se ne accorge, termina l’applicazione incriminata nel modo più pulito possibile e mostra un messaggio criptico del tipo “fatal exception error” (spesso accompagnato da lunghe sequenze di numeri esadecimali: inutili per l’utente, ma potenzialmente utili agli sviluppatori). In altri casi, l’errore manda in blocco anche il sistema operativo, costringendoti a riavviare il computer.

    Anche se quei messaggi sembrano incomprensibili, può essere utile sapere che cosa indicano. Ecco i tre casi più comuni.

    Fatal exception error

    • Un’applicazione complessa come Microsoft Word è costruita su più strati: il nucleo del sistema operativo, i suoi servizi, eventuali layer di astrazione, centinaia di librerie software, librerie interne di funzioni o classi e DLL, fino ad arrivare al livello dell’app principale.
    • Molti sistemi operativi e linguaggi moderni (come C++ e Java) usano il meccanismo delle “eccezioni” e della relativa “gestione delle eccezioni”. Le eccezioni servono a segnalare problemi da uno strato all’altro.
    • Esempio: il programma chiede memoria al sistema operativo. Se la richiesta non può essere soddisfatta (perché la memoria è insufficiente, il blocco è troppo grande, ecc.), il sistema “lancia un’eccezione di memoria” verso il livello che ha fatto la richiesta. L’eccezione può “risalire” diversi strati finché uno non la intercetta e gestisce il problema.
    • Una buona gestione prevede di “catturare” l’eccezione e informare l’utente in modo adeguato (ad esempio con una finestra di dialogo).
    • Se nessun livello intercetta l’eccezione (perché il codice non gestisce quel caso), l’errore arriva in cima allo stack e il sistema operativo lo classifica come “eccezione non gestita”, terminando il programma. Il software ben progettato intercetta e gestisce sistematicamente tutte le eccezioni previste.

    Invalid page fault (o segmentation fault)

    • I programmi usano la RAM per conservare dati temporanei. Se apri un documento in Word, porzioni del file occupano memoria.
    • Quando il programma necessita di memoria, chiede al sistema blocchi di dimensioni specifiche e ne conserva l’indirizzo tramite un “puntatore”.
    • Se il programma prova a scrivere oltre il limite di un blocco assegnato, oppure tenta di accedere a un’area inesistente o non consentita con un puntatore invalido, il sistema operativo rileva l’anomalia e genera un “page fault” o “segmentation fault”.
    • In questa situazione il sistema chiude l’applicazione, perché il comportamento indica che il programma sta usando la memoria in modo errato o pericoloso.

    Illegal operation (istruzione illegale)

    • Un microprocessore comprende un insieme finito di istruzioni, ognuna identificata da un codice numerico (opcode). Per esempio, un opcode può significare “somma”, un altro “moltiplica”.
    • Se durante l’esecuzione il processore incontra un opcode che non riconosce, o che non può eseguire nello stato corrente, interrompe l’esecuzione e segnala l’errore.
    • Il sistema operativo, a sua volta, termina il programma responsabile.
    • In genere le istruzioni illegali derivano da salti di esecuzione verso aree di memoria che non contengono codice valido (per esempio a causa di un puntatore corrotto o di uno stack compromesso).

    Perché succedono questi errori?

    In ultima analisi, si tratta di errori umani nel software. Un programmatore può dimenticare di gestire un’eccezione, oppure consentire per sbaglio accessi a memoria non valida. A volte il problema nasce da inesperienza; altre, dalla pura complessità dei programmi moderni:

    • Esistono centinaia di tipi di eccezioni possibili.
    • Un’applicazione può gestire milioni di blocchi di memoria in un ambiente a strati molto articolato.
    • Basta un singolo errore per far crollare tutto: il software è “fragile” per natura.

    I test intercettano molti bug, ma raramente li eliminano tutti. Per questo, ogni tanto, capitano “fatal exception”, “page fault” o “illegal operation” anche in applicazioni molto diffuse.

    Share.

    Nato nei primi anni ’80, è un autore specializzato in tecnologia, informatica e cultura digitale. Cresciuto in un’epoca di grandi trasformazioni tecnologiche, ha sviluppato fin da bambino una forte passione per i computer e il mondo dei videogiochi, muovendo i primi passi su macchine iconiche come il Commodore Amiga 500, tra floppy disk, linguaggi BASIC e interminabili pomeriggi passati a esplorare mondi virtuali. Grande appassionato di fantascienza, è da sempre affascinato dall’universo di Star Wars, che ha contribuito a plasmare la sua immaginazione e il suo interesse per le tecnologie futuristiche. Parallelamente, ha coltivato un amore per le avventure grafiche classiche, in particolare la saga di Monkey Island, da cui trae ispirazione anche il suo pseudonimo. Nel tempo libero continua a coltivare le sue passioni: retrogaming, fantascienza, smanettamento con nuovi dispositivi e software, e la riscoperta delle tecnologie che hanno segnato la sua infanzia. Per lui, la tecnologia non è solo lavoro, ma un linguaggio attraverso cui raccontare il presente e immaginare il futuro.