Skip to content

Race hazard in Random library test suite

In a validate run, rangeTest fails thus

=====> rangeTest(normal) 2838 of 2886 [0, 4, 0]
cd ../../../libraries/random/tests && '/64playpen/simonpj/builds/HEAD-1/bindisttest/install dir/bin/ghc' -fforce-recomp -dcore-lint -dcmm-lint -dno-debug-output -no-user-package-conf -rtsopts  -o rangeTest rangeTest.hs  -i.. -XCPP   >rangeTest.comp.stderr 2>&1
=====> random1283(normal) 2839 of 2886 [0, 4, 0]
cd ../../../libraries/random/tests && '/64playpen/simonpj/builds/HEAD-1/bindisttest/install dir/bin/ghc' -fforce-recomp -dcore-lint -dcmm-lint -dno-debug-output -no-user-package-conf -rtsopts  -o random1283 random1283.hs  -i.. -XCPP  -package containers  >random1283.comp.stderr 2>&1
Compile failed (status 256) errors were:
[1 of 2] Compiling System.Random    ( ../System/Random.hs, ../System/Random.o )
[2 of 2] Compiling Main             ( rangeTest.hs, rangeTest.o )
Linking rangeTest ...
../System/Random.o: file not recognized: File truncated
collect2: ld returned 1 exit status

*** unexpected failure for rangeTest(normal)

Ian writes: The problem is this, in libraries/random/tests/all.T:

    # This lets me run tests from the test directory during development:
    opts = '-i.. -XCPP '

This is causing all the tests to compile the source, rather than using the package. If two of the tests get run in parallel then there is a race condition.

Ryan, could you handle this differently, so those flags don't get passed by default, please? Perhaps have them conditionally set, based on whether a file has been 'touch'ed or whether a make variable has been set, or maybe make a testsuite wrapper for yourself which builds the package so that they aren't necessary?

Trac metadata
Trac field Value
Version 7.0.3
Type Bug
TypeOfFailure OtherFailure
Priority normal
Resolution Unresolved
Component Compiler
Test case
Differential revisions
BlockedBy
Related
Blocking
CC rrnewton@gmail.com
Operating system
Architecture
To upload designs, you'll need to enable LFS and have an admin enable hashed storage. More information