Page suivantePage précédenteTable des matières

4. Que signifie ce "signal 11" ?

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.


Page suivantePage précédenteTable des matières