Linux avorte grâce au "signal 11" tout programme tentant d'accéder à une adresse mémoire ne lui appartenant pas. Parmi les nombreuses causes possibles, nous ne pouvons retenir dans l'absolu que deux possibilités, dans le cas où cela concerne une version stable de gcc utilisée sur une machine très commune : problème matériel ou bien inadéquation de certaines composantes des utilitaires logiciels du système.
Lorsque ce problème survient sur une machine sans défaut matériel, il ne peut être causé que par une erreur de programmation ou de compilation (en l'occurrence du binaire de gcc). Mais lorsque le matériel est défaillant, et que des valeurs stockées en mémoire vive changent plus ou moins aléatoirement, un programme exigeant tel que gcc ne parviendra pas à mener à bien sa mission car il tentera tôt ou tard de déréférencer un pointeur au contenu ainsi modifié.
Un pointeur, sur une machine à processeur Intel, s'étend sur 32 bits et
permet donc d'accéder à 4 Go. Peu de machines Intel disposent d'autant de
mémoire vive dont la majeure partie serait allouée à gcc !
Une adresse de 32 bits aléatoire est donc très probablement illégale et
Linux tuera le programme qui tente avec elle, selon lui, de manipuler des
données ne lui appartenant pas.
Chapitre suivant, Chapitre Précédent
Table des matières de ce chapitre, Table des matières générale
Début du document, Début de ce chapitre