Jean-Michel OLTRA a écrit :
Le samedi 01 mai 2004, pascal a écrit...
bonjour,
getrlimit(RLIMIT_NOFILE, {rlim_cur=1024, rlim_max=1024}) = 0
Cherche le nombre de fichiers ouvrables. La limite souple (ulimit -n)
est égale à la limite hard (ulimit -n -H). Donc tout va bien et ça
renvoie 0
close(1023) = -1 EBADF (Bad filedescriptor)"
....
close(7) = -1 EBADF (Bad filedescriptor)"
et apparamment il tente d'ouvrir et il ferme successivement un bon
millier de "file descriptor" suivants...
Trouve le 6 qui semble lui plaire ...essaie d'y enfiler la date l'heure
le nom d'hôte de la machine...Puis freeze définitivement sur
Je suppose qu'il commence par le plus grand possible ?
select(10, [7 9], [], NULL, {60, 0}) = 0 (Timeout)...
Je ne suis pas programmeur système mais ca me semble qd même pas très
normal, non ?
surveille, si je comprends bien, les fd 7 à 9 (ou 7 et 9 ?), donc 10 pour
le premier argument (9 + 1), y compris la socket d'établissement de
communication, ce qui semble en laisser 2 (8 et 9 ?) pour des demandes de
connexion en lecture. Qui seraient déjà établies si elles sont dans
l'ensemble fd_set ?
avec un timeout de 60 secondes. Le retour nul (0) indique que select() a
bien fonctionné mais qu'aucune socket n'est utilisée avant le timeout ?
à confirmer, tout ça...
netsat -anvp me renvoie bien des connections actives (udp) et
"listening" pour pvmd ainsi qu'un fichier "/tmp/fileEMoHfE" qui doit
indiquer le n° de socket en théorie mais qui en fait est vide
J'ai déjà eu des appli qui me faisaient ce type de fichier vide (Mozilla
?), alors est ce un truc vraiment à considérer ?
pour affiner ?
strace -esocket,listen
C'est parti :
strace -eopen /usr/bin/pvmd
open("/etc/ld.so.preload", O_RDONLY) = -1 ENOENT (No such file or
directory)
open("/etc/ld.so.cache", O_RDONLY) = 3
open("/usr/lib/libpvm3.so.3", O_RDONLY) = 3
open("/lib/libc.so.6", O_RDONLY) = 3
open("/dev/null", O_RDONLY) = 3
open("/dev/null", O_RDONLY) = 4
open("/dev/null", O_RDONLY) = 5
open("/tmp/pvm.0/log", O_WRONLY|O_APPEND|O_CREAT|O_TRUNC, 0600) = 6
open("/etc/nsswitch.conf", O_RDONLY) = 7
open("/etc/ld.so.cache", O_RDONLY) = 7
open("/lib/libnss_compat.so.2", O_RDONLY) = 7
open("/lib/libnsl.so.1", O_RDONLY) = 7
open("/etc/ld.so.cache", O_RDONLY) = 7
open("/lib/libnss_nis.so.2", O_RDONLY) = 7
open("/lib/libnss_files.so.2", O_RDONLY) = 7
open("/etc/passwd", O_RDONLY) = 7 /* C'est normal ça ? */
open("/etc/resolv.conf", O_RDONLY) = 7
open("/etc/host.conf", O_RDONLY) = 7
open("/etc/hosts", O_RDONLY) = 7
open("/tmp/pvm.0/sock", O_WRONLY|O_CREAT|O_TRUNC|O_EXCL, 0600) =10
/*<--- contient "/tmp/fileoRQE5f" */
open("/dev/null", O_RDONLY) = 3
open("/dev/null", O_WRONLY) = 4
open("/etc/localtime", O_RDONLY) = 5
/tmp/fileoRQE5f /* <--- le fichier vide */
après Ctrl-C
[EMAIL PROTECTED]:~# strace -elisten /usr/bin/pvmd
listen(9, 128) = 0
/tmp/fileLdK0ka
après Ctrl-C
[EMAIL PROTECTED]:~# strace -esocket /usr/bin/pvmd
socket(PF_UNIX, SOCK_STREAM, 0) = 7
socket(PF_UNIX, SOCK_STREAM, 0) = 7
socket(PF_INET, SOCK_DGRAM, IPPROTO_IP) = 7
socket(PF_INET, SOCK_DGRAM, IPPROTO_IP) = 8
socket(PF_UNIX, SOCK_STREAM, 0) = 9
/tmp/fileRurHVj
et après tout celà le répertoire /tmp/pvm.0 ne contient plus que :
[t80040000] 05/01 17:29:53 buzz2 (127.0.0.1:32775) LINUX 3.4.2
[t80040000] 05/01 17:29:53 ready Sat May 1 17:29:53 2004
[t80040000] 05/01 17:31:38 catch() caught signal 15
[t80040000] 05/01 17:31:38 pvmbailout(15)
et les fichiers temporaires vides ont disparus.
Tu me diras combien je te dois pour la hot line ? ;-)
Pascal
--
"L'avenir, c'est à l'avance qu'il faut y penser."
R. Brautigan