Skip to content

Segfault on big multi-package project #578

Closed
@Vlix

Description

@Vlix

Subject of the issue

After adding a work-around for the following issue [ #481 ] I've found that any building of our production code results in the following in the VSCode OUTPUT:
Connection to server got closed. Server will not be restarted.
and when running haskell-language-server --debug:
Segmentation fault (core dumped)

I've still not found a smallest reproduceable set of files and seeing as this is production code, can't share everything verbatim. I'll try to obfuscate any mentions in the logs and still share them. I can answer any specific questions probably, but can't give literal code.

Your environment

haskell-language-server version: 0.5.1.0 (GHC: 8.8.3) (PATH: ~/.config/Code/User/globalStorage/haskell.haskell/haskell-language-server-0.5.1-linux-8.8.3) (GIT hash: e3fe0e7546aa91e44cc56cfe8ec078a026cf533a)
Tool versions found on the $PATH
cabal:		3.0.0.0
stack:		2.3.3
ghc:		8.0.2

HLS used in VSCode

stack.yaml:
resolver: lts-16.10 # GHC 8.8.3
packages:
- package1
- package2
- package3
- package4
- package5
- package6
- package7-ex
- package8-ex
- package9
- package10
- package11
- package12
- package13
- package14
- package15
- package16

extra-deps:
  - dependent-sum-0.4
  - ekg-core-0.1.1.7
  - uuid-quasi-0.1.0.1
  - git: https://github.com/{someuser}/{somepackage}.git
    commit: "{somehash}"
  - git: https://github.com/{someuser}/{somepackage}.git
    commit: "{somehash}"
  - git: https://github.com/{someuser}/{somepackage}.git
    commit: "{somehash}"
  - git: https://github.com/{someuser}/{somepackage}.git
    commit: "{somehash}"
  - git: [email protected]:{someuser}/{somepackage}.git
    commit: "{somehash}"
  - git: [email protected]:{someuser}/{somepackage}.git
    commit: "{somehash}"
  - git: [email protected]:{someuser}/{somepackage}.git
    commit: "{somehash}"
  - git: https://github.com/{someuser}/{somepackage}.git
    commit: "{somehash}"

flags: {}
extra-package-dbs: []
extra-lib-dirs: [./external-lib, ../external-lib]
allow-newer: true
hie.yaml:
cradle:
  multi:
    - path: "./ignored-package"
      config:
        cradle:
          none:
    - path: "./"
      config:
        cradle:
          stack:
            - path: "./package1/src"
              component: "package1:lib"
            - path: "./package1/test"
              component: "package1:test:package1-test"

            - path: "./package2/src"
              component: "package2:lib"
            - path: "./package2/test"
              component: "package2:test:package2-test"

            - path: "./package3/src"
              component: "package3:lib"
            - path: "./package3/test"
              component: "package3:test:package3-test"

            - path: "./package4/src"
              component: "package4:lib"
            - path: "./package4/test"
              component: "package4:test:package4-test"

            - path: "./package5/src"
              component: "package5:lib"
            - path: "./package5/app"
              component: "package5:exe:package5-exe"
            - path: "./package5/test"
              component: "package5:test:package5-test"

            - path: "./package6/src"
              component: "package6:lib"
            - path: "./package6/app"
              component: "package6:exe:package6-analyze"
            - path: "./package6/test"
              component: "package6:test:package6-test"

            - path: "./package7-ex/src"
              component: "package7-ex:lib"
            - path: "./package7-ex/app"
              component: "package7-ex:exe:package7_ex-exe"
            - path: "./package7-ex/test"
              component: "package7-ex:test:package7_ex-test"

            - path: "./package8-ex/src"
              component: "package8-ex:lib"
            - path: "./package8-ex/app"
              component: "package8-ex:exe:package8_ex-exe"
            - path: "./package8-ex/test"
              component: "package8-ex:test:package8_ex-test"

            - path: "./package9/src"
              component: "package9:lib"
            - path: "./package9/app"
              component: "package9:exe:package9-exe"
            - path: "./package9/test"
              component: "package9:test:package9-test"

            - path: "./package10/src"
              component: "package10:lib"
            - path: "./package10/app"
              component: "package10:exe:package10-exe"
            - path: "./package10/test"
              component: "package10:test:package10-test"

            - path: "./package11/src"
              component: "package11:lib"
            - path: "./package11/app"
              component: "package11:exe:package11-exe"
            - path: "./package11/test"
              component: "package11:test:package11-test"

            - path: "./package12/src"
              component: "package12:lib"
            - path: "./package12/app"
              component: "package12:exe:package12-exe"
            - path: "./package12/test"
              component: "package12:test:package12-test"

            - path: "./package13/src"
              component: "package13:lib"
            - path: "./package13/app"
              component: "package13:exe:package13-exe"
            - path: "./package13/test"
              component: "package13:test:package13-test"

            - path: "./package14/src"
              component: "package14:lib"
            - path: "./package14/app"
              component: "package14:exe:package14-exe"
            - path: "./package14/test"
              component: "package14:test:package14-test"

            - path: "./package15/src"
              component: "package15:lib"
            - path: "./package15/app"
              component: "package15:exe:package15-exe"
            - path: "./package15/test"
              component: "package15:test:package15-test"

            - path: "./package16/src"
              component: "package16:lib"
            - path: "./package16/app"
              component: "package16:exe:package16-exe"
            - path: "./package16/test"
              component: "package16:test:package16-test"

Steps to reproduce

Can't really reproduce without sharing production code...

Expected behaviour

HLS should work as expected, instead of not

Actual behaviour

After building/caching a project, HLS segfaults quickly after it starts outputting hints/errors/etc.

Include debug information

Execute in the root of your project the command haskell-language-server --debug . and paste the logs here:

Debug output:

I've generalized the different packages by numbering them and {OBFUSCATED}-ing any filenames

hls-debug-log.txt

Paste the logs from the lsp-client, e.g. for VS Code

LSP logs:

Also obfuscated enough to not show any production naming etc.

This was produced after opening one file from package1, on which almost all other packages depend, but this one only depends on outside libraries.

LSP-output-log.txt

Metadata

Metadata

Assignees

No one assigned

    Labels

    build tool: stackcan-workaroundtype: bugSomething isn't right: doesn't work as intended, documentation is missing/outdated, etc..

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions