test: Fix threaded runtime hang.
There was one forkProcess lurking in test.hs, and that seems to be responsible for recent buildd failures on amd64 and armhf. I was able to reproduce it pretty easily on amd64, and even once on i386, and it was clearly that same bad old threaded runtime hang. So removing this forkProcess should fix it. Odd that it lurked for some months before popping up.
This commit is contained in:
parent
f96725a292
commit
c755d036f4
2 changed files with 7 additions and 15 deletions
1
debian/changelog
vendored
1
debian/changelog
vendored
|
@ -5,6 +5,7 @@ git-annex (3.20121010) UNRELEASED; urgency=low
|
||||||
Each of these has its own standard preferred content setting.
|
Each of these has its own standard preferred content setting.
|
||||||
* dead: Remove dead repository from all groups.
|
* dead: Remove dead repository from all groups.
|
||||||
* Avoid unsetting HOME when running certian git commands. Closes: #690193
|
* Avoid unsetting HOME when running certian git commands. Closes: #690193
|
||||||
|
* test: Fix threaded runtime hang.
|
||||||
|
|
||||||
-- Joey Hess <joeyh@debian.org> Wed, 10 Oct 2012 12:59:25 -0400
|
-- Joey Hess <joeyh@debian.org> Wed, 10 Oct 2012 12:59:25 -0400
|
||||||
|
|
||||||
|
|
21
test.hs
21
test.hs
|
@ -14,7 +14,6 @@ import Test.QuickCheck
|
||||||
import System.Posix.Directory (changeWorkingDirectory)
|
import System.Posix.Directory (changeWorkingDirectory)
|
||||||
import System.Posix.Files
|
import System.Posix.Files
|
||||||
import System.Posix.Env
|
import System.Posix.Env
|
||||||
import System.Posix.Process
|
|
||||||
import Control.Exception.Extensible
|
import Control.Exception.Extensible
|
||||||
import qualified Data.Map as M
|
import qualified Data.Map as M
|
||||||
import System.IO.HVFS (SystemFS(..))
|
import System.IO.HVFS (SystemFS(..))
|
||||||
|
@ -48,6 +47,7 @@ import qualified Utility.Gpg
|
||||||
import qualified Build.SysConfig
|
import qualified Build.SysConfig
|
||||||
import qualified Utility.Format
|
import qualified Utility.Format
|
||||||
import qualified Utility.Verifiable
|
import qualified Utility.Verifiable
|
||||||
|
import qualified Utility.Process
|
||||||
|
|
||||||
-- for quickcheck
|
-- for quickcheck
|
||||||
instance Arbitrary Types.Key.Key where
|
instance Arbitrary Types.Key.Key where
|
||||||
|
@ -696,20 +696,10 @@ git_annex command params = do
|
||||||
{- Runs git-annex and returns its output. -}
|
{- Runs git-annex and returns its output. -}
|
||||||
git_annex_output :: String -> [String] -> IO String
|
git_annex_output :: String -> [String] -> IO String
|
||||||
git_annex_output command params = do
|
git_annex_output command params = do
|
||||||
(frompipe, topipe) <- createPipe
|
got <- Utility.Process.readProcess "git-annex" (command:params)
|
||||||
pid <- forkProcess $ do
|
|
||||||
_ <- dupTo topipe stdOutput
|
|
||||||
closeFd frompipe
|
|
||||||
_ <- git_annex command params
|
|
||||||
exitSuccess
|
|
||||||
-- XXX since the above is a separate process, code coverage stats are
|
-- XXX since the above is a separate process, code coverage stats are
|
||||||
-- not gathered for things run in it.
|
-- not gathered for things run in it.
|
||||||
closeFd topipe
|
-- Run same command again, to get code coverage.
|
||||||
fromh <- fdToHandle frompipe
|
|
||||||
got <- hGetContentsStrict fromh
|
|
||||||
hClose fromh
|
|
||||||
_ <- getProcessStatus True False pid
|
|
||||||
-- XXX hack Run same command again, to get code coverage.
|
|
||||||
_ <- git_annex command params
|
_ <- git_annex command params
|
||||||
return got
|
return got
|
||||||
|
|
||||||
|
@ -877,8 +867,9 @@ unannexed = runchecks [checkregularfile, checkcontent, checkwritable]
|
||||||
|
|
||||||
prepare :: IO ()
|
prepare :: IO ()
|
||||||
prepare = do
|
prepare = do
|
||||||
-- While PATH is mostly avoided, the commit hook does run it. Make
|
-- While PATH is mostly avoided, the commit hook does run it,
|
||||||
-- sure that the just-built git annex is used.
|
-- and so does git_annex_output. Make sure that the just-built
|
||||||
|
-- git annex is used.
|
||||||
cwd <- getCurrentDirectory
|
cwd <- getCurrentDirectory
|
||||||
p <- getEnvDefault "PATH" ""
|
p <- getEnvDefault "PATH" ""
|
||||||
setEnv "PATH" (cwd ++ ":" ++ p) True
|
setEnv "PATH" (cwd ++ ":" ++ p) True
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue