[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#602170: [libbz2-ocaml] exceptions don't get registered properly



tags 602170 + confirmed
severity 602170 important
thanks

Le 02/11/2010 09:28, Joost Yervante Damad a écrit :
whenever there's something wrong, the binding looks up the exception to be
thrown, and throws it.
[...]
more details, including a patch with a possible solution can be found at:

https://forge.ocamlcore.org/tracker/index.php?func=detail&aid=768&group_id=63&atid=338

If you add "let _ = Bz2.version;;" at the beginning of your segfaulting example, it doesn't segfault any more.

The reason why exceptions are not registered is because the Bz2 module is not linked in, and therefore its side-effects are not executed. This is because your example uses only externals that are declared as such in bz2.mli. This is unfortunate, but a known issue.

I don't agree with you patch. The right fix IMHO would be to make one (or all) of the externals abstract in the .mli file. This would theoretically impact performances in bytecode, but I think not in native code because of inlining. But if performances are critical even in bytecode, I'd rather name the proposed function "init" instead of "register_exceptions" which doesn't look very elegant... Any other opinion on this would be welcome.

Anyway, this would be an intrusive change (ABI change in interface -> binNMU of all reverse-dependencies), the problem is known and can be worked around, and we are in freeze, so I'd rather fix it later, after Squeeze release. Therefore, I hereby downgrade the severity to important.


Cheers,

--
Stéphane



Reply to: