pgourlain / vscode_erlang

Erlang support for Visual Studio Code
MIT License
129 stars 46 forks source link

Compiler detecting comments as code #132

Closed artman41 closed 4 years ago

artman41 commented 5 years ago

In the comments of a function there are strings wrapped in backticks `` and the compiler is detecting this as actual code, spewing hundreds of lines containing the following text before crashing:

/xxx/xxx/xxx/xxx/xxx/xxx/xxx/xxx.erl, function function_name/3: at line 4180: `-quote ended unexpectedly at line 4181
/xxx/xxx/xxx/xxx/xxx/xxx/xxx/xxx.erl, function function_name/3: at line 4180: `-quote ended unexpectedly at line 4181
/xxx/xxx/xxx/xxx/xxx/xxx/xxx/xxx.erl, function function_name/3: at line 4180: `-quote ended unexpectedly at line 4181
/xxx/xxx/xxx/xxx/xxx/xxx/xxx/xxx.erl, function function_name/3: at line 4180: `-quote ended unexpectedly at line 4181

I have redacted the paths and name of the function for privacy reasons but the comment block is defined in the following format, Lorem Ipsum has been substituted for the actual comment

%% @doc
%% Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vivamus posuere mattis
%% ipsum, nec tincidunt elit sodales in. Maecenas placerat leo ac egestas ullamcorper.
%%
%% Donec semper volutpat lacus, vitae gravida libero facilisis volutpat. Nam pulvinar 
%% vel mi at sagittis. Etiam ac felis nisi. Etiam aliquet et ipsum a egestas.
%%
%% Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vivamus posuere mattis
%% ipsum, nec tincidunt elit sodales in. Maecenas placerat leo ac egestas ullamcorper.
%%
%% Donec semper volutpat lacus, vitae gravida libero facilisis volutpat. Nam pulvinar 
%% vel mi at sagittis. Etiam ac felis nisi. Etiam `aliquet et ipsum` a egestas. Donec 
%% semper volutpat lacus, vitae gravida libero facilisis volutpat. Nam pulvinar vel mi 
%% at sagittis. Etiam ac felis nisi. Etiam aliquet et ipsum a egestas.
%% @end

The function itself has a -spec directly under the comment block and directly above the function header, i.e in this format

%% @doc
%% Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vivamus posuere mattis
%% ipsum, nec tincidunt elit sodales in. Maecenas placerat leo ac egestas ullamcorper.
%% @end
-spec function_name(A :: list(), B :: list(), C :: list()) -> ok.
function_name(A, B, C) -> A=B=C, ok.
artman41 commented 5 years ago

Eventually the VsCode Extension Host actually dies due to Memory Overflow

FATAL ERROR: MarkCompactCollector: semi-space copy, fallback in old gen Allocation failed - JavaScript heap out of memory
 1: node::Abort() [/usr/share/code-insiders/libnode.so]
 2: 0x7f454b6d3867 [/usr/share/code-insiders/libnode.so]
 3: 0x7f454ae13e5e [/usr/share/code-insiders/libnode.so]
 4: 0x7f454ae13de9 [/usr/share/code-insiders/libnode.so]
 5: 0x7f454ad796c2 [/usr/share/code-insiders/libnode.so]
 6: 0x7f454ad66de3 [/usr/share/code-insiders/libnode.so]
 7: 0x7f454ad6669a [/usr/share/code-insiders/libnode.so]
 8: 0x7f454ad66337 [/usr/share/code-insiders/libnode.so]
 9: 0x7f454ad85dae [/usr/share/code-insiders/libnode.so]
10: v8::internal::ItemParallelJob::Task::RunInternal() [/usr/share/code-insiders/libnode.so]
11: v8::internal::ItemParallelJob::Run(std::__1::shared_ptr<v8::internal::Counters>) [/usr/share/code-insiders/libnode.so]
12: 0x7f454ad6a33d [/usr/share/code-insiders/libnode.so]
13: 0x7f454ad69cce [/usr/share/code-insiders/libnode.so]
14: 0x7f454ad594b6 [/usr/share/code-insiders/libnode.so]
15: 0x7f454ad55c02 [/usr/share/code-insiders/libnode.so]
16: 0x7f454b233cb4 [/usr/share/code-insiders/libnode.so]
17: 0x7f454b231e70 [/usr/share/code-insiders/libnode.so]
18: 0x7f454b2309fc [/usr/share/code-insiders/libnode.so]
19: v8::internal::Factory::NewFillerObject(int, bool, v8::internal::AllocationSpace) [/usr/share/code-insiders/libnode.so]
20: 0x7f454b30c26a [/usr/share/code-insiders/libnode.so]
21: 0x254315c042dd

<--- Last few GCs --->

[26161:0xb20220a7000]  3001610 ms: Mark-sweep 2392.8 (2493.1) -> 2392.2 (2509.1) MB, 1344.4 / 0.0 ms  allocation failure scavenge might not succeed
[26161:0xb20220a7000]  3002950 ms: Mark-sweep 2392.8 (2509.1) -> 2392.6 (2509.1) MB, 1339.3 / 0.0 ms  allocation failure scavenge might not succeed
[26161:0xb20220a7000]  3004304 ms: Mark-sweep 2392.8 (2509.1) -> 2392.7 (2509.1) MB, 1353.4 / 0.0 ms  allocation failure scavenge might not succeed

<--- JS stacktrace --->
Cannot get stack trace in GC.
pgourlain commented 5 years ago

Hi,

I paste the code like this

%% @doc %% Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vivamus posuere mattis %% ipsum, nec tincidunt elit sodales in. Maecenas placerat leo ac egestas ullamcorper. %% %% Donec semper volutpat lacus, vitae gravida libero facilisis volutpat. Nam pulvinar %% vel mi at sagittis. Etiam ac felis nisi. Etiam aliquet et ipsum a egestas. %% %% Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vivamus posuere mattis %% ipsum, nec tincidunt elit sodales in. Maecenas placerat leo ac egestas ullamcorper. %% %% Donec semper volutpat lacus, vitae gravida libero facilisis volutpat. Nam pulvinar %% vel mi at sagittis. Etiam ac felis nisi. Etiamaliquet et ipsuma egestas. Donec %% semper volutpat lacus, vitae gravida libero facilisis volutpat. Nam pulvinar vel mi %% at sagittis. Etiam ac felis nisi. Etiam aliquet et ipsum a egestas. %% @end -spec function_name(A :: list(), B :: list(), C :: list()) -> ok. function_name(A, B, C) -> A=B=C, ok.

But i don't use the code insider, that i see in your stack trace.

can you reproduce on standard vscode ?