Strange behavior in GHC-compiled code

Mark Conway Wirt MarkCWirt at gmail.com
Fri May 25 15:33:45 CEST 2012


Hi folks.

I have a piece of Haskell code that's been laying around on my computer
for about a year, and I recently decided to dust it off.

The problem is that it used to work fine, but in the interim (in which
I both upgraded OS versions/GHC versions and went from 32 bit to 64 bit)
the code stopped working reliably.

It tends to work OK for small data sets, but with larger data sets it
exhibits one of three bad behaviors:

    1) A segfault,
    2) An "Error in array index" error, or
    3) The following runtime error:

        internal error: evacuate: strange closure type 5060208
        (GHC version 7.0.3 for x86_64_unknown_linux)
        Please report this as a GHC bug:  http://www.haskell.org/ghc/reportabug
        Aborted

It complies OK, although with optimization turned on it gives me a
"has one call pattern, but the limit is 0" error, but my understanding
is that this shouldn't really be an issue.

I'd like to figure out what this issue is, but while I understand a bit
about the language itself, with my knowledge of GHC and the way it works
I don't really know where to begin.

(The strange non-deterministic nature of the problem makes me wonder if
it could be something not related to Haskell, such as a hardware or memory
error. Is this possible or likely?)

Any guidance/pointers would be very much appreciated.

Thanks.

-Mark




More information about the Glasgow-haskell-users mailing list