VS Code extension keeps trying to build Dialyzer PLT

The VS Code Elixir extension keeps reporting “Building core Dialyzer Elixir PLT. This will take a few minutes…”, and it keeps restarting.

If I look in the “Problems” tab in VS Code, it says “could not make directory (with -p) “/.mix”: permission denied.”

Why is it attempting to write to /? How can I fix it?

It also occasionally asks about installing rebar3, which is already installed. I’m assuming it’s failing for the same reason.

1 Like

which extensions?
ElixirLS has the option: “Project Dir: ubdirectory containing Mix project if not in the project root
Value must be 1 or more characters long.”.
(I had “.” in that field, had to left it blank or the extension didn’t work.)
Maybe your problem has something to do with that.

It seems that whatever starts the LS, and therefore the LS and everything it starts, has a malformed view on one of these system variables:

  • XDG_CONFIG_HOME or XDG_DATA_HOME
  • MIX_HOME
  • HOME

When you run eg mix archive.install hex phx_new from a terminal, what does happen then? In that same terminal, what are the values of these environment variable mentioned above?

It’s blank.

Works fine.

How do you start vscode?

By running code . in the terminal from within the relevant directory. I should note that this has been working fine until fairly recently.

The same problem occurs in more than one folder, incidentally. In the first, I’m using direnv and kiex to manage Elixir; in the second, it’s the system default (1.10.2).

Looking at the stack trace, it’s failing here: elixir-ls/apps/language_server/lib/language_server/dialyzer/manifest.ex at 1256038da37b2581dadb0f15c51d9cff590034ee · elixir-lsp/elixir-ls · GitHub

Which suggests that Mix.Utils.mix_home() is returning an invalid value. But if I run iex -S mix in the VS Code terminal, that function returns /home/roger/.mix, as expected.

$ code --list-extensions
amazonwebservices.aws-toolkit-vscode
arichika.previewseqdiag-vscode
benvp.vscode-hex-pm-intellisense
Blodwynn.featurehighlight
bungcip.better-toml
chrislajoie.vscode-modelines
CoenraadS.bracket-pair-colorizer
dberezin.lox-language
EFanZh.graphviz-preview
electricimp.vscode-electricimp
JakeBecker.elixir-ls
jnbt.vscode-rufo
joaompinto.asciidoctor-vscode
mathiasfrohlich.Kotlin
ms-azuretools.vscode-docker
ms-dotnettools.csharp
ms-kubernetes-tools.vscode-kubernetes-tools
ms-python.python
ms-vscode-remote.remote-containers
ms-vscode-remote.remote-ssh
ms-vscode-remote.remote-ssh-edit
ms-vscode-remote.remote-ssh-explorer
ms-vscode.cpptools
ms-vscode.Go
ms-vscode.wordcount
ms-vsliveshare.vsliveshare
mscgenjs.vscode-mscgen
pgourlain.erlang
rebornix.ruby
redhat.vscode-yaml
rust-lang.rust
serayuzgur.crates
stkb.rewrap
TomiTurtiainen.rf-intellisense
vadimcn.vscode-lldb
vscode-icons-team.vscode-icons
wingrunr21.vscode-ruby
zxh404.vscode-proto3

I’ve uninstalled and reinstalled the ElixirLS extension and it’s still doing it.

Seems like you are using the original ElixirLS extension, which is not receiving updates anymore. I don’t know if this will solve your problem, but take a look at ElixirLS Fork.

As far as I understand it, the new fork uses the same extension ID, as of quite recently.

It doesn’t. I tried a git clone of that extension directly, and filed Repeatedly fails to build core Dialyzer Elixir PLT · Issue #85 · elixir-lsp/vscode-elixir-ls · GitHub

1 Like

Fixed it. ElixirLS recently started honouring asdf configuration. A while back I switched from asdf to direnv and my asdf configuration was apparently broken, resulting in MIX_HOME=/.

I nuked ~/.asdf and it all seems OK now.