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: 1202 Reporter: administrator Status: closed Resolution: fixed Priority: normal Severity: minor Category: ~DO NOT USE (was: OCaml general)
Bug description
Salut,
J'ai un programme qui fait Stack overflow. Qu'à cela ne tienne, je le
passe sous le debugger. Et là, surprise, je constate qu'il fait Stack
overflow dans le debugger (je reviens au shell), au moment précis où
le "Time" arrive à max_int (plus exactement un coup plus tard). Voici
un extrait de mes traces:
Objective Caml Debugger version 3.04+14 (2002-06-10)
(ocd) goto 1073741800
Loading program... done.
[... blablabla du programme...]
Time : 1073741800 - pc : 603144 - module Poly_bta_env
443 <|b|>S.atomcell_relation (ac, ac1) = EQUAL
(ocd) goto 1073741818
Time : 1073741818 - pc : 188428 - module Store
738 <|b|>pair_relation T.id_relation ((a1, b1), (a2, b2))
(ocd) step
Time : 1073741819 - pc : 187540 - module Store
718 <|b|>let first = relation (a1, a2) in
(ocd)
Time : 1073741820 - pc : 142604 - module Basic_types
434 <|b|>match id1, id2 with
(ocd)
Time : 1073741821 - pc : 142668 - module Basic_types
435 ROOT i1, ROOT i2 -> <|b|>cmpident i1 i2
(ocd)
Time : 1073741822 - pc : 141724 - module Basic_types
408 <|b|>match i1, i2 with
(ocd)
Time : 1073741823 - pc : 141936 - module Basic_types
412 | G s1, G s2 -> <|b|>String.compare (s1, s2)
(ocd)
Time : -1073741824 - pc : 81652 - module Libsml
250 <|b|>if s1 < s2 then LESS
(ocd)
Uncaught exception: Stack overflow
$
Je ne suis pas sûr que le Stack overflow arrive exactement au même
endroit quand je le lance sans le debugger: du point de vue des
traces du programme, ça correspond. Mais bon, c'est pas facile à voir
d'autant que ça mouline 18 minutes avant de se planter.
Si c'est au même endroit (sans et avec debugger), ça voudrait peut-être
dire que le problème viendrait du runtime et non pas du debugger?
Testé sur la toute dernière version (CVS) du compilateur.
Je peux tester des trucs en plus, regarder des variables, compiler
le compilo en mode debug, ce que vous voulez si vous me dites. Merci.
Il est fort possible qu'ocamldebug fasse n'importe quoi quand sa
notion de "Time" déborde et devient négative :-(
Pour ton programme, tu peux essayer de le lancer en bytecode, compilé
avec "-g", et lancé avec ocamlrun -b ou avec la variable OCAMLRUNPARAM
mise à "b". Si tout se passe bien, ça devrait afficher un historique
de la pile d'appel au moment du Stack_overflow, et te donner une idée
d'où ça plante.
J'ai un programme qui fait Stack overflow. Qu'à cela ne tienne, je le
passe sous le debugger. Et là, surprise, je constate qu'il fait Stack
overflow dans le debugger (je reviens au shell), au moment précis où
le "Time" arrive à max_int (plus exactement un coup plus tard). Voici
un extrait de mes traces:
J'ai regle le probleme du debogueur en lui expliquant que "time" est
un int64. Le bug existe toujours, mais maintenant il faut 147000 ans
pour le declencher...
Quant au fait que ton programme faisait Stack overflow au meme endroit,
j'ai tendance a penser que c'etait une coincidence.
Original bug ID: 1202
Reporter: administrator
Status: closed
Resolution: fixed
Priority: normal
Severity: minor
Category: ~DO NOT USE (was: OCaml general)
Bug description
Salut,
J'ai un programme qui fait Stack overflow. Qu'à cela ne tienne, je le
passe sous le debugger. Et là, surprise, je constate qu'il fait Stack
overflow dans le debugger (je reviens au shell), au moment précis où
le "Time" arrive à max_int (plus exactement un coup plus tard). Voici
un extrait de mes traces:
(ocd) goto 1073741800
Loading program... done.
[... blablabla du programme...]
Time : 1073741800 - pc : 603144 - module Poly_bta_env
443 <|b|>S.atomcell_relation (ac, ac1) = EQUAL
(ocd) goto 1073741818
Time : 1073741818 - pc : 188428 - module Store
738 <|b|>pair_relation T.id_relation ((a1, b1), (a2, b2))
(ocd) step
Time : 1073741819 - pc : 187540 - module Store
718 <|b|>let first = relation (a1, a2) in
(ocd)
Time : 1073741820 - pc : 142604 - module Basic_types
434 <|b|>match id1, id2 with
(ocd)
Time : 1073741821 - pc : 142668 - module Basic_types
435 ROOT i1, ROOT i2 -> <|b|>cmpident i1 i2
(ocd)
Time : 1073741822 - pc : 141724 - module Basic_types
408 <|b|>match i1, i2 with
(ocd)
Time : 1073741823 - pc : 141936 - module Basic_types
412 | G s1, G s2 -> <|b|>String.compare (s1, s2)
(ocd)
Time : -1073741824 - pc : 81652 - module Libsml
250 <|b|>if s1 < s2 then LESS
(ocd)
Uncaught exception: Stack overflow
$
Je ne suis pas sûr que le Stack overflow arrive exactement au même
endroit quand je le lance sans le debugger: du point de vue des
traces du programme, ça correspond. Mais bon, c'est pas facile à voir
d'autant que ça mouline 18 minutes avant de se planter.
Si c'est au même endroit (sans et avec debugger), ça voudrait peut-être
dire que le problème viendrait du runtime et non pas du debugger?
Testé sur la toute dernière version (CVS) du compilateur.
Je peux tester des trucs en plus, regarder des variables, compiler
le compilo en mode debug, ce que vous voulez si vous me dites. Merci.
--
Daniel de RAUGLAUDRE
daniel.de_rauglaudre@inria.fr
http://cristal.inria.fr/~ddr/
The text was updated successfully, but these errors were encountered: