Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Denial of Service due to crash at initialization #180

Open
pvillads opened this issue Dec 23, 2020 · 1 comment
Open

Denial of Service due to crash at initialization #180

pvillads opened this issue Dec 23, 2020 · 1 comment

Comments

@pvillads
Copy link

I am using the latest version of the code add-in (0.6.7). I am editing a simple file:
-module(test).
-export([factorial/1]).

factorial(0) -> 1;
factorial(N) -> N * factorial(N-1).

I have set the erlang path specifically to C:\Program Files\erl-23.2\bin.

When the system starts it displays the following in the output window. As far as I can see, this is an almost complete denial of service: Even though the colorizer does work, none of the commands do.

erlang extension is active
using erlang binaries from path : 'C:\Program Files\erl-23.2\bin'
starting : escript.exe
c:\Users\pvillads.vscode\extensions\pgourlain.erlang-0.6.7\rebar3 compile
===> Verifying dependencies...
===> Compiling vscode_lsp
escript.exe exit code:0
using erlang binaries from path : 'C:\Program Files\erl-23.2\bin'
starting : erl
-noshell -pa src -pa ebin -s int -vscode_port 52836 -s vscode_lsp_entry start 52836
Old inliner: threshold=0 functions=[{hex,1}]
Old inliner: threshold=0 functions=[{object_key,2}]
=ERROR REPORT==== 23-Dec-2020::13:42:18.337000 ===
LSP handler error error:badarg while executing lsp_handlers:initialize(_, #{capabilities =>
#{textDocument =>
#{codeAction =>
#{codeActionLiteralSupport =>
#{codeActionKind =>
#{valueSet =>
[<<>>,
<<"quickfix">>,
<<"refactor">>,
<<"refactor.extract">>,
<<"refactor.inline">>,
<<"refactor.rewrite">>,
<<"source">>,
<<"source.organizeImports">>]}},
dynamicRegistration =>
true},
codeLens =>
#{dynamicRegistration =>
true},
colorProvider =>
#{dynamicRegistration =>
true},
completion =>
#{completionItem =>
#{commitCharactersSupport =>
true,
deprecatedSupport =>
true,
documentationFormat =>
[<<"markdown">>,
<<"plaintext">>],
preselectSupport =>
true,
snippetSupport =>
true},
completionItemKind =>
#{valueSet =>
[1,
2,
3,
4,
5,
6,
7,
8,
9,
10,
11,
12,
13,
14,
15,
16,
17,
18,
19,
20,
21,
22,
23,
24,
25]},
contextSupport =>
true,
dynamicRegistration =>
true},
definition =>
#{dynamicRegistration =>
true},
documentHighlight =>
#{dynamicRegistration =>
true},
documentLink =>
#{dynamicRegistration =>
true},
documentSymbol =>
#{dynamicRegistration =>
true,
hierarchicalDocumentSymbolSupport =>
true,
symbolKind =>
#{valueSet =>
[1,
2,
3,
4,
5,
6,
7,
8,
9,
10,
11,
12,
13,
14,
15,
16,
17,
18,
19,
20,
21,
22,
23,
24,
25,
26]}},
foldingRange =>
#{dynamicRegistration =>
true,
lineFoldingOnly =>
true,
rangeLimit =>
5000},
formatting =>
#{dynamicRegistration =>
true},
hover =>
#{contentFormat =>
[<<"markdown">>,
<<"plaintext">>],
dynamicRegistration =>
true},
implementation =>
#{dynamicRegistration =>
true},
onTypeFormatting =>
#{dynamicRegistration =>
true},
publishDiagnostics =>
#{relatedInformation =>
true},
rangeFormatting =>
#{dynamicRegistration =>
true},
references =>
#{dynamicRegistration =>
true},
rename =>
#{dynamicRegistration =>
true},
signatureHelp =>
#{dynamicRegistration =>
true,
signatureInformation =>
#{documentationFormat =>
[<<"markdown">>,
<<"plaintext">>]}},
synchronization =>
#{didSave =>
true,
dynamicRegistration =>
true,
willSave =>
true,
willSaveWaitUntil =>
true},
typeDefinition =>
#{dynamicRegistration =>
true}},
workspace =>
#{applyEdit =>
true,
configuration =>
true,
didChangeConfiguration =>
#{dynamicRegistration =>
true},
didChangeWatchedFiles =>
#{dynamicRegistration =>
true},
executeCommand =>
#{dynamicRegistration =>
true},
symbol =>
#{dynamicRegistration =>
true,
symbolKind =>
#{valueSet =>
[1,
2,
3,
4,
5,
6,
7,
8,
9,
10,
11,
12,
13,
14,
15,
16,
17,
18,
19,
20,
21,
22,
23,
24,
25,
26]}},
workspaceEdit =>
#{documentChanges =>
true},
workspaceFolders =>
true}},
processId =>
28432,
rootPath =>
null,
rootUri =>
null,
trace =>
<<"off">>,
workspaceFolders =>
null}), stacktrace:[{erlang,
binary_to_list,
[null],
[]},
{lsp_handlers,
initialize,
2,
[{file,
"src/lsp_handlers.erl"},
{line,
10}]},
{gen_lsp_server,
safeApply,
3,
[{file,
"src/gen_lsp_server.erl"},
{line,
26}]},
{gen_lsp_server,
do_contents,
2,
[{file,
"src/gen_lsp_server.erl"},
{line,
104}]}]

@fadushin
Copy link

fadushin commented Apr 7, 2022

I have (always?) had more or less the same issue on MacOS with most of my projects. Erlang/OTP 24 installed via Homebrew.

A BEAM process is spawned that consumes 2 cores, which I need to kill manually.

Here is the Output panel from VSCode:

erlang extension is active
using erlang binaries from path : '/usr/local/bin'
starting : escript 
/Users/fadushin/.vscode/extensions/pgourlain.erlang-0.8.4/rebar3 compile
===> Verifying dependencies...
===> Cleaning out vscode_lsp...
===> Analyzing applications...
===> Compiling vscode_lsp
escript exit code:0
using erlang binaries from path : '/usr/local/bin'
starting : erl 
-noshell -pa src -pa ebin -s int -vscode_port 49781 -s vscode_lsp_entry start 49781 
Old inliner: threshold=0 functions=[{hex,1}]
Old inliner: threshold=0 functions=[{object_key,2}]
=ERROR REPORT==== 7-Apr-2022::09:13:14.158901 ===
LSP handler error exit:{timeout,
                           {gen_server,call,
                               [gen_lsp_doc_server,get_documents]}} while executing lsp_handlers:configuration(_, [#{codeLensEnabled =>
                                                                                                                         false,
                                                                                                                     debuggerRunMode =>
                                                                                                                         <<"external">>,
                                                                                                                     eep48Help =>
                                                                                                                         true,
                                                                                                                     erlangPath =>
                                                                                                                         <<"/usr/local/bin">>,
                                                                                                                     formattingLineLength =>
                                                                                                                         100,
                                                                                                                     includePaths =>
                                                                                                                         [],
                                                                                                                     linting =>
                                                                                                                         true,
                                                                                                                     rebarBuildArgs =>
                                                                                                                         [<<"compile">>],
                                                                                                                     rebarPath =>
                                                                                                                         <<"/usr/local/bin">>,
                                                                                                                     verbose =>
                                                                                                                         false},
                                                                                                                   #{autosave =>
                                                                                                                         false,
                                                                                                                     tmpdir =>
                                                                                                                         <<"/var/folders/w4/hfd_n5wj3pz071q6m38_m_c40000gn/T">>},
                                                                                                                   #{proxy =>
                                                                                                                         <<>>,
                                                                                                                     proxyAuthorization =>
                                                                                                                         null,
                                                                                                                     proxyStrictSSL =>
                                                                                                                         true,
                                                                                                                     proxySupport =>
                                                                                                                         <<"override">>,
                                                                                                                     systemCertificates =>
                                                                                                                         true},
                                                                                                                   #{actionsPosition =>
                                                                                                                         <<"right">>,
                                                                                                                     collapseResults =>
                                                                                                                         <<"alwaysExpand">>,
                                                                                                                     exclude =>
                                                                                                                         #{'**/*.code-search' =>
                                                                                                                               true,
                                                                                                                           '**/bower_components' =>
                                                                                                                               true,
                                                                                                                           '**/node_modules' =>
                                                                                                                               true},
                                                                                                                     followSymlinks =>
                                                                                                                         true,
                                                                                                                     globalFindClipboard =>
                                                                                                                         false,
                                                                                                                     location =>
                                                                                                                         <<"sidebar">>,
                                                                                                                     maintainFileSearchCache =>
                                                                                                                         false,
                                                                                                                     maxResults =>
                                                                                                                         20000,
                                                                                                                     mode =>
                                                                                                                         <<"view">>,
                                                                                                                     quickOpen =>
                                                                                                                         #{history =>
                                                                                                                               #{filterSortOrder =>
                         
                                                                                                            <<"default">>},
                                                                                                                           includeHistory =>
                                                                                                                               true,
                                                                                                                           includeSymbols =>
                                                                                                                               false},
                                                                                                                     searchEditor =>
                                                                                                                         #{defaultNumberOfContextLines =>
                                                                                                                               1,
                                                                                                                           doubleClickBehaviour =>
                                                                                                                               <<"goToLocation">>,
                                                                                                                           reusePriorSearchConfiguration =>
                                                                                                                               false},
                                                                                                                     searchOnType =>
                                                                                                                         true,
                                                                                                                     searchOnTypeDebouncePeriod =>
                                                                                                                         300,
                                                                                                                     seedOnFocus =>
                                                                                                                         false,
                                                                                                                     seedWithNearestWord =>
                                                                                                                         false,
                                                                                                                     showLineNumbers =>
                                                                                                                         false,
                                                                                                                     smartCase =>
                                                                                                                         false,
                                                                                                                     sortOrder =>
                                                                                                                         <<"default">>,
                                                                                                                     useGlobalIgnoreFiles =>
                                                                                                                         false,
                                                                                                                     useIgnoreFiles =>
                                                                                                                         true,
                                                                                                                     usePCRE2 =>
                                                                                                                         false,
                                                                                                                     useParentIgnoreFiles =>
                                                                                                                         false,
                                                                                                                     useReplacePreview =>
                                                                                                                         true,
                                                                                                                     useRipgrep =>
                                                                                                                         true}]), stacktrace:[{gen_server,
                                                                                                                                               call,
                                                                                                                                               2,
                                                                                                                                               [{file,
                                                                                                                                                 "gen_server.erl"},
                                                                                                                                                {line,
                                                                                                                                                 239}]},
                                                                                                                                              {lsp_handlers,
                                                                                                                                               configuration,
                                                                                                                                               2,
                                                                                                                                               [{file,
                                                                                                                                                 "src/lsp_handlers.erl"},
                                                                                                                                                {line,
                                                                                                                                                 41}]},
                                                                                                                                              {gen_lsp_server,
                                                                                                                                               safeApply,
                                                                                                                                               3,
                                                                                                                                               [{file,
                                                                                                                                                 "src/gen_lsp_server.erl"},
                                                                                                                                                {line,
                                                                                                                               
                  26}]},
                                                                                                                                              {gen_lsp_server,
                                                                                                                                               do_contents,
                                                                                                                                               2,
                                                                                                                                               [{file,
                                                                                                                                                 "src/gen_lsp_server.erl"},
                                                                                                                                                {line,
                                                                                                                                                 115}]}]

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants