GHC build fails with "thread blocked indefinitely in an MVar operation" in ghc-pkg.exe
Summary
When building GHC on windows using hadrian recently errors like this one have cropped up:
?[34m?[35m| Copy package 'directory'?[0m?[0m
?[34m?[35m| Configure package 'process'?[0m?[0m
?[34m?[35m| Configure package 'ghc-boot'?[0m?[0m
?[34m?[35m| Configure package 'hpc'?[0m?[0m
?[34m# cabal-copy (for _quick/stage1/lib/package.conf.d/directory-1.3.6.0.conf)?[0m
?[34m?[35m| Register package 'directory'?[0m?[0m
?[34m# cabal-register (for _quick/stage1/lib/package.conf.d/directory-1.3.6.0.conf)?[0m
?[34m# cabal-configure (for _quick/stage1/libraries/hpc/setup-config)?[0m
?[34m# cabal-configure (for _quick/stage1/libraries/ghc-boot/setup-config)?[0m
?[34m# cabal-configure (for _quick/stage1/libraries/process/setup-config)?[0m
?[34m# cabal-autogen (for _quick/stage1/libraries/hpc/build/autogen/cabal_macros.h)?[0m
?[34m# cabal-autogen (for _quick/stage1/libraries/ghc-boot/build/autogen/cabal_macros.h)?[0m
?[34m?[35m| Run Ghc CompileHs Stage1: libraries/hpc/Trace/Hpc/Util.hs => _quick/stage1/libraries/hpc/build/Trace/Hpc/Util.o?[0m?[0m
?[34m?[35m| Run Ghc CompileHs Stage1: libraries/ghc-boot/GHC/HandleEncoding.hs => _quick/stage1/libraries/ghc-boot/build/GHC/HandleEncoding.o?[0m?[0m
?[34m?[35m| Run Ghc CompileHs Stage1: libraries/ghc-boot/GHC/Platform.hs => _quick/stage1/libraries/ghc-boot/build/GHC/Platform.o?[0m?[0m
?[34m?[35m| Run Ghc CompileHs Stage1: _quick/stage1/libraries/ghc-boot/build/GHC/Version.hs => _quick/stage1/libraries/ghc-boot/build/GHC/Version.o?[0m?[0m
?[34m?[35m| Run Ghc CompileHs Stage1: libraries/ghc-boot/GHC/LanguageExtensions.hs => _quick/stage1/libraries/ghc-boot/build/GHC/LanguageExtensions.o?[0m?[0m
?[34m?[35m| Run Ghc CompileHs Stage1: libraries/ghc-boot/GHC/PackageDb.hs => _quick/stage1/libraries/ghc-boot/build/GHC/PackageDb.o?[0m?[0m
?[34m?[35m| Run Ghc CompileHs Stage1: libraries/hpc/Trace/Hpc/Tix.hs => _quick/stage1/libraries/hpc/build/Trace/Hpc/Tix.o?[0m?[0m
?[34m?[35m| Remove file _quick/stage1/libraries/text/build/libHStext-1.2.3.1.a?[0m?[0m
?[34m?[35m| Run Ar Pack Stage1: _quick/stage1/libraries/text/build/c/cbits/cbits.o (and 44 more) => _quick/stage1/libraries/text/build/libHStext-1.2.3.1.a?[0m?[0m
E:/ghc_inline_div/inplace/mingw/bin/ar.exe: creating _quick/stage1/libraries/text/build/libHStext-1.2.3.1.a
?[34m?[32m/-----------------------------------------------------------------\
| Successfully built library 'text' (Stage1, way v). |
| Library: _quick/stage1/libraries/text/build/libHStext-1.2.3.1.a |
| Library synopsis: An efficient packed Unicode text type. |
\-----------------------------------------------------------------/?[0m?[0m
?[34m?[35m| Run Ld Stage1: _quick/stage1/libraries/text/build/c/cbits/cbits.o (and 44 more) => _quick/stage1/libraries/text/build/HStext-1.2.3.1.o?[0m?[0m
?[34m?[35m| Copy package 'text'?[0m?[0m
?[34m# cabal-copy (for _quick/stage1/lib/package.conf.d/text-1.2.3.1.conf)?[0m
?[34m?[35m| Register package 'text'?[0m?[0m
?[34m# cabal-register (for _quick/stage1/lib/package.conf.d/text-1.2.3.1.conf)?[0m
?[34m?[35m| Configure package 'parsec'?[0m?[0m
?[34m?[35m| Run Ghc CompileHs Stage1: libraries/ghc-boot/GHC/Serialized.hs => _quick/stage1/libraries/ghc-boot/build/GHC/Serialized.o?[0m?[0m
hadrian.exe: 'E:/ghc_inline_div/_quick/stage0/bin/ghc-pkg.exe' exited with an
error:
ghc-pkg.exe: E:/ghc_inline_div/_quick/stage1/lib/package.conf.d\package.cache:
you don't have permission to modify this file
ghc.exe: panic! (the 'impossible' happened)
(GHC version 8.11.0.20200416:
thread blocked indefinitely in an MVar operation
Please report this as a GHC bug: https://www.haskell.org/ghc/reportabug
?[31mError when running Shake build system:
at action, called at src\Rules.hs:71:19 in main:Rules
at need, called at src\Rules.hs:93:5 in main:Rules
* Depends on: _quick/stage1/lib/package.conf.d/text-1.2.3.1.conf
* Raised the exception:
ExitFailure 1
?[0m
I'm not familiar with the code in ghc-pkg, but it seems to try to open a file and then crash with that MVar error.
Steps to reproduce
A simple build. It doesn't happen in a deterministic fashion sadly.
I can (sometimes) reproduce this via:
hadrian/build --flavour=quick
Expected behavior
Builds should succeed.
Environment
- GHC version used: 8.10/master on windows 10