EAGAIN (errno 11)
errno 11
Message officiel (tel qu'affiché à l'écran) : Try again
Aussi recherché sous la forme : Resource temporarily unavailable, errno 11, EWOULDBLOCK
Ce que cela signifie
EAGAIN, « Resource temporarily unavailable » (errno 11 sous Linux, même valeur que EWOULDBLOCK), signifie que l’opération n’a pas pu se terminer pour l’instant mais pourra réussir plus tard. Les sockets non bloquants le renvoient quand aucune donnée n’est prête ; fork() et la création de threads le renvoient lorsque les limites de processus ou de threads sont atteintes.
S'applique à : Linux, macOS (errno BSD), WSL, Conteneurs Docker
Comment corriger EAGAIN (errno 11)
- Dans le code d’E/S non bloquantes, traitez EAGAIN comme « réessayez plus tard » et attendez avec poll/epoll/select au lieu d’y voir un échec
- Si fork ou la création de threads échoue, vérifiez les limites avec 'ulimit -u' et 'cat /proc/sys/kernel/threads-max', et comptez les threads avec 'ps -eLf | wc -l'
- Sous systemd, vérifiez la valeur TasksMax du service avec 'systemctl show <service> -p TasksMax' et augmentez-la dans le fichier d’unité si c’est justifié
- Dans les conteneurs, vérifiez la limite de PID ('--pids-limit' dans Docker ou les paramètres de PID du pod)
- Recherchez une fuite de threads ou de processus dans l’application si leur nombre ne cesse de croître
- Pour « resource temporarily unavailable » sur les verrous d’apt ou dpkg, attendez la fin de l’autre gestionnaire de paquets au lieu de supprimer les fichiers de verrouillage
Pourquoi cela se produit
Le noyau utilise EAGAIN pour les opérations qui bloqueraient ou dépasseraient temporairement une limite : sockets ou tubes non bloquants vides, limites de processus par utilisateur épuisées, limites de PID des cgroups, ou verrous détenus par un autre processus.
FAQ
EAGAIN est-elle une erreur que je dois corriger ?
Avec des E/S non bloquantes, elle est normale et signifie simplement « pas encore de données ». Avec fork ou les threads, elle signale une limite et demande votre attention.
EAGAIN est-elle identique à EWOULDBLOCK ?
Sous Linux, elles ont la même valeur (11). macOS utilise 35 pour les deux.
Erreurs liées
Source : Linux kernel errno.h · solutions rédigées et vérifiées par les éditeurs (voir notre politique éditoriale)
Dernière mise à jour :