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

ocamlc -unsafe sur la 3.06 et 3.07 #2610

Closed
vicuna opened this issue May 24, 2004 · 3 comments
Closed

ocamlc -unsafe sur la 3.06 et 3.07 #2610

vicuna opened this issue May 24, 2004 · 3 comments
Labels

Comments

@vicuna
Copy link

vicuna commented May 24, 2004

Original bug ID: 2610
Reporter: administrator
Status: closed
Resolution: not a bug
Priority: normal
Severity: minor
Category: ~DO NOT USE (was: OCaml general)

Bug description

Full_Name: PASINELLI Antonio-Carlos
Version: 3.06 (Win & Unix) 3.07 (Win)
OS: Windows XP Pro & Mandrake 9.2
Submission from: aph-aug-105-1-8-155.w81-248.abo.wanadoo.fr (81.248.244.155)

Bonjour à toute l'équipe...

J'ai un problème concernant l'option -unsafe du compilateur ocamlc... Ayant
compilé un module contanant une fonction faisant intervenir des vecteurs de
flottants et des vecteurs d'entiers sans l'option -unsafe (la compilation
s'étant déroulée corectement d'ailleurs), cette fonction à l'exécution me
retourne l'erreur "Array.get"... rien de bien surprenant si on pense que l'on
désire accéder à des éléments en dehors des vecteurs... Cependant, le problème
réside dans le fait que, une fois le module compilé avec cette option, la
fonction:

1- n'accède pas à des éléments extérieurs aux vecteurs (ceci dû au code maintes

fois révisé et réécrit)
2- retourne le résultat escompté, sans la moindre erreur

J'ai ce problème uniquement avec cette fonction précise de ce module en
particulier: il s'agit d'une fonction permettant de construire des champs
scalaires sur Rn, n étant passé en argument.

Je n'ose pas inclure le code dans cet e-mail, ce module dépendant lui-même de
plusieurs autres modules, mais je peux le fournir le cas échéant.

Cordialement...

@vicuna
Copy link
Author

vicuna commented May 27, 2004

Comment author: administrator

Bonjour,

Full_Name: PASINELLI Antonio-Carlos
Version: 3.06 (Win & Unix) 3.07 (Win)

J'ai un problème concernant l'option -unsafe du compilateur ocamlc... Ayant
compilé un module contanant une fonction faisant intervenir des vecteurs de
flottants et des vecteurs d'entiers sans l'option -unsafe (la compilation
s'étant déroulée corectement d'ailleurs), cette fonction à l'exécution me
retourne l'erreur "Array.get"... rien de bien surprenant si on pense que l'on
désire accéder à des éléments en dehors des vecteurs... Cependant, le
problème
réside dans le fait que, une fois le module compilé avec cette option, la
fonction:

1- n'accède pas à des éléments extérieurs aux vecteurs (ceci dû au code
maintes
fois révisé et réécrit)

Si je comprends bien, vous avez un code qui leve l'exception
Invalid_argument "Array.get" quand vous le compilez normalement, et qui
ne leve pas cette exception si vous compilez avec l'option -unsafe.
Rien d'etonnant, puisque le but de cette option est justement de supprimer
la verification des bornes de tableaux. Si votre programme accede dans un
tableau hors des bornes, il fera n'importe quoi au lieu de lever l'exception.

2- retourne le résultat escompté, sans la moindre erreur

Quand on dit que le programme peut faire n'importe quoi, ca ne garantit
pas qu'il donnera un resultat faux.

-- Damien

@vicuna
Copy link
Author

vicuna commented May 27, 2004

Comment author: administrator

DD 2004-05-27

@vicuna vicuna closed this as completed May 27, 2004
@vicuna
Copy link
Author

vicuna commented Jun 4, 2004

Comment author: administrator

Full_Name: PASINELLI Antonio-Carlos
Version: 3.06 (Win & Unix) 3.07 (Win)
OS: Windows XP Pro & Mandrake 9.2
Submission from: aph-aug-105-1-8-155.w81-248.abo.wanadoo.fr (81.248.244.155)

Bonjour à toute l'équipe...

J'ai un problème concernant l'option -unsafe du compilateur ocamlc... Ayant
compilé un module contanant une fonction faisant intervenir des vecteurs de
flottants et des vecteurs d'entiers sans l'option -unsafe (la compilation
s'étant déroulée corectement d'ailleurs), cette fonction à l'exécution me
retourne l'erreur "Array.get"... rien de bien surprenant si on pense que l'on
désire accéder à des éléments en dehors des vecteurs... Cependant, le problème
réside dans le fait que, une fois le module compilé avec cette option, la
fonction:

1- n'accède pas à des éléments extérieurs aux vecteurs (ceci dû au code maintes
fois révisé et réécrit)
2- retourne le résultat escompté, sans la moindre erreur

J'ai ce problème uniquement avec cette fonction précise de ce module en
particulier: il s'agit d'une fonction permettant de construire des champs
scalaires sur Rn, n étant passé en argument.

Je n'ose pas inclure le code dans cet e-mail, ce module dépendant lui-même de
plusieurs autres modules, mais je peux le fournir le cas échéant.

Cordialement...

Sans avoir votre code sous les yeux, il est difficile de se
prononcer. Cependant, le comportement observé n'est pas choquant, dans
la mesure où l'accès en dehors des bornes de tableaux n'est plus
vérifié avec la compilation -unsafe; il se peut fort bien que votre
programme accède alors en dehors du tableau et lise une valeur
quelconque de la mémoire; si cette valeur indûment lue n'intervient
pas dans le calcul du résultat, ou que sa valeur (très souvent 0) ne
change pas le résultat, on observe exactement le comportement qui vous
trouble. À mon avis, votre programme accède vraiment en dehors du
tableau, comme l'indique l'erreur rapportée dans le cas d'une
compilation normale. Pour en avoir le coeur net, compilez en byte-code
avec l'option -g et utilisez le deboggeur pour trouver l'endroit
précis où se déclenche le débordement, examinez alors l'état du calcul
pour déterminer effectivement s'il y a un débordement.

Merci pour ce rapport d'erreur et bon courage pour trouver le bug dans
votre programme,

Pierre Weis

INRIA, Projet Cristal, Pierre.Weis@inria.fr, http://pauillac.inria.fr/~weis/

@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