Gentoo : crash récurrent de nscd sous amd64

Boris HUISGEN April 22, 2009

administration linux gentoo ldap nscd

Le démon nscd chargé de gérer le cache de résultats des services de noms a la fâcheuse tendance de crasher toutes les 10 minutes +/- sur un système Linux 64 bits.

Ceci est très problématique dans le cas d’un serveur LDAP, car il permet justement d’optimiser les requêtes LDAP courantes. Son crash interrompt de plus le fonctionnement du serveur (et des clients LDAP).

L’unique solution est de privilégier un équivalent - mieux codé - dénommé unscd.

Voici le script de démarrage que j’utilise pour Gentoo/amd64 et qui manque dans le port :

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
    #!/sbin/runscript
    
    depend() {
       use dns ldap net slapd
    }
    checkconfig() {
       if [ ! -d /var/run/nscd ] ; then
          mkdir -p /var/run/nscd
          chmod 755 /var/run/nscd
       fi
    }
    start() {
       checkconfig
       ebegin "Starting Micro Name Service Cache Daemon"
       start-stop-daemon --start --quiet --exec /sbin/unscd
       eend $?
    }
    stop() {
       ebegin "Shutting down Micro Name Service Cache Daemon"
       start-stop-daemon --stop --quiet --exec /sbin/unscd
       eend $?
    }
    

Un joli commentaire de la part de son auteur :

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.

See also

Gentoo : dépendances croisées e2fsprogs-libs, com_err, ss
Read more
Linux : stockage de fichiers en cache RAM
Read more
Linux : fichier de swap dynamique
Read more