haskell-unordered-containers / unordered-containers

Efficient hashing-based container types
BSD 3-Clause "New" or "Revised" License
221 stars 97 forks source link

Test suite hangs on armv7l-linux (32-bit userspace, 64-bit kernel) #491

Open misuzu opened 4 months ago

misuzu commented 4 months ago

Here's the build log:

Running phase: setupCompilerEnvironmentPhase
Build with /nix/store/k2j3m0av1pnhcvr4xywdcw324rkdybfi-ghc-9.2.8.
Running phase: unpackPhase
unpacking source archive /nix/store/46rvk8vjzsagr58a6pqwimivmr0ahxys-unordered-containers-0.2.20.tar.gz
source root is unordered-containers-0.2.20
setting SOURCE_DATE_EPOCH to timestamp 1000000000 of file unordered-containers-0.2.20/unordered-containers.cabal
Running phase: patchPhase
Replace Cabal file with edited version from mirror://hackage/unordered-containers-0.2.20/revision/1.cabal.
Running phase: compileBuildDriverPhase
setupCompileFlags: -package-db=/build/tmp.ZqQGOrCr7U/setup-package.conf.d -j4 +RTS -A64M -RTS -threaded -rtsopts
[1 of 1] Compiling Main             ( Setup.hs, /build/tmp.ZqQGOrCr7U/Main.o )
Linking Setup ...
Running phase: updateAutotoolsGnuConfigScriptsPhase
Running phase: configurePhase
configureFlags: --verbose --prefix=/nix/store/dvxvs8h4mqgkca6a8815rk35m5gm4169-unordered-containers-0.2.20 --libdir=$prefix/lib/$compiler --libsubdir=$abi/$libname --docdir=/nix/store/x3imqxxy4pwzlqqwna64snclhsbi27zz-unordered-containers-0.2.20-doc/share/doc/unordered-containers-0.2.20 --with-gcc=gcc --package-db=/build/tmp.ZqQGOrCr7U/package.conf.d --ghc-options=-j4 +RTS -A64M -RTS --enable-library-profiling --profiling-detail=exported-functions --disable-profiling --enable-shared --disable-coverage --enable-static --disable-executable-dynamic --enable-tests --disable-benchmarks --enable-library-vanilla --disable-library-for-ghci --enable-split-sections --enable-library-stripping --enable-executable-stripping --ghc-options=-haddock --extra-lib-dirs=/nix/store/6g11lfl0qprprc8fl0rv78pxjvjcsl52-ncurses-6.4/lib --extra-lib-dirs=/nix/store/r3cvik3s3czwd5xm97av4vv98y3qr85s-libffi-3.4.6/lib --extra-lib-dirs=/nix/store/s02zrhiwq5fyqi7lsf8dm73j57ilgy4n-gmp-with-cxx-6.3.0/lib
Using Parsec parser
Configuring unordered-containers-0.2.20...
Flags chosen: debug=False
Dependency base >=4.10 && <5: using base-4.16.4.0
Dependency deepseq >=1.4.3: using deepseq-1.4.6.1
Dependency hashable >=1.4 && <1.5: using hashable-1.4.4.0
Dependency template-haskell <2.22: using template-haskell-2.18.0.0
Dependency ChasingBottoms: using ChasingBottoms-1.3.1.13
Dependency HUnit: using HUnit-1.6.2.0
Dependency QuickCheck >=2.4.0.1: using QuickCheck-2.14.3
Dependency base: using base-4.16.4.0
Dependency containers >=0.5.8: using containers-0.6.5.1
Dependency hashable: using hashable-1.4.4.0
Dependency nothunks >=0.1.3: using nothunks-0.1.5
Dependency random: using random-1.2.1.2
Dependency tasty >=1.4.0.3: using tasty-1.4.3
Dependency tasty-hunit >=0.10.0.3: using tasty-hunit-0.10.1
Dependency tasty-quickcheck >=0.10.1.2: using tasty-quickcheck-0.10.2
Dependency unordered-containers: using unordered-containers-0.2.20
Source component graph:
    component lib
    component test:unordered-containers-tests dependency lib
Configured component graph:
    component unordered-containers-0.2.20-DY5nBCQ337m7BJ3UQFmPmf
        include base-4.16.4.0
        include deepseq-1.4.6.1
        include hashable-1.4.4.0-98uMjtMmtzO69pkcL7RsGV
        include template-haskell-2.18.0.0
    component unordered-containers-0.2.20-HF6uLPOUTPKAILomS1IQjt-unordered-containers-tests
        include ChasingBottoms-1.3.1.13-AvtPs4BEQk454i1dKkIgRt
        include HUnit-1.6.2.0-G5uPb6gbD8g4JulXHf1k9a
        include QuickCheck-2.14.3-D2a8TzIL0WU4gsTThUvQvo
        include base-4.16.4.0
        include containers-0.6.5.1
        include hashable-1.4.4.0-98uMjtMmtzO69pkcL7RsGV
        include nothunks-0.1.5-3uM5BIi6QUnKV2hHU5iW38
        include random-1.2.1.2-5ZzjSppKGSC4tnapwFefmp
        include tasty-1.4.3-Ihei6itqJAwALHrSSsV7uU
        include tasty-hunit-0.10.1-HXx3CJFRzxd65E3yHQAecw
        include tasty-quickcheck-0.10.2-C2faRhcadFSJI2nfyPE8HA
        include unordered-containers-0.2.20-DY5nBCQ337m7BJ3UQFmPmf
Linked component graph:
    unit unordered-containers-0.2.20-DY5nBCQ337m7BJ3UQFmPmf
        include base-4.16.4.0
        include deepseq-1.4.6.1
        include hashable-1.4.4.0-98uMjtMmtzO69pkcL7RsGV
        include template-haskell-2.18.0.0
        Data.HashMap.Internal=unordered-containers-0.2.20-DY5nBCQ337m7BJ3UQFmPmf:Data.HashMap.Internal,Data.HashMap.Internal.Array=unordered-containers-0.2.20-DY5nBCQ337m7BJ3UQFmPmf:Data.HashMap.Internal.Array,Data.HashMap.Internal.Debug=unordered-containers-0.2.20-DY5nBCQ337m7BJ3UQFmPmf:Data.HashMap.Internal.Debug,Data.HashMap.Internal.List=unordered-containers-0.2.20-DY5nBCQ337m7BJ3UQFmPmf:Data.HashMap.Internal.List,Data.HashMap.Internal.Strict=unordered-containers-0.2.20-DY5nBCQ337m7BJ3UQFmPmf:Data.HashMap.Internal.Strict,Data.HashMap.Lazy=unordered-containers-0.2.20-DY5nBCQ337m7BJ3UQFmPmf:Data.HashMap.Lazy,Data.HashMap.Strict=unordered-containers-0.2.20-DY5nBCQ337m7BJ3UQFmPmf:Data.HashMap.Strict,Data.HashSet=unordered-containers-0.2.20-DY5nBCQ337m7BJ3UQFmPmf:Data.HashSet,Data.HashSet.Internal=unordered-containers-0.2.20-DY5nBCQ337m7BJ3UQFmPmf:Data.HashSet.Internal
    unit unordered-containers-0.2.20-HF6uLPOUTPKAILomS1IQjt-unordered-containers-tests
        include ChasingBottoms-1.3.1.13-AvtPs4BEQk454i1dKkIgRt
        include HUnit-1.6.2.0-G5uPb6gbD8g4JulXHf1k9a
        include QuickCheck-2.14.3-D2a8TzIL0WU4gsTThUvQvo
        include base-4.16.4.0
        include containers-0.6.5.1
        include hashable-1.4.4.0-98uMjtMmtzO69pkcL7RsGV
        include nothunks-0.1.5-3uM5BIi6QUnKV2hHU5iW38
        include random-1.2.1.2-5ZzjSppKGSC4tnapwFefmp
        include tasty-1.4.3-Ihei6itqJAwALHrSSsV7uU
        include tasty-hunit-0.10.1-HXx3CJFRzxd65E3yHQAecw
        include tasty-quickcheck-0.10.2-C2faRhcadFSJI2nfyPE8HA
        include unordered-containers-0.2.20-DY5nBCQ337m7BJ3UQFmPmf
Ready component graph:
    definite unordered-containers-0.2.20-DY5nBCQ337m7BJ3UQFmPmf
        depends base-4.16.4.0
        depends deepseq-1.4.6.1
        depends hashable-1.4.4.0-98uMjtMmtzO69pkcL7RsGV
        depends template-haskell-2.18.0.0
    definite unordered-containers-0.2.20-HF6uLPOUTPKAILomS1IQjt-unordered-containers-tests
        depends ChasingBottoms-1.3.1.13-AvtPs4BEQk454i1dKkIgRt
        depends HUnit-1.6.2.0-G5uPb6gbD8g4JulXHf1k9a
        depends QuickCheck-2.14.3-D2a8TzIL0WU4gsTThUvQvo
        depends base-4.16.4.0
        depends containers-0.6.5.1
        depends hashable-1.4.4.0-98uMjtMmtzO69pkcL7RsGV
        depends nothunks-0.1.5-3uM5BIi6QUnKV2hHU5iW38
        depends random-1.2.1.2-5ZzjSppKGSC4tnapwFefmp
        depends tasty-1.4.3-Ihei6itqJAwALHrSSsV7uU
        depends tasty-hunit-0.10.1-HXx3CJFRzxd65E3yHQAecw
        depends tasty-quickcheck-0.10.2-C2faRhcadFSJI2nfyPE8HA
        depends unordered-containers-0.2.20-DY5nBCQ337m7BJ3UQFmPmf
Using Cabal-3.6.3.0 compiled by ghc-9.2
Using compiler: ghc-9.2.8
Using install prefix:
/nix/store/dvxvs8h4mqgkca6a8815rk35m5gm4169-unordered-containers-0.2.20
Executables installed in:
/nix/store/dvxvs8h4mqgkca6a8815rk35m5gm4169-unordered-containers-0.2.20/bin
Libraries installed in:
/nix/store/dvxvs8h4mqgkca6a8815rk35m5gm4169-unordered-containers-0.2.20/lib/ghc-9.2.8/arm-linux-ghc-9.2.8/unordered-containers-0.2.20-DY5nBCQ337m7BJ3UQFmPmf
Dynamic Libraries installed in:
/nix/store/dvxvs8h4mqgkca6a8815rk35m5gm4169-unordered-containers-0.2.20/lib/ghc-9.2.8/arm-linux-ghc-9.2.8
Private executables installed in:
/nix/store/dvxvs8h4mqgkca6a8815rk35m5gm4169-unordered-containers-0.2.20/libexec/arm-linux-ghc-9.2.8/unordered-containers-0.2.20
Data files installed in:
/nix/store/dvxvs8h4mqgkca6a8815rk35m5gm4169-unordered-containers-0.2.20/share/arm-linux-ghc-9.2.8/unordered-containers-0.2.20
Documentation installed in:
/nix/store/x3imqxxy4pwzlqqwna64snclhsbi27zz-unordered-containers-0.2.20-doc/share/doc/unordered-containers-0.2.20
Configuration files installed in:
/nix/store/dvxvs8h4mqgkca6a8815rk35m5gm4169-unordered-containers-0.2.20/etc
No alex found
Using ar found on system at:
/nix/store/fb9hvyglc6mcl38vbanxa2qy6b0ms6x7-binutils-2.41/bin/ar
No c2hs found
No cpphs found
No doctest found
Using gcc version 13.2.0 given by user at:
/nix/store/myj8arpjpclgskml9gc1pplmzj7i8vqy-gcc-wrapper-13.2.0/bin/gcc
Using ghc version 9.2.8 found on system at:
/nix/store/k2j3m0av1pnhcvr4xywdcw324rkdybfi-ghc-9.2.8/bin/ghc
Using ghc-pkg version 9.2.8 found on system at:
/nix/store/k2j3m0av1pnhcvr4xywdcw324rkdybfi-ghc-9.2.8/bin/ghc-pkg-9.2.8
No ghcjs found
No ghcjs-pkg found
No greencard found
Using haddock version 2.26.0 found on system at:
/nix/store/k2j3m0av1pnhcvr4xywdcw324rkdybfi-ghc-9.2.8/bin/haddock-ghc-9.2.8
No happy found
Using haskell-suite found on system at: haskell-suite-dummy-location
Using haskell-suite-pkg found on system at: haskell-suite-pkg-dummy-location
No hmake found
Using hpc version 0.68 found on system at:
/nix/store/k2j3m0av1pnhcvr4xywdcw324rkdybfi-ghc-9.2.8/bin/hpc
Using hsc2hs version 0.68.8 found on system at:
/nix/store/k2j3m0av1pnhcvr4xywdcw324rkdybfi-ghc-9.2.8/bin/hsc2hs
Using hscolour version 1.25 found on system at:
/nix/store/zgsyxwd0prk0a6fsgg4h43i36cpd7m4q-hscolour-1.25/bin/HsColour
No jhc found
Using ld found on system at:
/nix/store/lg96646z4m94svqccshwd46xwf7jpcpl-binutils-wrapper-2.41/bin/ld.gold
No pkg-config found
Using runghc version 9.2.8 found on system at:
/nix/store/k2j3m0av1pnhcvr4xywdcw324rkdybfi-ghc-9.2.8/bin/runghc-9.2.8
Using strip version 2.41 found on system at:
/nix/store/myj8arpjpclgskml9gc1pplmzj7i8vqy-gcc-wrapper-13.2.0/bin/strip
Using tar found on system at:
/nix/store/gm0s7k6g6dhlbs9wd27lx2xbdysyy4ps-gnutar-1.35/bin/tar
No uhc found
Running phase: buildPhase
Preprocessing library for unordered-containers-0.2.20..
Building library for unordered-containers-0.2.20..
[1 of 9] Compiling Data.HashMap.Internal.Array ( Data/HashMap/Internal/Array.hs, dist/build/Data/HashMap/Internal/Array.o, dist/build/Data/HashMap/Internal/Array.dyn_o )
[2 of 9] Compiling Data.HashMap.Internal.List ( Data/HashMap/Internal/List.hs, dist/build/Data/HashMap/Internal/List.o, dist/build/Data/HashMap/Internal/List.dyn_o )
[3 of 9] Compiling Data.HashMap.Internal ( Data/HashMap/Internal.hs, dist/build/Data/HashMap/Internal.o, dist/build/Data/HashMap/Internal.dyn_o )
[4 of 9] Compiling Data.HashMap.Internal.Debug ( Data/HashMap/Internal/Debug.hs, dist/build/Data/HashMap/Internal/Debug.o, dist/build/Data/HashMap/Internal/Debug.dyn_o )
[5 of 9] Compiling Data.HashMap.Internal.Strict ( Data/HashMap/Internal/Strict.hs, dist/build/Data/HashMap/Internal/Strict.o, dist/build/Data/HashMap/Internal/Strict.dyn_o )
[6 of 9] Compiling Data.HashSet.Internal ( Data/HashSet/Internal.hs, dist/build/Data/HashSet/Internal.o, dist/build/Data/HashSet/Internal.dyn_o )
[7 of 9] Compiling Data.HashSet     ( Data/HashSet.hs, dist/build/Data/HashSet.o, dist/build/Data/HashSet.dyn_o )
[8 of 9] Compiling Data.HashMap.Strict ( Data/HashMap/Strict.hs, dist/build/Data/HashMap/Strict.o, dist/build/Data/HashMap/Strict.dyn_o )
[9 of 9] Compiling Data.HashMap.Lazy ( Data/HashMap/Lazy.hs, dist/build/Data/HashMap/Lazy.o, dist/build/Data/HashMap/Lazy.dyn_o )
[1 of 9] Compiling Data.HashMap.Internal.Array ( Data/HashMap/Internal/Array.hs, dist/build/Data/HashMap/Internal/Array.p_o )
[2 of 9] Compiling Data.HashMap.Internal.List ( Data/HashMap/Internal/List.hs, dist/build/Data/HashMap/Internal/List.p_o )
[3 of 9] Compiling Data.HashMap.Internal ( Data/HashMap/Internal.hs, dist/build/Data/HashMap/Internal.p_o )
[4 of 9] Compiling Data.HashMap.Internal.Debug ( Data/HashMap/Internal/Debug.hs, dist/build/Data/HashMap/Internal/Debug.p_o )
[5 of 9] Compiling Data.HashMap.Internal.Strict ( Data/HashMap/Internal/Strict.hs, dist/build/Data/HashMap/Internal/Strict.p_o )
[6 of 9] Compiling Data.HashSet.Internal ( Data/HashSet/Internal.hs, dist/build/Data/HashSet/Internal.p_o )
[7 of 9] Compiling Data.HashSet     ( Data/HashSet.hs, dist/build/Data/HashSet.p_o )
[8 of 9] Compiling Data.HashMap.Strict ( Data/HashMap/Strict.hs, dist/build/Data/HashMap/Strict.p_o )
[9 of 9] Compiling Data.HashMap.Lazy ( Data/HashMap/Lazy.hs, dist/build/Data/HashMap/Lazy.p_o )
Preprocessing test suite 'unordered-containers-tests' for unordered-containers-0.2.20..
Building test suite 'unordered-containers-tests' for unordered-containers-0.2.20..
[1 of 9] Compiling Properties.List  ( tests/Properties/List.hs, dist/build/unordered-containers-tests/unordered-containers-tests-tmp/Properties/List.o )
[2 of 9] Compiling Regressions      ( tests/Regressions.hs, dist/build/unordered-containers-tests/unordered-containers-tests-tmp/Regressions.o )
[3 of 9] Compiling Util.Key         ( tests/Util/Key.hs, dist/build/unordered-containers-tests/unordered-containers-tests-tmp/Util/Key.o )
[4 of 9] Compiling Strictness       ( tests/Strictness.hs, dist/build/unordered-containers-tests/unordered-containers-tests-tmp/Strictness.o )
[5 of 9] Compiling Properties.HashSet ( tests/Properties/HashSet.hs, dist/build/unordered-containers-tests/unordered-containers-tests-tmp/Properties/HashSet.o )
[6 of 9] Compiling Properties.HashMapStrict ( tests/Properties/HashMapStrict.hs, dist/build/unordered-containers-tests/unordered-containers-tests-tmp/Properties/HashMapStrict.o )
[7 of 9] Compiling Properties.HashMapLazy ( tests/Properties/HashMapLazy.hs, dist/build/unordered-containers-tests/unordered-containers-tests-tmp/Properties/HashMapLazy.o )
[8 of 9] Compiling Properties       ( tests/Properties.hs, dist/build/unordered-containers-tests/unordered-containers-tests-tmp/Properties.o )
[9 of 9] Compiling Main             ( tests/Main.hs, dist/build/unordered-containers-tests/unordered-containers-tests-tmp/Main.o )
Linking dist/build/unordered-containers-tests/unordered-containers-tests ...
buildPhase completed in 9 minutes 8 seconds
Running phase: checkPhase
Running 1 test suites...
Test suite unordered-containers-tests: RUNNING...
All
  Properties
    Data.HashMap.Lazy
      instances
        Eq
          ==:                              OK (0.07s)
            +++ OK, passed 100 tests.
          /=:                              OK (0.05s)
            +++ OK, passed 100 tests.
        Ord
          compare reflexive:               OK (0.07s)
            +++ OK, passed 100 tests.
          compare transitive:              OK (0.05s)
            +++ OK, passed 100 tests.
          compare antisymmetric:           OK (0.05s)
            +++ OK, passed 100 tests.
          Ord => Eq:                       OK (0.02s)
            +++ OK, passed 100 tests.

After that it just hangs while consuming 100% cpu until killed.

sternenseemann commented 2 weeks ago

I can reproduce the same issue with i686-linux (kernel is 64 bit as well). GHC is 9.6.6.

sternenseemann commented 2 weeks ago

This issue was introduced in 0.2.20, 0.2.19.1 is unaffected, so probably one of the new optimizations is at fault. I also tried disabling library profiling which the original reporter and I had enabled, but profiling doesn't influence the result, it seems.

sternenseemann commented 2 weeks ago

When the hang occurs seems to depend on the amount of threads used by tasty. Without -threaded/with -j1 it occurs here (still Data.HashMap.Lazy):

      isSubmapOf
        model:                             OK (0.04s)
          +++ OK, passed 100 tests.
        m ⊆ m:  

It also seems possible that 0bbbac1 is rsponsible and this is actually an old(er) issue.