Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

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

Open
misuzu opened this issue May 15, 2024 · 5 comments
Open

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

misuzu opened this issue May 15, 2024 · 5 comments

Comments

@misuzu
Copy link

misuzu commented May 15, 2024

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.

@misuzu misuzu changed the title Test suite hangs on armv7l-linux (nixpkgs) Test suite hangs on armv7l-linux (32-bit userspace, 64-bit kernel) May 15, 2024
@sternenseemann
Copy link

sternenseemann commented Sep 15, 2024

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

@sternenseemann
Copy link

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
Copy link

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.

@iliastsi
Copy link

We are hitting this in Debian as well, now that we upgraded to version 0.2.20. Tests hang on all 32-bit platforms. By bisecting this I can see the commit that started to fail is indeed 0bbbac1 (CC @sjakobi )

By taking a very quick look at this commit, I can see that the mask function overflows on 32-bit architectures, not sure if that's why the tests fail:

mask :: Int
mask = sum [bit n | n <- [0, 3, 8, 14, 61]]

@treeowl
Copy link
Collaborator

treeowl commented Oct 16, 2024

We are hitting this in Debian as well, now that we upgraded to version 0.2.20. Tests hang on all 32-bit platforms. By bisecting this I can see the commit that started to fail is indeed 0bbbac1 (CC @sjakobi )

By taking a very quick look at this commit, I can see that the mask function overflows on 32-bit architectures, not sure if that's why the tests fail:

mask :: Int
mask = sum [bit n | n <- [0, 3, 8, 14, 61]]

The mask function introduced by that commit looks potentially shady for 32 bit, but it's also undocumented, so I'm not sure what it's supposed to do.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

4 participants