Skip to content

Parallel make should interleave output if it means we can report an error earlier

Steps to reproduce:

  1. Take the example from #12347
  2. Run ghc --make and observe what order the modules are reported in (on my box the ordering is C, B, then A)
  3. Modify A to be a small, quick-to-compile module with a type error. module A where x = True True works grand.
  4. Run ghc --make All A B C -j4 +RTS -N4

Expected result: ghc --make reports the error in A immediately

Actual result: ghc --make ponders for a while before reporting the error

An interesting way to mix up the experiment is to put the type error in C rather than A. Then indeed the error is reported early, but GHC fails to exit until some undetermined later time (it is certainly not waiting for the other threads to finish compiling, because you don't see object files being produced.)

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