Une condition de course est un comportement anormal causé par une dépendance inattendue sur le séquencement relatif des évènements. En d'autres mots, un programmeur a supposé à tort qu'un évènement particulier se passerait avant un autre.
Quelques causes habituelles de conditions de course sont les signaux, les
vérifications d'accès et les fichiers ouverts. Les signaux sont des évènements
asynchrones par nature aussi un soin particulier doit être pris pour les utiliser.
Vérifier les accès avec access(2)
puis open(2)
n'est clairement pas atomique. Les utilisateurs peuvent
déplacer des fichiers entre les deux appels. Les applications privilégiées devraient
plutôt faire un appel à seteuid()
puis appeler open()
directement. Dans le même esprit, une application devrait
toujours règler un umask correct avant un appel à open()
pour prévenir le besoin d'appels non valides à chmod()
.
Précédent | Sommaire | Suivant |
La confiance | Niveau supérieur | Le noyau |
Ce document, ainsi que d'autres peut être téléchargé sur ftp.FreeBSD.org/pub/FreeBSD/doc/.
Pour toutes questions à propos de FreeBSD, lisez la documentation avant de contacter <[email protected]>.
Pour les questions sur cette documentation, contactez <[email protected]>.