Unix.gmtime failure on Ubuntu (IA64)
Hi,
This may or may not be expected behaviour, but I wanted to make sure the debian packaging team knew about it.
I recently tried to recompile and re-run my ocaml program on a new machine with a fresh install of Ubuntu (gutsy). The program was originally developed and tested on debian-stable (etch). The old machine was 32-bit and the new one is 64-bit. My Debian install lists the ocaml package as version 3.09.2 and the ubuntu install lists it as 3.09.2ubuntu.
It compiled without problems on the Ubuntu machine but then I got this error message at runtime:
Fatal error: exception Unix.Unix_error(12, "gmtime", "")
An abbreviation of the offending code looks something like this:
let reallySmallFloat = -1.0 * max_float in (* a very large magnitude negative number*)
let reallySmallInt64 = Int64.of_float reallySmallFloat in (* truncated to int64 *)
let smallestTimeFlt = Int64.to_float reallySmallInt64 in (* back to float *)
let smallestTime = Unix.gmtime smallestTimeFlt (* fails *)
On both the debian and ubuntu machines, smallestTimeFlt = -9.22337203685e+18
If I replace the first line with:
let reallySmallFloat = -1.0 *. (10.0**10.0) in
then it runs correctly on the Ubuntu machine.
This is a suitable work around for my program b/c any large-magnitude negative number will do, but it still seems rather "unsafe" from a typing standpoint.
I'll leave it to others to decide if a formal bug report is necessary. I'm not really sure where the bug would go, I don't know if this is under the jurisdiction of debian or ubuntu or ocaml or some other group.
Regards,
Peter
--
http://petergroves.com
Reply to: