Skip to content
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

Unix.sleep leads to "segmentation fault" #8145

Closed
vicuna opened this issue May 12, 2003 · 2 comments
Closed

Unix.sleep leads to "segmentation fault" #8145

vicuna opened this issue May 12, 2003 · 2 comments
Labels

Comments

@vicuna
Copy link

vicuna commented May 12, 2003

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

@vicuna
Copy link
Author

vicuna commented May 12, 2003

Comment author: administrator

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.

  • Xavier Leroy

@vicuna
Copy link
Author

vicuna commented Jun 15, 2003

Comment author: administrator

Same bug as #7989

@vicuna vicuna closed this as completed Jun 15, 2003
@vicuna vicuna added the bug label Mar 19, 2019
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

1 participant