En informatique, une violation de stockage est une erreur matérielle ou logicielle qui se produit lorsqu'une tâche tente d'accéder à une zone de stockage informatique à laquelle elle n'est pas autorisée à accéder.
dépassement de tampon de pile , lorsqu'un programme tente de dépasser les limites de sa pile d'appels . Cela peut également désigner une tentative de modification de la mémoire « appartenant » à un autre thread en l'absence de protection mémoire ou lorsque celle-ci est incomplète.Éviter les infractions liées au stockage
Des violations de stockage peuvent survenir dans les systèmes transactionnels tels que CICS lorsqu'il est possible d'écrire sur un stockage n'appartenant pas à la transaction ; ces violations peuvent être réduites en activant des fonctionnalités telles que la protection du stockage et l'isolation des transactions .
Détection des violations de stockage
Les violations de mémoire peuvent être difficiles à détecter, car un programme peut souvent continuer à fonctionner un certain temps après la violation avant de planter. Par exemple, un pointeur vers une zone mémoire libérée peut être conservé et réutilisé ultérieurement, provoquant une erreur. C'est pourquoi les efforts se concentrent sur la détection des violations dès leur apparition, plutôt que plus tard, une fois le problème constaté.
Dans les systèmes tels que CICS, les violations de stockage sont parfois détectées (par le noyau CICS ) grâce à l'utilisation de « signatures », qui peuvent être testées pour voir si elles ont été superposées.
Une bibliothèque d'exécution alternative peut être utilisée pour mieux détecter les violations de stockage, moyennant une surcharge supplémentaire. Certains langages de programmation utilisent la vérification logicielle des limites pour prévenir ces occurrences.
Certains logiciels de débogage de programmes détectent également les violations lors des tests.
Causes courantes
- Un indice incontrôlé entraînant une modification illégale de références pendant l'exécution.
- Incompatibilité de la disposition des liens entre les éléments appelés et les éléments appelants.
- Utilisation de mémoire précédemment libérée (et parfois déjà réaffectée).