Version française
Home     About     Download     Resources     Contact us    
Browse thread
[Caml-list] Ocaml and 64 bit address spaces?
[ Home ] [ Index: by date | by threads ]
[ Search: ]

[ Message by date: previous | next ] [ Message in thread: previous | next ] [ Thread: previous | next ]
Date: -- (:)
From: Aleksey Nogin <nogin@c...>
Subject: [Caml-list] Ocaml program crashes on Opteron
I've been trying to use OCaml 3.07 on an Opteron machine running the 
latest Fedora Core development (AKA Red Hat Rawhide) with a binary 
kernel from Mandrake 9.2beta3. I've successfully compiled Ocaml 3.07, 
but when I compile our "omake" system with it, omake segfaults in a 
reproducible fashion (it reliably works for some things and reliably 
crashes for others).

After compiling omake with "ocamlopt.opt -inline 0 -ccopt -g -cc gcc32 
-S -verbose", and then re-running the last linking step with .s files 
instead of .o files (to get debugging information tied to the assembly 
files), I get from gdb:

> ...
> Program received signal SIGSEGV, Segmentation fault.
> Omake_wild__wild_subst_429 () at omake_wild.s:419
> 419             movzbq  -8(%rbx), %rdi
> Current language:  auto; currently asm
> (gdb) bt
> #0  Omake_wild__wild_subst_429 () at omake_wild.s:419
> #1  0x0000002a9557ae00 in ?? ()
> #2  0x000000000044fa02 in List__map_86 ()
> #3  0x0000002a95c9b698 in ?? ()
> #4  0x0000002a9557a508 in ?? ()
> #5  0x0000002a95cdc780 in ?? ()
> #6  0x000000000041df9a in Omake_env__collect_3575 () at omake_env.s:1780
> ...

The relevant part of omake_wild.s is:
> ...
>    .text
>    .align   16
>    .globl   Omake_wild__wild_subst_429
> Omake_wild__wild_subst_429:
>    subq  $8, %rsp
> .L145:
>    movzbq   -8(%rbx), %rdi    <<< it crashes here <<<
>    testq %rdi, %rdi
>    je .L144
> ...

(note that there are no references to L145 in that file) and the Ocaml
code for Omake_wild.wild_subst is:

> let wild_subst (len, s) wild =
>    match wild with
>       WildLiteral node ->
>          WildNode node
>     | WildSplit (plen, prefix, slen, suffix) ->
>          WildString (prefix ^ s ^ suffix)
> 

and it is being called from

>                match search patterns with
>                   Some subst ->
>                      let source_args = List.map (wild_subst subst) sources in

Some additional information (full back trace, register contents, etc) is
available at http://cvs.metaprl.org:12000/bugzilla/show_bug.cgi?id=111

Any guesses as to what might be causing this? Any hints on what I could 
do to invertigate this further?

-- 
Aleksey Nogin

Home Page: http://nogin.org/
E-Mail: nogin@cs.caltech.edu (office), aleksey@nogin.org (personal)
Office: Jorgensen 70, tel: (626) 395-2907

-------------------
To unsubscribe, mail caml-list-request@inria.fr Archives: http://caml.inria.fr
Bug reports: http://caml.inria.fr/bin/caml-bugs FAQ: http://caml.inria.fr/FAQ/
Beginner's list: http://groups.yahoo.com/group/ocaml_beginners