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
To reproduce:
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.
Trac metadata
Trac field | Value |
---|---|
Version | 6.8.2 |
Type | Bug |
TypeOfFailure | OtherFailure |
Priority | normal |
Resolution | Unresolved |
Component | Runtime System |
Test case | |
Differential revisions | |
BlockedBy | |
Related | |
Blocking | |
CC | |
Operating system | |
Architecture |