Condition de concurrence
Condition de concurrence (en anglais race condition) : défaut d'un programme dont le résultat dépend de l'ordre, imprévisible, dans lequel s'exécutent des opérations concurrentes : deux exécutions d'une même tâche qui écrivent le même fichier, deux processus qui testent puis créent un fichier de verrou, un lecteur qui ouvre un fichier pendant qu'on l'écrit.
Le cas typique est l'intervalle entre un test et l'action qui en dépend (TOCTOU) : « si le verrou n'existe pas, le créer » laisse deux processus réussir le test avant que l'un ait créé le fichier. On s'en protège par des opérations atomiques, que le noyau exécute d'un seul tenant : mkdir, flock(2) (verrou consultatif), rename(2) pour une écriture atomique, ou en donnant à chaque tâche ses propres ressources (fichier temporaire par mktemp). Ces défauts sont répertoriés sous CWE-362.
Dans les cours
- Bash pour l'automatisation, leçon 10 : Signaux, nettoyage et verrous
- Bash pour l'automatisation, leçon 11 : Processus, parallélisme et délais