Nondeterministic Failure on aarch64 with -jn, n > 1
GHC releases 8.2.1 through 8.4.3 exhibit various crashes when invoked with '-jn' where n > 1. GHCHQ's binary releases have this behavior, as well as GHCs I've cross-built on my own.
In order to reproduce this issue there must be some parallelism in the module dependency graph; I've attached a test package for easily reproducing this. Use of deriving in the test modules isn't necessary to trigger this; it merely gives the compiler some work to do. The 'hscolour' package also triggers this issue reliably.
To trigger the bad behavior, simply run:
ghc --make -jn Main.hs -o test
with n > 1 in the test-package. Running this repeatedly (removing .hi and .o files in between runs, of course), I've observed these outcomes with varying frequencies:
- Segmentation fault.
- Bus fault.
- Compiler process sleeps indefinitely.
<no location info>: error:
ghc: panic! (the 'impossible' happened)
(GHC version 8.4.3 for aarch64-unknown-linux):
Binary.UserData: no put_binding_name
ghc: internal error: MUT_VAR_CLEAN object entered!
(GHC version 8.4.3 for aarch64_unknown_linux)
Please report this as a GHC bug: http://www.haskell.org/ghc/reportabug
Aborted (core dumped)
- And most strangely:
A.hs:3:1: error:
• Kind signature on data type declaration has non-* return kind *
• In the data declaration for ‘A’
|
3 | data A = A
| ^^^^^^^^^^...
I have not noticed issues with any other concurrent Haskell programs on aarch64. I'm using the NVIDIA Jetson TX2 for these tests. I have not yet tried GHC 8.0.x, 8.6.x, or HEAD. I'm having trouble reproducing this in GDB; I'll report back when I've got that working.
Trac metadata
Trac field | Value |
---|---|
Version | 8.4.3 |
Type | Bug |
TypeOfFailure | OtherFailure |
Priority | normal |
Resolution | Unresolved |
Component | Compiler |
Test case | |
Differential revisions | |
BlockedBy | |
Related | |
Blocking | |
CC | |
Operating system | |
Architecture |