erlang-ls / erlang_ls

The Erlang Language Server
https://erlang-ls.github.io/
Apache License 2.0
620 stars 136 forks source link

Server crashes in code-server container #1428

Open haohanyang opened 1 year ago

haohanyang commented 1 year ago

Describe the bug LSP crashes when running in the coder-server container

To Reproduce

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)
```erl
-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