threaded runtime system crashes on powerpc with -N2
A program using threads (in a somewhat naive way) crashes at runtime, only if it is linked against the -threaded RTS, only if it is given the runtime option +RTS -N2 -RTS, and only on powerpc. The error is:
SurfaceViewer: internal error: END_TSO_QUEUE object entered! (GHC version 6.8.2 for powerpc_apple_darwin) Please report this as a GHC bug: http://www.haskell.org/ghc/reportabug Abort trap
darcs get http://www.cs.york.ac.uk/fp/darcs/CaseTables curl -O http://www.gris.uni-tuebingen.de/edu/areas/scivis/volren/datasets/data/lobster.raw.gz gunzip lobster.raw.gz cd CaseTables ghc-6.8.2 --make -O2 -fglasgow-exts -threaded SurfaceViewer ./SurfaceViewer ../lobster.raw 301 324 56 20 1 +RTS -N2 -RTS
If you omit the -threaded linking flag, or omit the -N2 runtime flag, then there is no crash. I could not reproduce it on x86.
The only usage of threading is in the module Gridiness, which defines a simple read/writer protocol through a Chan.
A different runtime crash is apparent if the bottom three definitions in Gridiness are swapped for the top three (currently commented out), which use a single MVar for communication rather than a Chan. In that case, the error is
SurfaceViewer: thread blocked indefinitely
The same conditions apply: must be -threaded, must have -N2, must be on powerpc.