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