haskell / haskell/haskell-language-server

error while loading shared libraries: libHSinteger-gmp-1.1-ghc9.4.8.so: cannot open shared object file: No such file or directory

Open
#3,905 3 comments 0 reactions 0 assignees View on GitHub
bindists type: support
Dominant language
Haskell
Stars
3k
Forks
455
Avg merge
3d 21h
Merged PRs (30d)
13

Description

## Your environment

- Host machine
- Debian 12
- Emacs 28.2 (installed via nix package manager)
- eglot
- VM
- Debian 12
- stack 2.13.1
- Haskell project with GHC 9.4.8
- HLS 2.5.0.0 installed via ghcup

## What's wrong?

I'm working in Emacs running on the host over SSH (via emacs tramp-mode), editing files on the VM. When I try to start eglot, the Eglot buffer shows:

```
[stderr] 2023-12-16T14:14:07.984860Z | Debug | executing command: stack exec ghc -- --print-libdir
[internal] Sat Dec 16 16:14:08 2023:
(:message "Connection state changed" :change "exited abnormally with code 127\n")

----------b---y---e---b---y---e----------
[stderr] /usr/bin/haskell-language-server-9.4.8: error while loading shared libraries: libHSinteger-gmp-1.1-ghc9.4.8.so: cannot open shared object file: No such file or directory
```

However when I execute HLS from the cli in the VM it runs normally and just waits for JSON input.

This might be a problem in Tramp, but I'd very much appreciate any hints, what HLS is doing when it fails and where to find the code in HLS that fails.

When I lookup `ldd ldd haskell-language-server-9.4.8` it says: "not a dynamic executable". So there must be some code somewhere in HLS that tries to dynamically load shared libraries and for some reason does not get the path right when called by Tramp.

Contributor guide

No contributing guide indexed for this repository

Research direction

Start by reproducing the Eglot-over-Tramp launch using `stack exec ghc -- --print-libdir` and the reported `/usr/bin/haskell-language-server-9.4.8` command on the listed Debian environments. Compare that with running HLS directly in the VM and inspect the `ldd` output. Done means identifying why the Tramp-launched server cannot find `libHSinteger-gmp-1.1-ghc9.4.8.so` and documenting or fixing the launch path.

Written by the indexing model from the issue text.

Assessment

Tech stack
emacs, haskell
Domain
developer-experience, tooling
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Quiet
Clarity
Needs clarification
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.