Gentoo : crash récurrent de nscd sous amd64

Le démon nscd est chargé de gérer le cache de résultats des services de noms. Ce dernier a tendance à crasher toutes les dix minutes, plus ou moins, sur un système Linux 64 bits. Etudions son remplacement par un composant plus stable.
L’interruption de ce composant est fort problématique dans le cadre d’un serveur OpenLDAP étant donné son rôle de cache des requêtes LDAP courantes. De plus, le login des utilisateurs par authentification LDAP est impacté sur le serveur lui-même.
Une solution viable est de remplacer ce composant par un équivalent dénommé unscd.
Le script de démarrage pour Gentoo/amd64 est le suivant :
1#!/sbin/runscript
2
3depend() {
4 use dns ldap net slapd
5}
6
7checkconfig() {
8 if [ ! -d /var/run/nscd ] ; then
9 mkdir -p /var/run/nscd
10 chmod 755 /var/run/nscd
11 fi
12}
13
14start() {
15 checkconfig
16 ebegin "Starting Micro Name Service Cache Daemon"
17 start-stop-daemon --start --quiet --exec /sbin/unscd
18 eend $?
19}
20
21stop() {
22 ebegin "Shutting down Micro Name Service Cache Daemon"
23 start-stop-daemon --stop --quiet --exec /sbin/unscd
24 eend $?
25}
En conclusion de cet article, un commentaire de l’auteur d’unscd :
It is well known that nscd provided with glibc is buggy. > This leads people to invent babysitters which restart crashed/hung nscd. This is ugly. > After looking at nscd source in glibc I arrived to the conclusion that it’s flawed by design and cannot be fixed. > Even if nscd’s own code is 100.00% perfect and bug-free, it can still suffer from bugs in libraries it calls.