elixir-lsp / elixir-ls

A frontend-independent IDE "smartness" server for Elixir. Implements the "Language Server Protocol" standard and provides debugger support via the "Debug Adapter Protocol"
https://elixir-lsp.github.io/elixir-ls/
Apache License 2.0
1.47k stars 194 forks source link

Stdlib checks can halt the proces #950

Closed lukaszsamson closed 2 months ago

lukaszsamson commented 1 year ago

Something broke in macOS and any attempt to list files in /home would hang the process, even ls. And the process would not respond to signals, even kill -9. Turns out macOS maps /home to autofs which dynamically mounts network shares on first access, blocking the process until the share is ready. Rebooting macOS did fix the broken automountd service but revealed a few issues. ElixirLS During launch the language server hung in check_elixir_sources checking the source path of /home/build/elixir/lib/elixir/lib/enum.ex . (Elixir installed by asdf from builds.hex.pm). A) The trio of check functions are simply axillary warnings for the user, not essential for LS init. These could be moved out to an async task with a timeout. Mind you hanging on file access should be a rare problem (but confusing). And I’m not sure if the task would hang or the entire BEAM.

Reported on slack by @thetamind

We need to revise all cases when files outside of the project root are accessed (e.g. definition provider). We need to make sure to use raw file API. Hanging erlang file server would affect the whole beam vm

lukaszsamson commented 2 months ago

This does not seem as a common issue. Unless more users experience this I'll keep this closed