running a profiled build of shake test suite with rts args +RTS -hb -N10 triggers SIGSEGV
on my 4 core macbook pro i can reliably get a sigsegv when running the shake test suite with profiling enabled and the RTS flags +RTS -hb -N10
steps to reproduce (with either ghc 7.10.3 or an 8.0 RC4 build)
cabal get --source shake
cd shake
# shake master was commit f0c0ce8d4c2c017b9a26b5d4258e07d881f4cde1 as of time of testing
# but problem should happen with eg 0.15.6 too
cabal install # this is so that the shake test suite can fine the right template file
cabal install --only-dep --enable-tests --enable-profiling
./dist/build/shake-test/shake-test +RTS -hb -N10
this last command yields the error
******************************************************************
** Running shake test suite, run with '--help' to see arguments **
******************************************************************
fish: './dist/build/shake-test/shake-t…' terminated by signal SIGSEGV (Address boundary error)
i can also trigger the bug reported in #4820 (closed) by running the test suite with the -hr flag rather than -hb
I'm marking this as HIGHEST so it can be discussed, because the profiiling build of the shake test suite only seems to crash *if* the test suite is run with -hb or -hr flags, which seems like a pretty nasty bug (which colleagues have it in other code)
nb: ./dist/build/shake-test/shake-test +RTS -N10
runs into a not enough stack space error before the shake test suite completes, but ./dist/build/shake-test/shake-test +RTS -K1G -N10
seems to work fine, though the crashes happen super early in the gargantuan test suite
the analogous output for reproducing #4820 (closed) is :
./dist/build/shake-test/shake-test +RTS -hr -N10
******************************************************************
** Running shake test suite, run with '--help' to see arguments **
******************************************************************
Longest file modification time lag was 1005ms
## BUILD tar test
## TESTING tar
## BUILD tar --abbrev=output=$OUT -j3
Writing report to $OUT/tar/report.html
Build completed in 0:01m
## BUILD tar --no-build --report=-
Warning: No want/action statements, nothing to do
Writing report to output/tar/report.html
Writing report to -
* This database has tracked 1 runs.
* There are 4 rules (4 rebuilt in the last run).
* Building required 1 traced commands (1 in the last run).
* The total (unparallelised) time is 0.01s of which 0.01s is traced commands.
* The longest rule takes 0.01s (output/tar/result.tar), and the longest traced command takes 0.01s (tar).
* Last run gave an average parallelism of 0.44 times over 0.01s.
Build completed in 0:01m
## BUILD tar
Writing report to output/tar/report.html
Build completed in 0:01m
## FINISHED TESTING tar
## BUILD self test
## TESTING self
## BUILD self --abbrev=output=$OUT -j3
Writing report to $OUT/self/report.html
Build completed in 0:01m
## BUILD self --no-build --report=-
Warning: No want/action statements, nothing to do
Writing report to output/self/report.html
Writing report to -
* This database has tracked 2 runs.
* There are 460 rules (2 rebuilt in the last run).
* Building required 56 traced commands (1 in the last run).
* The total (unparallelised) time is 22.73s of which 22.33s is traced commands.
* The longest rule takes 1.11s (output/self/Development/Shake/Types.o output/self/Development/Shake/Types.hi), and the longest traced command takes 1.11s (ghc).
* Last run gave an average parallelism of 0.78 times over 0.05s.
Build completed in 0:01m
## BUILD self
shake-test: internal error: Invalid object in isRetainer(): 39
(GHC version 8.0.0.20160421 for x86_64_apple_darwin)
Please report this as a GHC bug: http://www.haskell.org/ghc/reportabug