tweag / rules_haskell

Haskell rules for Bazel.
https://haskell.build
Apache License 2.0
262 stars 79 forks source link

Project created through `start` script doesn't build in nix shell #2203

Open jonathanlking opened 1 month ago

jonathanlking commented 1 month ago

Describe the bug

Trying to build the example project generated with the start script fails.

To Reproduce

I have used a pure nix shell to try and rule out any local setup on my machine.

flake.nix ```nix { inputs = { nixpkgs.url = "nixpkgs/nixos-23.11"; flake-utils.url = "github:numtide/flake-utils"; }; outputs = { self, nixpkgs, flake-utils }: flake-utils.lib.eachDefaultSystem (system: { devShells.default = let pkgs = import nixpkgs { inherit system; }; in pkgs.mkShell { buildInputs = [ pkgs.bazel pkgs.curl ]; }; }); } ```
$ mkdir example && cd example
$ # copy flake.nix into directory
$ nix develop -i
$ sh <(curl https://raw.githubusercontent.com/tweag/rules_haskell/master/start)
$ bazel run //:example
Error ``` Starting local Bazel server and connecting to it... Loading: Loading: Loading: 0 packages loaded Analyzing: target //:example (1 packages loaded, 0 targets configured) DEBUG: /home/jonathan/.cache/bazel/_bazel_jonathan/7c28c4ae27345253884c3695ec67b112/external/rules_haskell/haskell/cabal.bzl:2390:10: Stack not found. DEBUG: /home/jonathan/.cache/bazel/_bazel_jonathan/7c28c4ae27345253884c3695ec67b112/external/rules_haskell/haskell/cabal.bzl:2391:10: Downloading Stack 2.7.5 ... Analyzing: target //:example (43 packages loaded, 137 targets configured) Analyzing: target //:example (43 packages loaded, 137 targets configured) Analyzing: target //:example (44 packages loaded, 137 targets configured) Analyzing: target //:example (44 packages loaded, 137 targets configured) Analyzing: target //:example (44 packages loaded, 137 targets configured) INFO: Analyzed target //:example (62 packages loaded, 10937 targets configured). checking cached actions INFO: Found 1 target... [0 / 54] [Prepa] action 'SolibSymlink _solib_k8/external_Srules_Uhaskell_Ughc_Ulinux_Uamd64/libHStemplate-haskell-2.19.0.0-ghc9.4.6.so' [59 / 63] HaskellCabalLibrary @stackage//:zlib; 0s linux-sandbox ERROR: /home/jonathan/.cache/bazel/_bazel_jonathan/7c28c4ae27345253884c3695ec67b112/external/stackage/BUILD.bazel:12:22: HaskellCabalLibrary @stackage//:zlib failed: (Exit 1): cabal_wrapper failed: error executing command (from target @stackage//:zlib) bazel-out/k8-opt-exec-2B5CBBC6/bin/external/rules_haskell/haskell/cabal_wrapper bazel-out/k8-fastbuild/bin/external/stackage/zlib_cabal_wrapper_args.json Use --sandbox_debug to see verbose messages from the sandbox and retain the sandbox build root for debugging Traceback (most recent call last): File "/home/jonathan/.cache/bazel/_bazel_jonathan/7c28c4ae27345253884c3695ec67b112/sandbox/linux-sandbox/19/execroot/YOUR_PROJECT_NAME_HERE/bazel-out/k8-opt-exec-2B5CBBC6/bin/external/rules_haskell/haskell/runghc.runfiles/rules_haskell/haskell/runghc.py", line 9, in subprocess.run([r.Rlocation("rules_haskell_ghc_linux_amd64/bin/runghc")] + sys.argv[1:], check=True) File "/nix/store/ffy6s77zhixlwvzprz5j0zj4ma8n8h2q-python3-3.11.8/lib/python3.11/subprocess.py", line 571, in run raise CalledProcessError(retcode, process.args, subprocess.CalledProcessError: Command '['/home/jonathan/.cache/bazel/_bazel_jonathan/7c28c4ae27345253884c3695ec67b112/sandbox/linux-sandbox/19/execroot/YOUR_PROJECT_NAME_HERE/bazel-out/k8-opt-exec-2B5CBBC6/bin/external/rules_haskell/haskell/runghc.runfiles/rules_haskell_ghc_linux_amd64/bin/runghc', '/home/jonathan/.cache/bazel/_bazel_jonathan/7c28c4ae27345253884c3695ec67b112/sandbox/linux-sandbox/19/execroot/YOUR_PROJECT_NAME_HERE/bazel-out/k8-fastbuild/bin/external/stackage/zlib-0.6.3.0/Setup.hs', 'configure', 'lib:zlib', '--verbose=0', '--user', '--with-compiler=/home/jonathan/.cache/bazel/_bazel_jonathan/7c28c4ae27345253884c3695ec67b112/sandbox/linux-sandbox/19/execroot/YOUR_PROJECT_NAME_HERE/external/rules_haskell_ghc_linux_amd64/bin/ghc', '--with-hc-pkg=/home/jonathan/.cache/bazel/_bazel_jonathan/7c28c4ae27345253884c3695ec67b112/sandbox/linux-sandbox/19/execroot/YOUR_PROJECT_NAME_HERE/external/rules_haskell_ghc_linux_amd64/bin/ghc-pkg', '--with-hsc2hs=/home/jonathan/.cache/bazel/_bazel_jonathan/7c28c4ae27345253884c3695ec67b112/sandbox/linux-sandbox/19/execroot/YOUR_PROJECT_NAME_HERE/external/rules_haskell_ghc_linux_amd64/bin/hsc2hs', '--with-ar=/nix/store/shdkxxdlpv66wl33rh9d01zfypaka1dn-gcc-wrapper-12.3.0/bin/ar', '--with-gcc=/home/jonathan/.cache/bazel/_bazel_jonathan/7c28c4ae27345253884c3695ec67b112/sandbox/linux-sandbox/19/execroot/YOUR_PROJECT_NAME_HERE/bazel-out/k8-opt-exec-2B5CBBC6/bin/external/rules_haskell/haskell/cc_wrapper-python', '--with-ld=/nix/store/shdkxxdlpv66wl33rh9d01zfypaka1dn-gcc-wrapper-12.3.0/bin/ld', '--with-strip=/nix/store/shdkxxdlpv66wl33rh9d01zfypaka1dn-gcc-wrapper-12.3.0/bin/strip', '--enable-deterministic', '--ghc-option=-pgma', '--ghc-option=/home/jonathan/.cache/bazel/_bazel_jonathan/7c28c4ae27345253884c3695ec67b112/sandbox/linux-sandbox/19/execroot/YOUR_PROJECT_NAME_HERE/bazel-out/k8-opt-exec-2B5CBBC6/bin/external/rules_haskell/haskell/cc_wrapper-python', '--ghc-option=-pgmc', '--ghc-option=/home/jonathan/.cache/bazel/_bazel_jonathan/7c28c4ae27345253884c3695ec67b112/sandbox/linux-sandbox/19/execroot/YOUR_PROJECT_NAME_HERE/bazel-out/k8-opt-exec-2B5CBBC6/bin/external/rules_haskell/haskell/cc_wrapper-python', '--ghc-option=-pgml', '--ghc-option=/home/jonathan/.cache/bazel/_bazel_jonathan/7c28c4ae27345253884c3695ec67b112/sandbox/linux-sandbox/19/execroot/YOUR_PROJECT_NAME_HERE/bazel-out/k8-opt-exec-2B5CBBC6/bin/external/rules_haskell/haskell/cc_wrapper-python', '--ghc-option=-pgmP', '--ghc-option=/home/jonathan/.cache/bazel/_bazel_jonathan/7c28c4ae27345253884c3695ec67b112/sandbox/linux-sandbox/19/execroot/YOUR_PROJECT_NAME_HERE/bazel-out/k8-opt-exec-2B5CBBC6/bin/external/rules_haskell/haskell/cc_wrapper-python -E -undef -traditional', '--ghc-option=-optc-fno-stack-protector', '--ghc-option=-pgml-supports-no-pie', '--ghc-option=-pgmlm', '--ghc-option=/nix/store/shdkxxdlpv66wl33rh9d01zfypaka1dn-gcc-wrapper-12.3.0/bin/ld', '--ghc-option=-optlm', '--ghc-option=-r', '--hsc2hs-option=-c/home/jonathan/.cache/bazel/_bazel_jonathan/7c28c4ae27345253884c3695ec67b112/sandbox/linux-sandbox/19/execroot/YOUR_PROJECT_NAME_HERE/bazel-out/k8-opt-exec-2B5CBBC6/bin/external/rules_haskell/haskell/cc_wrapper-python', '--hsc2hs-option=-l/home/jonathan/.cache/bazel/_bazel_jonathan/7c28c4ae27345253884c3695ec67b112/sandbox/linux-sandbox/19/execroot/YOUR_PROJECT_NAME_HERE/bazel-out/k8-opt-exec-2B5CBBC6/bin/external/rules_haskell/haskell/cc_wrapper-python', '--enable-relocatable', '--builddir=../../../bazel-out/k8-fastbuild/bin/external/stackage/zlib-0.6.3.0/zlib-0.6.3.0', '--prefix=/home/jonathan/.cache/bazel/_bazel_jonathan/7c28c4ae27345253884c3695ec67b112/sandbox/linux-sandbox/19/execroot/YOUR_PROJECT_NAME_HERE/bazel-out/k8-fastbuild/bin/external/stackage/zlib-0.6.3.0/_install', '--libdir=/home/jonathan/.cache/bazel/_bazel_jonathan/7c28c4ae27345253884c3695ec67b112/sandbox/linux-sandbox/19/execroot/YOUR_PROJECT_NAME_HERE/bazel-out/k8-fastbuild/bin/external/stackage/zlib-0.6.3.0/_install/zlib-0.6.3.0_iface', '--dynlibdir=/home/jonathan/.cache/bazel/_bazel_jonathan/7c28c4ae27345253884c3695ec67b112/sandbox/linux-sandbox/19/execroot/YOUR_PROJECT_NAME_HERE/bazel-out/k8-fastbuild/bin/external/stackage/zlib-0.6.3.0/_install/lib', '--libsubdir=', '--bindir=/home/jonathan/.cache/bazel/_bazel_jonathan/7c28c4ae27345253884c3695ec67b112/sandbox/linux-sandbox/19/execroot/YOUR_PROJECT_NAME_HERE/bazel-out/k8-fastbuild/bin/external/stackage/zlib-0.6.3.0/_install/bin', '--datadir=/home/jonathan/.cache/bazel/_bazel_jonathan/7c28c4ae27345253884c3695ec67b112/sandbox/linux-sandbox/19/execroot/YOUR_PROJECT_NAME_HERE/bazel-out/k8-fastbuild/bin/external/stackage/zlib-0.6.3.0/_install/zlib-0.6.3.0_data', '--datasubdir=', '--haddockdir=/home/jonathan/.cache/bazel/_bazel_jonathan/7c28c4ae27345253884c3695ec67b112/sandbox/linux-sandbox/19/execroot/YOUR_PROJECT_NAME_HERE/bazel-out/k8-fastbuild/bin/external/stackage/zlib-0.6.3.0/_install/zlib-0.6.3.0_haddock', '--htmldir=/home/jonathan/.cache/bazel/_bazel_jonathan/7c28c4ae27345253884c3695ec67b112/sandbox/linux-sandbox/19/execroot/YOUR_PROJECT_NAME_HERE/bazel-out/k8-fastbuild/bin/external/stackage/zlib-0.6.3.0/_install/zlib-0.6.3.0_haddock_html', '--package-db=clear', '--package-db=global', '--flags=-pkg-config', '--ghc-option=-w', '--ghc-option=-optF=-w', '--ghc-option=-optl-Wl,-rpath,$ORIGIN/../../../../../_solib_k8/external_Srules_Uhaskell_Ughc_Ulinux_Uamd64', '--ghc-option=-optl-Wl,-rpath,$ORIGIN/../../../../../_solib_k8/_U@zlib.dev_S_S_Czlib___Uexternal_Szlib.dev', '--extra-include-dirs=../../../external/zlib.dev', '--extra-include-dirs=../../../bazel-out/k8-fastbuild/bin/external/zlib.dev', '--extra-lib-dirs=../../../bazel-out/k8-fastbuild/bin/_solib_k8/_U@zlib.dev_S_S_Czlib___Uexternal_Szlib.dev', '--package-db=/home/jonathan/.cache/bazel/_bazel_jonathan/7c28c4ae27345253884c3695ec67b112/sandbox/linux-sandbox/19/execroot/YOUR_PROJECT_NAME_HERE/bazel-out/k8-fastbuild/bin/external/stackage/zlib-0.6.3.0/_install/zlib-0.6.3.0.conf.d']' died with . Traceback (most recent call last): File "/home/jonathan/.cache/bazel/_bazel_jonathan/7c28c4ae27345253884c3695ec67b112/sandbox/linux-sandbox/19/execroot/YOUR_PROJECT_NAME_HERE/bazel-out/k8-opt-exec-2B5CBBC6/bin/external/rules_haskell/haskell/cabal_wrapper.runfiles/rules_haskell/haskell/private/cabal_wrapper.py", line 301, in run([runghc] + runghc_args + [setup, "configure", \ File "/home/jonathan/.cache/bazel/_bazel_jonathan/7c28c4ae27345253884c3695ec67b112/sandbox/linux-sandbox/19/execroot/YOUR_PROJECT_NAME_HERE/bazel-out/k8-opt-exec-2B5CBBC6/bin/external/rules_haskell/haskell/cabal_wrapper.runfiles/rules_haskell/haskell/private/cabal_wrapper.py", line 69, in run subprocess.run(cmd, check=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE, *args, **kwargs) File "/nix/store/ffy6s77zhixlwvzprz5j0zj4ma8n8h2q-python3-3.11.8/lib/python3.11/subprocess.py", line 571, in run raise CalledProcessError(retcode, process.args, subprocess.CalledProcessError: Command '['/home/jonathan/.cache/bazel/_bazel_jonathan/7c28c4ae27345253884c3695ec67b112/sandbox/linux-sandbox/19/execroot/YOUR_PROJECT_NAME_HERE/bazel-out/k8-opt-exec-2B5CBBC6/bin/external/rules_haskell/haskell/runghc', '/home/jonathan/.cache/bazel/_bazel_jonathan/7c28c4ae27345253884c3695ec67b112/sandbox/linux-sandbox/19/execroot/YOUR_PROJECT_NAME_HERE/bazel-out/k8-fastbuild/bin/external/stackage/zlib-0.6.3.0/Setup.hs', 'configure', 'lib:zlib', '--verbose=0', '--user', '--with-compiler=/home/jonathan/.cache/bazel/_bazel_jonathan/7c28c4ae27345253884c3695ec67b112/sandbox/linux-sandbox/19/execroot/YOUR_PROJECT_NAME_HERE/external/rules_haskell_ghc_linux_amd64/bin/ghc', '--with-hc-pkg=/home/jonathan/.cache/bazel/_bazel_jonathan/7c28c4ae27345253884c3695ec67b112/sandbox/linux-sandbox/19/execroot/YOUR_PROJECT_NAME_HERE/external/rules_haskell_ghc_linux_amd64/bin/ghc-pkg', '--with-hsc2hs=/home/jonathan/.cache/bazel/_bazel_jonathan/7c28c4ae27345253884c3695ec67b112/sandbox/linux-sandbox/19/execroot/YOUR_PROJECT_NAME_HERE/external/rules_haskell_ghc_linux_amd64/bin/hsc2hs', '--with-ar=/nix/store/shdkxxdlpv66wl33rh9d01zfypaka1dn-gcc-wrapper-12.3.0/bin/ar', '--with-gcc=/home/jonathan/.cache/bazel/_bazel_jonathan/7c28c4ae27345253884c3695ec67b112/sandbox/linux-sandbox/19/execroot/YOUR_PROJECT_NAME_HERE/bazel-out/k8-opt-exec-2B5CBBC6/bin/external/rules_haskell/haskell/cc_wrapper-python', '--with-ld=/nix/store/shdkxxdlpv66wl33rh9d01zfypaka1dn-gcc-wrapper-12.3.0/bin/ld', '--with-strip=/nix/store/shdkxxdlpv66wl33rh9d01zfypaka1dn-gcc-wrapper-12.3.0/bin/strip', '--enable-deterministic', '--ghc-option=-pgma', '--ghc-option=/home/jonathan/.cache/bazel/_bazel_jonathan/7c28c4ae27345253884c3695ec67b112/sandbox/linux-sandbox/19/execroot/YOUR_PROJECT_NAME_HERE/bazel-out/k8-opt-exec-2B5CBBC6/bin/external/rules_haskell/haskell/cc_wrapper-python', '--ghc-option=-pgmc', '--ghc-option=/home/jonathan/.cache/bazel/_bazel_jonathan/7c28c4ae27345253884c3695ec67b112/sandbox/linux-sandbox/19/execroot/YOUR_PROJECT_NAME_HERE/bazel-out/k8-opt-exec-2B5CBBC6/bin/external/rules_haskell/haskell/cc_wrapper-python', '--ghc-option=-pgml', '--ghc-option=/home/jonathan/.cache/bazel/_bazel_jonathan/7c28c4ae27345253884c3695ec67b112/sandbox/linux-sandbox/19/execroot/YOUR_PROJECT_NAME_HERE/bazel-out/k8-opt-exec-2B5CBBC6/bin/external/rules_haskell/haskell/cc_wrapper-python', '--ghc-option=-pgmP', '--ghc-option=/home/jonathan/.cache/bazel/_bazel_jonathan/7c28c4ae27345253884c3695ec67b112/sandbox/linux-sandbox/19/execroot/YOUR_PROJECT_NAME_HERE/bazel-out/k8-opt-exec-2B5CBBC6/bin/external/rules_haskell/haskell/cc_wrapper-python -E -undef -traditional', '--ghc-option=-optc-fno-stack-protector', '--ghc-option=-pgml-supports-no-pie', '--ghc-option=-pgmlm', '--ghc-option=/nix/store/shdkxxdlpv66wl33rh9d01zfypaka1dn-gcc-wrapper-12.3.0/bin/ld', '--ghc-option=-optlm', '--ghc-option=-r', '--hsc2hs-option=-c/home/jonathan/.cache/bazel/_bazel_jonathan/7c28c4ae27345253884c3695ec67b112/sandbox/linux-sandbox/19/execroot/YOUR_PROJECT_NAME_HERE/bazel-out/k8-opt-exec-2B5CBBC6/bin/external/rules_haskell/haskell/cc_wrapper-python', '--hsc2hs-option=-l/home/jonathan/.cache/bazel/_bazel_jonathan/7c28c4ae27345253884c3695ec67b112/sandbox/linux-sandbox/19/execroot/YOUR_PROJECT_NAME_HERE/bazel-out/k8-opt-exec-2B5CBBC6/bin/external/rules_haskell/haskell/cc_wrapper-python', '--enable-relocatable', '--builddir=../../../bazel-out/k8-fastbuild/bin/external/stackage/zlib-0.6.3.0/zlib-0.6.3.0', '--prefix=/home/jonathan/.cache/bazel/_bazel_jonathan/7c28c4ae27345253884c3695ec67b112/sandbox/linux-sandbox/19/execroot/YOUR_PROJECT_NAME_HERE/bazel-out/k8-fastbuild/bin/external/stackage/zlib-0.6.3.0/_install', '--libdir=/home/jonathan/.cache/bazel/_bazel_jonathan/7c28c4ae27345253884c3695ec67b112/sandbox/linux-sandbox/19/execroot/YOUR_PROJECT_NAME_HERE/bazel-out/k8-fastbuild/bin/external/stackage/zlib-0.6.3.0/_install/zlib-0.6.3.0_iface', '--dynlibdir=/home/jonathan/.cache/bazel/_bazel_jonathan/7c28c4ae27345253884c3695ec67b112/sandbox/linux-sandbox/19/execroot/YOUR_PROJECT_NAME_HERE/bazel-out/k8-fastbuild/bin/external/stackage/zlib-0.6.3.0/_install/lib', '--libsubdir=', '--bindir=/home/jonathan/.cache/bazel/_bazel_jonathan/7c28c4ae27345253884c3695ec67b112/sandbox/linux-sandbox/19/execroot/YOUR_PROJECT_NAME_HERE/bazel-out/k8-fastbuild/bin/external/stackage/zlib-0.6.3.0/_install/bin', '--datadir=/home/jonathan/.cache/bazel/_bazel_jonathan/7c28c4ae27345253884c3695ec67b112/sandbox/linux-sandbox/19/execroot/YOUR_PROJECT_NAME_HERE/bazel-out/k8-fastbuild/bin/external/stackage/zlib-0.6.3.0/_install/zlib-0.6.3.0_data', '--datasubdir=', '--haddockdir=/home/jonathan/.cache/bazel/_bazel_jonathan/7c28c4ae27345253884c3695ec67b112/sandbox/linux-sandbox/19/execroot/YOUR_PROJECT_NAME_HERE/bazel-out/k8-fastbuild/bin/external/stackage/zlib-0.6.3.0/_install/zlib-0.6.3.0_haddock', '--htmldir=/home/jonathan/.cache/bazel/_bazel_jonathan/7c28c4ae27345253884c3695ec67b112/sandbox/linux-sandbox/19/execroot/YOUR_PROJECT_NAME_HERE/bazel-out/k8-fastbuild/bin/external/stackage/zlib-0.6.3.0/_install/zlib-0.6.3.0_haddock_html', '--package-db=clear', '--package-db=global', '--flags=-pkg-config', '--ghc-option=-w', '--ghc-option=-optF=-w', '--ghc-option=-optl-Wl,-rpath,$ORIGIN/../../../../../_solib_k8/external_Srules_Uhaskell_Ughc_Ulinux_Uamd64', '--ghc-option=-optl-Wl,-rpath,$ORIGIN/../../../../../_solib_k8/_U@zlib.dev_S_S_Czlib___Uexternal_Szlib.dev', '--extra-include-dirs=../../../external/zlib.dev', '--extra-include-dirs=../../../bazel-out/k8-fastbuild/bin/external/zlib.dev', '--extra-lib-dirs=../../../bazel-out/k8-fastbuild/bin/_solib_k8/_U@zlib.dev_S_S_Czlib___Uexternal_Szlib.dev', '--package-db=/home/jonathan/.cache/bazel/_bazel_jonathan/7c28c4ae27345253884c3695ec67b112/sandbox/linux-sandbox/19/execroot/YOUR_PROJECT_NAME_HERE/bazel-out/k8-fastbuild/bin/external/stackage/zlib-0.6.3.0/_install/zlib-0.6.3.0.conf.d']' returned non-zero exit status 1. Target //:example failed to build Use --verbose_failures to see the command lines of failed build steps. INFO: Elapsed time: 83.659s, Critical Path: 1.32s INFO: 60 processes: 42 internal, 18 linux-sandbox. FAILED: Build did NOT complete successfully ERROR: Build failed. Not running target ```

Expected behavior

The build to succeed.

Environment

Additional context

jonathanlking commented 1 month ago

Apologies if I'm doing something very obviously wrong/stupid, but I've stared at the error message for a while now and it isn't making much sense to me!

avdv commented 1 month ago

Hi @jonathanlking,

I can reproduce the issue inside of the nix dev shell. This seems to be a problem with ghc using the glibc from nix:

# gdb /root/.cache/bazel/_bazel_root/35a3e53a80b7147c6d4c8f9a2593f914/external/rules_haskell_ghc_linux_amd64/lib/bin/ghc
(No debugging symbols found in /root/.cache/bazel/_bazel_root/35a3e53a80b7147c6d4c8f9a2593f914/external/rules_haskell_ghc_linux_amd64/lib/bin/ghc)
(gdb) run --interactive                                                               
Starting program: /root/.cache/bazel/_bazel_root/35a3e53a80b7147c6d4c8f9a2593f914/external/rules_haskell_ghc_linux_amd64/lib/bin/ghc --interactive
warning: Error disabling address space randomization: Function not implemented
[Thread debugging using libthread_db enabled]                                
Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".
[New Thread 0x7e4e84800640 (LWP 145212)]                                              
[New Thread 0x7e4e83e00640 (LWP 145213)]                                              
[New Thread 0x7e4e83400640 (LWP 145214)]                                              
[New Thread 0x7e4e82a00640 (LWP 145215)]                                              
GHCi, version 9.4.6: https://www.haskell.org/ghc/  :? for help
[Detaching after vfork from child process 145216]                                                                                                                            
[Detaching after vfork from child process 145221]                              

Thread 1 "ghc" received signal SIGSEGV, Segmentation fault.                           
0x0000000000027e70 in ?? ()                                                           
(gdb) bt                                                                              
#0  0x0000000000027e70 in ?? ()                                                                                                                                              
#1  0x00007e4e8d9b547e in call_init (l=<optimized out>, argc=argc@entry=2, argv=argv@entry=0x7ffcf5074f58, env=env@entry=0x7ffcf5074f70) at ./elf/dl-init.c:70
#2  0x00007e4e8d9b5568 in call_init (env=0x7ffcf5074f70, argv=0x7ffcf5074f58, argc=2, l=<optimized out>) at ./elf/dl-init.c:33
#3  _dl_init (main_map=0x2123430, argc=2, argv=0x7ffcf5074f58, env=0x7ffcf5074f70) at ./elf/dl-init.c:117                                   
#4  0x00007e4e8560daf5 in __GI__dl_catch_exception (exception=<optimized out>, operate=<optimized out>, args=<optimized out>) at ./elf/dl-error-skeleton.c:182
#5  0x00007e4e8d9bcff6 in dl_open_worker (a=0x7ffcf50704f0) at ./elf/dl-open.c:808
#6  dl_open_worker (a=a@entry=0x7ffcf50704f0) at ./elf/dl-open.c:771
#7  0x00007e4e8560da98 in __GI__dl_catch_exception (exception=<optimized out>, operate=<optimized out>, args=<optimized out>) at ./elf/dl-error-skeleton.c:208
#8  0x00007e4e8d9bd34e in _dl_open (file=<optimized out>, mode=-2147483647, caller_dlopen=0x7e4e857c4adb <internal_dlopen+43>, nsid=-2, argc=2, argv=<optimized out>, 
    env=0x7ffcf5074f70) at ./elf/dl-open.c:883       
#9  0x00007e4e8552963c in dlopen_doit (a=a@entry=0x7ffcf5070760) at ./dlfcn/dlopen.c:56
#10 0x00007e4e8560da98 in __GI__dl_catch_exception (exception=exception@entry=0x7ffcf50706c0, operate=<optimized out>, args=<optimized out>)                                 
    at ./elf/dl-error-skeleton.c:208                                                                                                                                         
#11 0x00007e4e8560db63 in __GI__dl_catch_error (objname=0x7ffcf5070718, errstring=0x7ffcf5070720, mallocedp=0x7ffcf5070717, operate=<optimized out>, args=<optimized out>)
    at ./elf/dl-error-skeleton.c:227     
#12 0x00007e4e8552912e in _dlerror_run (operate=<optimized out>, args=<optimized out>) at ./dlfcn/dlerror.c:138                                                              
#13 0x00007e4e855296c8 in dlopen_implementation (dl_caller=<optimized out>, mode=1, 
    file=0x7ffcf50707f8 "/nix/store/j0by58xwyc66f884x0q8rpzvgpwvjmf2-glibc-2.38-77/lib/libc.so.6") at ./dlfcn/dlopen.c:71
#14 ___dlopen (file=file@entry=0x7ffcf50707f8 "/nix/store/j0by58xwyc66f884x0q8rpzvgpwvjmf2-glibc-2.38-77/lib/libc.so.6", mode=mode@entry=1) at ./dlfcn/dlopen.c:81
#15 0x00007e4e857c4adb in internal_dlopen (dll_name=0x7ffcf50707f8 "/nix/store/j0by58xwyc66f884x0q8rpzvgpwvjmf2-glibc-2.38-77/lib/libc.so.6") at rts/Linker.c:601
#16 0x00007e4e857c5557 in addDLL (dll_name=<optimized out>) at rts/Linker.c:769                                                                                              
#17 0x00007e4e87be92c7 in ghcizm9zi4zi6_GHCiziObjLink_czuaddDLL_info ()                                                                                                      
   from /root/.cache/bazel/_bazel_root/35a3e53a80b7147c6d4c8f9a2593f914/external/rules_haskell_ghc_linux_amd64/lib/bin/../lib/x86_64-linux-ghc-9.4.6/libHSghci-9.4.6-ghc9.4.6
.so                                                                                   
#18 0x0000004200419498 in ?? ()                                                                                                                                              
#19 0x0000000000000000 in ?? ()

Setting LD_LIBRARY_PATH helps a bit, but fails later with a different error:

# LD_LIBRARY_PATH=/lib/x86_64-linux-gnu/ $(bazel info output_base)/external/rules_haskell_ghc_linux_amd64/lib/bin/ghc --interactive
GHCi, version 9.4.6: https://www.haskell.org/ghc/  :? for help
/nix/store/yisjp6hkqc1qz8lmgnc0dklx0hgg9w2x-bash-5.2-p15/bin/bash: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.36' not found (required by /nix/store/yisjp6hkqc1qz8lmgnc0dklx0hgg9w2x-bash-5.2-p15/bin/bash)
/nix/store/yisjp6hkqc1qz8lmgnc0dklx0hgg9w2x-bash-5.2-p15/bin/bash: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.38' not found (required by /nix/store/yisjp6hkqc1qz8lmgnc0dklx0hgg9w2x-bash-5.2-p15/bin/bash)
`gcc' failed in phase `gcc'. (Exit code: 1)

It seems running ghc from a bindist is not really supported inside of a nix shell... (at least when you want to mix toolchains from the system and ones from nix)

jonathanlking commented 1 month ago

@avdv thank you so much for the investigation and explanation šŸ™

I think this might be a case of "user error", rather than an issue with rules_haskell, so maybe it's fine to close? If you think there's a good place to document this, I'd happily open a PR, but hopefully this issue will provide some context if anyone runs into the same problem šŸ¤ž.

avdv commented 1 month ago

I think this might be a case of "user error", rather than an issue with rules_haskell, so maybe it's fine to close?

Yes, I think there is not much we can do in rules_haskell in this case, but the compiler should not crash. Maybe it is just a bad combination of glibc versions / incompatible libraries that causes it...

In general, it would be desirable that this works but combining non-nix ghc with nix provided tools is definitely in the not-well-tested area. Lets keep this open to have it visible for others trying the same thing.