Re: PVM et fichiers /tmp/pvmd.$UID pas créés
Jean-Michel OLTRA a écrit :
bonjour,
Salut...De retour du boulot...
Content de te retrouver :p !
J'ai commencé à regarder le source de pvm que j'ai téléchargé (pvm3, la
dernière version).
main() est dans pvmd.c
On y trouve des appels à pvmlogprintf(), et on y voit que le fichier de log
devrait être sous /tmp/pvml.$UID (voir macro PVMDLOGFILE). Premier truc
différent de chez toi.
Oui j'ai vu car au boulot j'ai une Red Hat et c'est ce qui se passe avec
le pvm de RH...
main () appelle master_config() qui appelle mksocs() qui fabrique les
sockets. D'aboird les deux sockets AF_INET/SOCK_DGRAM, puis la socket
AF_UNIX/SOCK_STREAM
mksocs utilise pvmdsockfile() pour le nom de fichier à utiliser
(pvmcruft.c) et la variable TDSOCKNAME (pvmproto.h), qui serait du style
/tmp/pvmd.$UID. Le nom du fichier de socket unix est donné par tmpnam() et
écrit dans ce fichier. Le nom du fichier est envoyé dans une variable
d'environnement PVMSOCK à la fin de ladite fonction. Donc c'est bien le nom
de la socket unix qui est écrite, comme tu le décris.
[t80040000] 05/02 11:34:46 buzz2 (127.0.0.1:32771) LINUX 3.4.2
[t80040000] 05/02 11:34:46 ready Sun May 2 11:34:46 2004
et le fichier "sock" contenant le nom du fichier (vide) créé sous /tmp :
/tmp/filea8uBxU
si tu en arrives là c'est que les fonctions que j'ai citées plus haut
se sont bien terminées et que tu es dans work(), tout du moins au début.
alors il paraît zarbi que le fichier /tmp/pvmd.$uid qui doit contenir le
nom de la socket s'appelle autrement maintenant.
Idée farfelue: le renommer ? Pour voir. En /tmp/pvmd.0 (avec le nom de
socket dedans, bien sûr)
Comme je suis un canaillou pas doué j'avais déjà essayé... :p
Mais là j'obtiens :
libpvm [pid6008] mksocs() read addr file: Is a directory
libpvm [pid6008] mksocs() read addr file: Is a directory
libpvm [pid6008] mksocs() read addr file: Is a directory
libpvm [pid6008]: pvm_mytid(): Can't contact local daemon
INI File Error: Error starting master task.
Mais là ces fichiers ne sont pas créés... Seul le répertoire
/tmp/pvm.$UID est créé et l'application se plaint au lancement de ne pas
trouver les fichiers /tmp/pvmd.$UID
Ce ne devrait pas être un répertoire.
J'ai pas regardé plus loin que les logs que tu obtiens (les 2 lignes
plus haut). Pour creuser un peu plus il faudrait regarder le code de
lpvm.c qui fait la lib mais ce serait bien d'avoir les message d'erreur
que tu obtiens au lancement de l'application.
Les voici :
libpvm [pid5995] /tmp/pvmd.1000: No such file or directory
libpvm [pid5995] /tmp/pvmd.1000: No such file or directory
libpvm [pid5995] /tmp/pvmd.1000: No such file or directory
libpvm [pid5995]: pvm_mytid(): Can't contact local daemon
INI File Error: Error starting master task.
Mais c'est le code originel de pvmd que j'ai, pas celui de Debian qui a
pê été modifié ?
Il y a peut-etre de ça...
PS: ça marcherait sur un monoprocesseur ce truc là.......?
A priori oui puisque tout ce qu'il faut est un fichier host où le maitre
va piocher la liste d'esclaves qui lui sont connectés et à qui il va
répartir les taches
J'oubliais...
Tout fonctionne bien sous la Red Hat 9...Et sur une machine très
similaire à la mienne (bi-proc sur carte MSI)
Les boules quoi !
Merci encore
Pascal
--
"L'avenir, c'est à l'avance qu'il faut y penser."
R. Brautigan
Reply to: