logrotate : stat of @ failed (No such file or directory)
12 réponses
Laurent Hugé
Bonjour,
Après quelques semaines passée à passer ma machine en
LinuxFromScratch, je suis dans la phase de finition de configuration.
Essayant d'installer logrotate, je me retrouve face à une erreur que
je n'arrive pas à cerner :
- j'ai installé logrotate 3.3 (en mode débugage avec un fichier de
configuration logrotate.conf uniquement composé de /var/log
messages), j'obtiens ceci :
reading config file /etc/logrotate.conf
reading config info for /messages
Handling 1 logs
rotating pattern: /var/log/messages 104857600 bytes (5 rotations)
empty log files are not rotated old logs are removed
errors displayed on stderr
rotating file @
stat of @ failed: No such file or directory
log does not need rotating
- j'ai compilé logrotate 3.5.9, mais lors du make test, j'arrive à :
(cd test; ./test)
/usr/src/apps/système/logrotate-3.5.9/test
error: test-config.1:1 unexpected text
stat of pW@h\@ failed: No such file or directory
... (de multiple fois, pour chaque fichier de test en fait).
Ce qui m'inquiète, c'est que logrotate semble lire correctement le
fichier de configuration (il trouve bien /var/log/messages), mais
lorsqu'il tente d'y accéder, il génère une erreur ("rotating file
@").
J'ai inspecté le contenu de logrotate.c, mais tout semble correct.
L'erreur n'est relatée nulle part (ni sur Google, que je cherche ou
non selon logrotate, ni sur le bug report de Debian).
De plus, j'avais déjà installé logrotate sur mon autre machine
(LinuxFromScratch aussi) et je n'ai jamais eu une telle erreur.
En faisant passer logrotate via strace, je m'aperçois qu'il cherche à
accéder à une configuration (?) de popt. Dans le doute, j'ai
réinstallé popt, mais cela n'a rien changé (d'ailleurs, aucun de ces
fichiers n'est installé avec popt, ni n'est disponible dans les
sources).
Il vient aussi lire le fichier /usr/share/zoneinfo/Europe/Paris, mais
là, je ne vois pas pourquoi.
Dans quelle direction faut-il que je cherche ?
Par pitié, ne me dite pas que c'est la glibc qui plante :-( Je ne
verrais pas pourquoi elle ne plante que maintenant alors que j'ai
installé de nombreuses choses sans problème (du style KDE ou GNOME !)
On Tue, 13 Apr 2004 21:09:11 +0200, Laurent =?ISO-8859-15?Q?Hugé? wrote:
Bien. Comme je l'ai détaillé dans l'autre fil, je n'ai pas progressé malgré un passage à logrotate 3.6.8 ! Quel autre voie peut-il y avoir ?
j'essayerais de modifier le code pour comprendre ce qui se passe et à quel endroit ça coince (méthode de programmeur...)
dans config.c, il doit se trouver quelque chose comme ça : newlog->files[newlog->numFiles] globResult.gl_pathv[i]; newlog->numFiles++; il faudrait mettre entre ces deux lignes : message(MESS_DEBUG, "file %d : %sn", newlog->numFiles, globResult.gl_pathv[i]); recompiler, essayer, voir ce qu'affiche le message ajouté.
Autrement, on peut se lancer avec gdb, mais c'est assez particulier à utiliser. Et il faut que gdb marche évidemment.
Bien. Comme je l'ai détaillé dans l'autre fil, je n'ai pas progressé
malgré un passage à logrotate 3.6.8 !
Quel autre voie peut-il y avoir ?
j'essayerais de modifier le code pour comprendre ce
qui se passe et à quel endroit ça coince
(méthode de programmeur...)
dans config.c, il doit se trouver quelque chose comme ça :
newlog->files[newlog->numFiles] globResult.gl_pathv[i];
newlog->numFiles++;
il faudrait mettre entre ces deux lignes :
message(MESS_DEBUG, "file %d : %sn", newlog->numFiles,
globResult.gl_pathv[i]);
recompiler, essayer, voir ce qu'affiche le message ajouté.
Autrement, on peut se lancer avec gdb, mais c'est assez
particulier à utiliser. Et il faut que gdb marche évidemment.
On Tue, 13 Apr 2004 21:09:11 +0200, Laurent =?ISO-8859-15?Q?Hugé? wrote:
Bien. Comme je l'ai détaillé dans l'autre fil, je n'ai pas progressé malgré un passage à logrotate 3.6.8 ! Quel autre voie peut-il y avoir ?
j'essayerais de modifier le code pour comprendre ce qui se passe et à quel endroit ça coince (méthode de programmeur...)
dans config.c, il doit se trouver quelque chose comme ça : newlog->files[newlog->numFiles] globResult.gl_pathv[i]; newlog->numFiles++; il faudrait mettre entre ces deux lignes : message(MESS_DEBUG, "file %d : %sn", newlog->numFiles, globResult.gl_pathv[i]); recompiler, essayer, voir ce qu'affiche le message ajouté.
Autrement, on peut se lancer avec gdb, mais c'est assez particulier à utiliser. Et il faut que gdb marche évidemment.
Gérard Patel
no_spam
On Tue, 13 Apr 2004 21:06:49 +0200, Laurent Hugé wrote:
J'ai la version 2... J'ai essayé ton fichier de conf sur ma machine, ça marche nickel. Oui. En fait, je l'ai simplement copié de mon autre PC, puis voyant
que cela ne marchait pas, j'ai supprimé toutes les entrées après la première. Dans il n'y avait pas de raison que cela ne fonctionne pas (sauf influence vaudou ;-)
Le vaudou et l'informatique sont proches mais font assez mauvais ménage :-)
En regardant l'infâme code qui parse les options, je ne vois que deux solutions: - le pointeur sur le nom de fichier se fait écraser. le seul moyen fiable de vérifier ça, c'est d'utiliser valgrind: valgrind --leak-check=yes logrotate... Le nombre d'erreurs trouvées est très souvent remarquable ! - glob renvoie des conneries. Dans ce cas, c'est la libc qui est buggée, mais il doit être assez simple de faire un programme de test qui vérifie celà. Et ça me semble assez peu crédible...
On Tue, 13 Apr 2004 21:06:49 +0200, Laurent Hugé wrote:
J'ai la version 2...
J'ai essayé ton fichier de conf sur ma machine, ça marche nickel.
Oui. En fait, je l'ai simplement copié de mon autre PC, puis voyant
que cela ne marchait pas, j'ai supprimé toutes les entrées après la
première. Dans il n'y avait pas de raison que cela ne fonctionne pas
(sauf influence vaudou ;-)
Le vaudou et l'informatique sont proches mais font assez mauvais
ménage :-)
En regardant l'infâme code qui parse les options, je ne vois
que deux solutions:
- le pointeur sur le nom de fichier se fait écraser.
le seul moyen fiable de vérifier ça, c'est d'utiliser valgrind:
valgrind --leak-check=yes logrotate...
Le nombre d'erreurs trouvées est très souvent remarquable !
- glob renvoie des conneries. Dans ce cas, c'est la libc qui
est buggée, mais il doit être assez simple de faire un programme
de test qui vérifie celà. Et ça me semble assez peu crédible...
On Tue, 13 Apr 2004 21:06:49 +0200, Laurent Hugé wrote:
J'ai la version 2... J'ai essayé ton fichier de conf sur ma machine, ça marche nickel. Oui. En fait, je l'ai simplement copié de mon autre PC, puis voyant
que cela ne marchait pas, j'ai supprimé toutes les entrées après la première. Dans il n'y avait pas de raison que cela ne fonctionne pas (sauf influence vaudou ;-)
Le vaudou et l'informatique sont proches mais font assez mauvais ménage :-)
En regardant l'infâme code qui parse les options, je ne vois que deux solutions: - le pointeur sur le nom de fichier se fait écraser. le seul moyen fiable de vérifier ça, c'est d'utiliser valgrind: valgrind --leak-check=yes logrotate... Le nombre d'erreurs trouvées est très souvent remarquable ! - glob renvoie des conneries. Dans ce cas, c'est la libc qui est buggée, mais il doit être assez simple de faire un programme de test qui vérifie celà. Et ça me semble assez peu crédible...