You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Original bug ID: 1686 Reporter: administrator Status: closed Resolution: fixed Priority: normal Severity: minor Category: ~DO NOT USE (was: OCaml general)
Bug description
Bonjour,
j'ai un problème pour endormir un process. Dans
certain cas, l'expression "Unix.sleep" fonctionne,
dans d'autre cas, je suis obligé de créer un thread
qui exécute uniquement "Unix.sleep" et d'attendre ce
thread (Thread.join ) pour faire la même chose.
Système d'exploitation : OpenBSD 3.3
Ocaml 3.06
je vous envoie en pièce jointe le projet sur lequel je
travail (projet libre)
le sous répertoire src/ contient les sources du projet
le sous répertoire test/ contient des fichiers de
test.
le fichier qui plante est le fichier src/camelog.ml
Le fichier main.ml appelle (à la ligne 27)la méthode
"run" de l'objet camelog.
le fichier camelog.ml contient une méthode "sleep"
pour endormir le processus.
compilation :
gmake -f Makefile_ocaml.tpl
ou
make all
Dans le répertoire src/ la commande :
./a.out ../test/test6
plante le programme : "segmentation faut"
il semble que décommentant la création de threads
(method alarm_handle sign, fichier camelog ligne 100)
ou en créant un thread dans la méthod sleep du fichier
camelog alors la fonctionnalité "sleep" fonctionne.
Avec ocamldebug, j'ai noté que c'est chaque appelle à
la méthode 'Unix.sleep' (en l'absence de thread) qui
fait planter le programme.
Ce serait peut être un défaut dans mon programme, mais
le fait que ce soit lier à la présence ou non de
thread m'a insiter à vous reporter ce bug.
Merci de me mettre au courant de vos observations sur
ce problème.
Cordialement
Corentin Jechoux
Do You Yahoo!? -- Une adresse @yahoo.fr gratuite et en français !
Yahoo! Mail : http://fr.mail.yahoo.com
The text was updated successfully, but these errors were encountered:
je vous envoie en pièce jointe le projet sur lequel je
travail (projet libre)
J'ai peur que vous avez oublié la pièce jointe...
il semble que décommentant la création de threads
(method alarm_handle sign, fichier camelog ligne 100)
ou en créant un thread dans la méthod sleep du fichier
camelog alors la fonctionnalité "sleep" fonctionne.
Avec ocamldebug, j'ai noté que c'est chaque appelle à
la méthode 'Unix.sleep' (en l'absence de thread) qui
fait planter le programme.
Ce serait peut être un défaut dans mon programme, mais
le fait que ce soit lier à la présence ou non de
thread m'a insiter à vous reporter ce bug.
Le plantage est en effet curieux et demande à être étudié.
Cependant, pour un programme multi-threadé, il est recommandé
d'utiliser Thread.delay plutôt que Unix.sleep. En particulier, avec
les threads bytecode, Unix.sleep "endort" l'ensemble du programme,
alors que Thread.delay n'affecte que le thread appelant.
Original bug ID: 1686
Reporter: administrator
Status: closed
Resolution: fixed
Priority: normal
Severity: minor
Category: ~DO NOT USE (was: OCaml general)
Bug description
Bonjour,
j'ai un problème pour endormir un process. Dans
certain cas, l'expression "Unix.sleep" fonctionne,
dans d'autre cas, je suis obligé de créer un thread
qui exécute uniquement "Unix.sleep" et d'attendre ce
thread (Thread.join ) pour faire la même chose.
Système d'exploitation : OpenBSD 3.3
Ocaml 3.06
je vous envoie en pièce jointe le projet sur lequel je
travail (projet libre)
le sous répertoire src/ contient les sources du projet
le sous répertoire test/ contient des fichiers de
test.
le fichier qui plante est le fichier src/camelog.ml
Le fichier main.ml appelle (à la ligne 27)la méthode
"run" de l'objet camelog.
le fichier camelog.ml contient une méthode "sleep"
pour endormir le processus.
compilation :
gmake -f Makefile_ocaml.tpl
ou
make all
Dans le répertoire src/ la commande :
./a.out ../test/test6
plante le programme : "segmentation faut"
il semble que décommentant la création de threads
(method alarm_handle sign, fichier camelog ligne 100)
ou en créant un thread dans la méthod sleep du fichier
camelog alors la fonctionnalité "sleep" fonctionne.
Avec ocamldebug, j'ai noté que c'est chaque appelle à
la méthode 'Unix.sleep' (en l'absence de thread) qui
fait planter le programme.
Ce serait peut être un défaut dans mon programme, mais
le fait que ce soit lier à la présence ou non de
thread m'a insiter à vous reporter ce bug.
Merci de me mettre au courant de vos observations sur
ce problème.
Cordialement
Corentin Jechoux
Do You Yahoo!? -- Une adresse @yahoo.fr gratuite et en français !
Yahoo! Mail : http://fr.mail.yahoo.com
The text was updated successfully, but these errors were encountered: