Red Hat Bugzilla – Bug 427881
ocaml-3.10.0-7.fc8.x86_64 produces faulty code
Last modified: 2008-01-15 04:43:18 EST
Description of problem:
ocaml-3.10.0 on x86_64 miscompiles MLdonkey code - mlnet frequently crashes
with stack corruption. ocaml "release310" CVS branch (containing several
listed bugfixes to 3.10.0) makes this problem disappear.
Version-Release number of selected component (if applicable):
Build and run MLdonkey-2.9.2 on x86_64.
Steps to Reproduce:
1. build MLdonkey
2. run MLdonkey (mlnet)
3. wait for crash, 20 minutes should be enough.
segmentation fault in mlnet code
program should work correctly
http://savannah.nongnu.org/bugs/?21172 contains more details about this
I haven't seen any discussion of codegen bugs like this upstream. Has it
been raised / entered into the OCaml bugtracker or discussed on caml-list?
I guess so but what I did was limited to checking if the 3.10.0 version causes
the problem (it does) and if the pre-3.10.1 CVS code is ok (and it is).
OCaml "Changes" list several fixes in the CVS branch "release310" (compared to
3.10.0) (I don't know which one fixes the problem) such as:
- PR#4300 ocamlopt: crash with backtrace and illegal array access
- PR#4316 compilers: crash with recursive modules and Lazy
- PR#4328 camlp4: stack overflow with nil nodes
- PR#4336 compilers: unsafe recursive modules
- PR#4374 otherlibs: threads module not initialized
- PR#4412 stdlib: marshalling broken on 64 bit architectures
- PR#4413 ocamlopt: crash on AMD64 with out-of-bound access and reraise
- PR#4435 compilers: crash with objects
- PR#4442 stdlib: crash with weak pointers
- PR#4450 compilers: stack overflow with recursive modules
and many others (some of the above problems may be the compiler crashing,
not the compiled program, of course).
The complete list is (currently) at:
Unless you can isolate a patch which specifically fixes this and produce a test
case, I can't do much about this. We will upgrade to 3.10.1 some time in
Fedora 9. We cannot upgrade to 3.10.1 in earlier versions of Fedora, because
of the disruption that breaking all code will bring.