erlang_ls
erlang_ls copied to clipboard
Server crashes in code-server container
Describe the bug LSP crashes when running in the coder-server container
To Reproduce
-
Pull and run the docker image
-
In the container, install Erlang and rebar3
# dependencies
sudo apt-get update
sudo apt-get install erlang
curl https://s3.amazonaws.com/rebar3/rebar3 -o rebar3
sudo install rebar3 /usr/local/bin/rebar3
rm rebar3
- In the container, clone and build the project
git clone https://github.com/erlang-ls/erlang_ls
rebar3 escriptize
rebar3 as dap escriptize
- In the container, start the LSP
escript _build/default/bin/erlang_ls
Expected behavior The LSP should start successfully
Actual behavior Server crashes, it shows
[2023-03-10T08:34:06.667733+00:00] [error] Supervisor: {local,els_sup}. Context: start_error. Reason: {{badmatch,{error,enoent}},[{els_snippets_server,ensure_dir,1,[{file,"/home/coder/erlang_ls/apps/els_lsp/src/els_snippets_server.erl"},{line,146}]},{els_snippets_server,custom_snippets,0,[{file,"/home/coder/erlang_ls/apps/els_lsp/src/els_snippets_server.erl"},{line,132}]},{els_snippets_server,load_snippets,0,[{file,"/home/coder/erlang_ls/apps/els_lsp/src/els_snippets_server.erl"},{line,91}]},{els_snippets_server,init,1,[{file,"/home/coder/erlang_ls/apps/els_lsp/src/els_snippets_server.erl"},{line,70}]},{gen_server,init_it,2,[{file,"gen_server.erl"},{line,417}]},{gen_server,init_it,6,[{file,"gen_server.erl"},{line,385}]},{proc_lib,init_p_do_apply,3,[{file,"proc_lib.erl"},{line,226}]}]}. Offender: id=els_snippets_server,pid=undefined. [supervisor:start_children/2 L363] <0.137.0>
[2023-03-10T08:34:06.668020+00:00] [error] crasher: initial call: els_snippets_server:init/1, pid: <0.146.0>, registered_name: [], error: {{badmatch,{error,enoent}},[{els_snippets_server,ensure_dir,1,[{file,"/home/coder/erlang_ls/apps/els_lsp/src/els_snippets_server.erl"},{line,146}]},{els_snippets_server,custom_snippets,0,[{file,"/home/coder/erlang_ls/apps/els_lsp/src/els_snippets_server.erl"},{line,132}]},{els_snippets_server,load_snippets,0,[{file,"/home/coder/erlang_ls/apps/els_lsp/src/els_snippets_server.erl"},{line,91}]},{els_snippets_server,init,1,[{file,"/home/coder/erlang_ls/apps/els_lsp/src/els_snippets_server.erl"},{line,70}]},{gen_server,init_it,2,[{file,"gen_server.erl"},{line,417}]},{gen_server,init_it,6,[{file,"gen_server.erl"},{line,385}]},{proc_lib,init_p_do_apply,3,[{file,"proc_lib.erl"},{line,226}]}]}, ancestors: [els_sup,<0.136.0>], message_queue_len: 0, messages: [], links: [<0.137.0>], dictionary: [], trap_exit: false, status: running, heap_size: 1598, stack_size: 28, reductions: 7507; neighbours: [proc_lib:crash_report/4 L525] <0.146.0>
[2023-03-10T08:34:06.669091+00:00] [error] crasher: initial call: application_master:init/4, pid: <0.135.0>, registered_name: [], exit: {{{shutdown,{failed_to_start_child,els_snippets_server,{{badmatch,{error,enoent}},[{els_snippets_server,ensure_dir,1,[{file,"/home/coder/erlang_ls/apps/els_lsp/src/els_snippets_server.erl"},{line,146}]},{els_snippets_server,custom_snippets,0,[{file,"/home/coder/erlang_ls/apps/els_lsp/src/els_snippets_server.erl"},{line,132}]},{els_snippets_server,load_snippets,0,[{file,"/home/coder/erlang_ls/apps/els_lsp/src/els_snippets_server.erl"},{line,91}]},{els_snippets_server,init,1,[{file,"/home/coder/erlang_ls/apps/els_lsp/src/els_snippets_server.erl"},{line,70}]},{gen_server,init_it,2,[{file,"gen_server.erl"},{line,417}]},{gen_server,init_it,6,[{file,"gen_server.erl"},{line,385}]},{proc_lib,init_p_do_apply,3,[{file,"proc_lib.erl"},{line,226}]}]}}},{els_app,start,[normal,[]]}},[{application_master,init,4,[{file,"application_master.erl"},{line,138}]},{proc_lib,init_p_do_apply,3,[{file,"proc_lib.erl"},{line,226}]}]}, ancestors: [<0.134.0>], message_queue_len: 1, messages: [{'EXIT',<0.136.0>,normal}], links: [<0.134.0>,<0.44.0>], dictionary: [], trap_exit: true, status: running, heap_size: 1598, stack_size: 28, reductions: 311; neighbours: [proc_lib:crash_report/4 L525] <0.135.0>
{"Kernel pid terminated",application_controller,"{application_start_failure,els_lsp,{{shutdown,{failed_to_start_child,els_snippets_server,{{badmatch,{error,enoent}},[{els_snippets_server,ensure_dir,1,[{file,\"/home/coder/erlang_ls/apps/els_lsp/src/els_snippets_server.erl\"},{line,146}]},{els_snippets_server,custom_snippets,0,[{file,\"/home/coder/erlang_ls/apps/els_lsp/src/els_snippets_server.erl\"},{line,132}]},{els_snippets_server,load_snippets,0,[{file,\"/home/coder/erlang_ls/apps/els_lsp/src/els_snippets_server.erl\"},{line,91}]},{els_snippets_server,init,1,[{file,\"/home/coder/erlang_ls/apps/els_lsp/src/els_snippets_server.erl\"},{line,70}]},{gen_server,init_it,2,[{file,\"gen_server.erl\"},{line,417}]},{gen_server,init_it,6,[{file,\"gen_server.erl\"},{line,385}]},{proc_lib,init_p_do_apply,3,[{file,\"proc_lib.erl\"},{line,226}]}]}}},{els_app,start,[normal,[]]}}}"}
Kernel pid terminated (application_controller) ({application_start_failure,els_lsp,{{shutdown,{failed_to_start_child,els_snippets_server,{{badmatch,{error,enoent}},[{els_snippets_server,ensure_dir,1,[
Crash dump is being written to: erl_crash.dump...done
Workaround
Remove custom_snippets/0
in load_snippets/0
in the file apps/els_lsp/src/els_snippets_server.erl
(should delete custom_snippets/0
and ensure_dir/1
as well)
-spec load_snippets() -> ok.
load_snippets() ->
init_snippets_table(),
% [insert_snippet(S) || S <- builtin_snippets() ++ custom_snippets()],
[insert_snippet(S) || S <- builtin_snippets()],
ok.
Context
-
erlang_ls
version (tag/sha): 0.46.2 - Editor used: VSCode
- LSP client used: VSCode