possible instability with native code on UltraSPARC?

From: William Chesters (williamc@dai.ed.ac.uk)
Date: Sun Mar 28 1999 - 21:14:48 MET DST


Date: Sun, 28 Mar 1999 20:14:48 +0100
Message-Id: <14914.199903281914@stilt>
From: William Chesters <williamc@dai.ed.ac.uk>
To: caml-list@inria.fr
Subject: possible instability with native code on UltraSPARC?

   Has anyone had a problems with stability of native code on
UltraSPARC/Solaris? When I try my program on the Uni Suns, it crashes
with a bus error or segmentation fault after some number of iterations
of a top level test loop.

   A few random remarks in case anything rings a bell:

   Depending on what I put in the test loop, it crashes anywhere from
the first to the 31st iteration, or not at all; and the place where it
crashes varies between sweep_slice (it seems to have walked off the
end having trashed the `limit' pointer), oldify, and a float array
store in of my modules (most commonly: it can happen in other places
too). It sometimes behave a little differently under gdb than on its
own.

   With the debug runtime libasmrund.a, it crashes in a different
place but sadly doesn't fail any assertions.

   I haven't so far been able to isolate a single piece of my code
which causes the problem. However the whole thing is very float-array
intensive, which is probably relatively uncommon in ocaml
applications?

   I tried a few variations of the same code compiled to bytecode, and
didn't see any problems, so it seems not to be in the runtime per se.

   Using -compact with ocamlopt didn't help. I haven't tried playing
with the -inline.

   I use camlp4 very intensively as a front end, but I don't think
this is a camlp4-related problem, because it happens just the same if
I use pr_o.cmo (which outputs ocaml-syntax ASCII text for ocaml to
parse) as with pr_dump.cmo (which outputs a marshalled syntax tree).

   The only library I am linking with is camlp4's "gramlib.cmxa" which
I use for the lexer (and yes, for what it's worth, I have recompiled
camlp4 and tried again). That is the only `.cmxa' in the link
command; everything else is one of my `.cmx's. There are no `.o's or
explicit `-cclib's at all.

   To concentrate my mind, here is a declaration: "I am certain that
there is nothing but ML in the code. The only compiler involved is
vanilla out-of-the-box ocamlopt 2.02. The only non-standard library I
am linking with is gramlib.cmxa. I slept normally last night and have
not ingested coffee for six hours."

   System:

      SunOS stilt 5.6 Generic_105181-11 sun4u sparc (Sun Ultra 5)

      The Objective Caml compiler, version 2.02
         compiled with gcc version 2.8.1 (*)
         configured to use posix threads for threading (+)

(*) same problem when ocaml compiled with egcs 1.1; N.B. it bootstraps
successfully with either compiler

(+) but the program isn't compiled with -thread or linked with any
thread library



This archive was generated by hypermail 2b29 : Sun Jan 02 2000 - 11:58:21 MET