New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Installation sur Linux #2386
Comments
Comment author: administrator Bonjour,
Merci pour le strace, qui m'a permis (je crois) de localiser le probleme. Explication: l'erreur se produit lorsque OCaml ecrit un fichier d'interface
Sur le strace, dans le cas qui reussit, on voit bien ces etapes:
Sur le strace du cas d'echec, il se produit quelque chose de tres bizarre:
Je pense qu'il s'agit d'un probleme de NFS entre Linux et Solaris.
|
Comment author: administrator Looks like an NFS incompatibility between Linux and Solaris |
Comment author: administrator Bonjour, je vous avais signalé un problème que nous rencontrons pour compiler J'ai patché env/typing.ml pour fermer le fichier avant de calculer Voici la version modifiée de la fonction concernée:let save_signature sg modname filename =
|
Comment author: administrator
Mais si, mais si, NFS n'est pas MSDOS :-) Le problème en question semble être un bug connu de Solaris, un patch We had the same problem with Linux<-->Solaris. It was fixed by a patch
Plutôt que de contourner le bug de Solaris dans Caml, je vous
|
Original bug ID: 49
Reporter: administrator
Status: closed
Resolution: not a bug
Priority: normal
Severity: minor
Category: ~DO NOT USE (was: OCaml general)
Bug description
Bonjour,
j'ai installé sans problèmes plusieurs versions d'OCaml sur différentes
plates-formes sans jamais rencontrer aucun problème. Bizarrement, je
n'arrive pas à compiler (version 2.04 et 2.99) sur certaines machines
Linux (les nouvelles machines élèves Linux de l'ENS; pas de problèmes
sur d'autres Linux).
make world se bloque sur:
../boot/ocamlrun ../ocamlc -g -nopervasives -c pervasives.mli
à cause d'une exception "End_of_file" non rattrapée par le compilateur.
Il s'avère que si on lance cette ligne manuellement, on obtient une fois
sur deux un succès et une fois sur deux un échec (avec une vraie
periodicité de periode 2).
strace montre que l'echec est provoqué par un read de 4096 octets
sur pervasives.cmi, après la fin du fichier. Voici la fin de la sortie de
strace lors d'un echec:
open("pervasives.cmi", O_WRONLY|O_CREAT|O_TRUNC, 0666) = 3
brk(0x808f000) = 0x808f000
brk(0x806d000) = 0x806d000
write(3, "Caml1999I005\204\225\246\276\0\0"..., 4096) = 4096
write(3, "\365\341\0\1\1\256\260\262\4\367"..., 4096) = 4096
write(3, "\341\0\1\0031\2\5\365\341\0\1\003"..., 3297) = 3297
open("pervasives.cmi", O_RDONLY) = 4
lseek(4, 0, SEEK_END) = 11540
lseek(4, 0, SEEK_SET) = 0
read(4, "Caml1999I005\204\225\246\276\0\0"..., 4096) = 4096
read(4, "\365\341\0\1\1\256\260\262\4\367"..., 4096) = 4096
read(4, "\341\0\1\0031\2\5\365\341\0\1\003"..., 4096) = 3297
read(4, "", 4096) = 0
write(2, "Uncaught exception: End_of_file\n"..., 32Uncaught exception:
End_of_file
) = 32
_exit(2) = ?
et lors d'un succès:
open("pervasives.cmi", O_WRONLY|O_CREAT|O_TRUNC, 0666) = 3
brk(0x808f000) = 0x808f000
brk(0x806d000) = 0x806d000
write(3, "Caml1999I005\204\225\246\276\0\0"..., 4096) = 4096
write(3, "\365\341\0\1\1\256\260\262\4\367"..., 4096) = 4096
write(3, "\341\0\1\0031\2\5\365\341\0\1\003"..., 3297) = 3297
open("pervasives.cmi", O_RDONLY) = 4
lseek(4, 0, SEEK_END) = 11489
lseek(4, 0, SEEK_SET) = 0
read(4, "Caml1999I005\204\225\246\276\0\0"..., 4096) = 4096
read(4, "\365\341\0\1\1\256\260\262\4\367"..., 4096) = 4096
read(4, "\341\0\1\0031\2\5\365\341\0\1\003"..., 4096) = 3297
close(4) = 0
brk(0x8071000) = 0x8071000
write(3, "\204\225\246\276\0\0\0\37\0\0\0\4"..., 51) = 51
close(3) = 0
_exit(0) = ?
Je précise que l'on travaille en NFS (le serveur NFS est un Sun sous
Solaris).
Avez-vous une idée d'où cela peut venir ?
Merci de votre aide
--
Alain Frisch
The text was updated successfully, but these errors were encountered: