microsoft / vscode

Visual Studio Code
https://code.visualstudio.com
MIT License
163.75k stars 29.1k forks source link

[json] formatter "heap out of memory" regression #75617

Closed gvaleika closed 5 years ago

gvaleika commented 5 years ago

Steps to Reproduce:

  1. Format big JSON document (47MB). All extensions are disabled.
  2. Formatter crashes with message "Extension host terminated unexpectedly."

Tested VSCode versions 1.23.1, 1.25.1, 1.26.1, 1.27.2, 1.28.2, 1.29.1, 1.30.2, 1.31.1, 1.32.3, 1.33.1, 1.34 and they worked well. Version 1.35 introduced this "heap out of memory" crash.

Developer tools: FATAL ERROR: CALL_AND_RETRY_LAST Allocation failed - JavaScript heap out of memory 1: node::Abort() [/home/gv/opt/VSCode-linux-x64/libnode.so] 2: 0x7f130212d867 [/home/gv/opt/VSCode-linux-x64/libnode.so] 3: 0x7f1301b3104e [/home/gv/opt/VSCode-linux-x64/libnode.so] 4: 0x7f1301b30fd9 [/home/gv/opt/VSCode-linux-x64/libnode.so] 5: v8::internal::Factory::NewMap(v8::internal::InstanceType, int, v8::internal::ElementsKind, int) [/home/gv/opt/VSCode-linux-x64/libnode.so] 6: 0x7f1301b0ac6b [/home/gv/opt/VSCode-linux-x64/libnode.so] 7: 0x7f1301b0b06b [/home/gv/opt/VSCode-linux-x64/libnode.so] 8: 0x7f1301af5898 [/home/gv/opt/VSCode-linux-x64/libnode.so] 9: 0x7f1301af54df [/home/gv/opt/VSCode-linux-x64/libnode.so] 10: 0x7f1301b0cde2 [/home/gv/opt/VSCode-linux-x64/libnode.so] 11: v8::internal::LookupIterator::PrepareTransitionToDataProperty(v8::internal::Handle, v8::internal::Handle, v8::internal::PropertyAttributes, v8::internal::Object::StoreFromKeyed) [/home/gv/opt/VSCode-linux-x64/libnode.so] 12: 0x7f1301e0ba36 [/home/gv/opt/VSCode-linux-x64/libnode.so] 13: 0x7f1301e0c595 [/home/gv/opt/VSCode-linux-x64/libnode.so] 14: 0x7f1301e0c391 [/home/gv/opt/VSCode-linux-x64/libnode.so] 15: 0x7f1301e10725 [/home/gv/opt/VSCode-linux-x64/libnode.so] 16: 0x332c41b8459d

<--- Last few GCs --->

[27531:0x84906e76000] 55790 ms: Mark-sweep 1992.4 (2095.9) -> 1992.4 (2095.9) MB, 1128.2 / 0.0 ms allocation failure GC in old space requested [27531:0x84906e76000] 57030 ms: Mark-sweep 1992.4 (2095.9) -> 1992.3 (2079.9) MB, 1190.6 / 0.0 ms last resort GC in old space requested [27531:0x84906e76000] 58260 ms: Mark-sweep 1992.3 (2079.9) -> 1992.3 (2079.9) MB, 1230.3 / 0.0 ms last resort GC in old space requested

<--- JS stacktrace --->

==== JS stack trace =========================================

0: ExitFrame [pc: 0x332c41b8459d]

Security context: 0x2235565a5709 1: new constructor(aka g) [/home/gv/opt/VSCode-linux-x64/resources/app/out/vs/workbench/services/extensions/node/extensionHostProcess.js:~336] [pc=0x332c41eb11ad](this=0x1b0098daa4f1 ,e=0x1b0098daa381 ,t=0x1b0098daa439 ,n=0x1c5159c022e1 ,i=0x1c5159c022e1 ) 2...

aeschli commented 5 years ago

Do you still see this in 1.36?

gvaleika commented 5 years ago

1.36.1 still has 'Extension host terminated unexpectedly.' with FATAL ERROR: Ineffective mark-compacts near heap limit Allocation failed - JavaScript heap out of memory.

gvaleika commented 5 years ago

1.37 still crashes: extensionHost.ts:202 FATAL ERROR: Ineffective mark-compacts near heap limit Allocation failed - JavaScript heap out of memory 1: 0x5559384412b5 [/home/gv/opt/VSCode-linux-x64/code] 2: 0x55593844142a [/home/gv/opt/VSCode-linux-x64/code] 3: 0x5559350d64f1 [/home/gv/opt/VSCode-linux-x64/code] 4: 0x5559351836f2 [/home/gv/opt/VSCode-linux-x64/code] 5: 0x555935185c11 [/home/gv/opt/VSCode-linux-x64/code] 6: 0x55593518204c [/home/gv/opt/VSCode-linux-x64/code] 7: 0x555935180101 v8::internal::Heap::CollectGarbage(v8::internal::AllocationSpace, v8::internal::GarbageCollectionReason, v8::GCCallbackFlags) [/home/gv/opt/VSCode-linux-x64/code] 8: 0x55593518bc53 [/home/gv/opt/VSCode-linux-x64/code] 9: 0x555934d53325 v8::internal::Factory::NewMap(v8::internal::InstanceType, int, v8::internal::ElementsKind, int) [/home/gv/opt/VSCode-linux-x64/code]10: 0x5559351c73cd [/home/gv/opt/VSCode-linux-x64/code]11: 0x5559351c783c [/home/gv/opt/VSCode-linux-x64/code]12: 0x5559351a62c2 [/home/gv/opt/VSCode-linux-x64/code]13: 0x5559351a5b84 [/home/gv/opt/VSCode-linux-x64/code]14: 0x555934f4fda1 [/home/gv/opt/VSCode-linux-x64/code]15: 0x555935344d0e [/home/gv/opt/VSCode-linux-x64/code]<--- Last few GCs --->[12387:0x1195643d0000] 558079 ms: Mark-sweep 2037.3 (2084.2) -> 2036.9 (2083.7) MB, 1437.6 / 0.0 ms (average mu = 0.122, current mu = 0.017) allocation failure scavenge might not succeed[12387:0x1195643d0000] 559472 ms: Mark-sweep 2038.2 (2084.2) -> 2037.9 (2084.7) MB, 1382.6 / 0.0 ms (average mu = 0.065, current mu = 0.008) allocation failure scavenge might not succeed<--- JS stacktrace --->==== JS stack trace ========================================= 0: ExitFrame [pc: 0x555935344d0e]Security context: 0x228b85d229d9 1: g(aka g) [0x32b1bf7eb261] [/home/gv/opt/VSCode-linux-x64/resources/app/extensions/json-language-features/client/dist/jsonMain.js:~9] [pc=0x13bd4e2695e5](this=0x2089d0e026f1 ,0x1b91197b3221 ) 2: I(aka I) [0x32b1bf7eb861] [/home/gv/opt/VSCode-linux-x64/resources/app/extensions/json-language-features/client/dist... bootstrap-window.js:212 [uncaught exception]: Error: read ECONNRESET onUnexpectedError @ bootstrap-window.js:212 (anonymous) @ bootstrap-window.js:54 emit @ events.js:182 window.onerror @ /home/gv/opt/VSCode-linux-x64/resources/electron.asar/renderer/init.js:147 n.globals.onerror @ errorTelemetry.ts:20 bootstrap-window.js:215 Error: read ECONNRESET at Pipe.onStreamRead (internal/stream_base_commons.js:111) onUnexpectedError @ bootstrap-window.js:215 (anonymous) @ bootstrap-window.js:54 emit @ events.js:182 window.onerror @ /home/gv/opt/VSCode-linux-x64/resources/electron.asar/renderer/init.js:147 n.globals.onerror @ errorTelemetry.ts:20 events.js:167 Uncaught Error: read ECONNRESET at Pipe.onStreamRead (internal/stream_base_commons.js:111) errnoException @ internal/errors.js:313 onStreamRead @ internal/stream_base_commons.js:111 abstractExtensionService.ts:154 Extension host terminated unexpectedly. Code: null Signal: SIGABRT _onExtensionHostCrashed @ abstractExtensionService.ts:154 _onExtensionHostCrashed @ extensionService.ts:367 _onExtensionHostCrashOrExit @ abstractExtensionService.ts:146 e.onDidExit @ abstractExtensionService.ts:136 fire @ event.ts:572 _onExtHostProcessExit @ extensionHost.ts:463 _extensionHostProcess.on @ extensionHost.ts:216 emit @ events.js:182 ChildProcess._handle.onexit @ internal/child_process.js:240 notificationsAlerts.ts:40 Extension host terminated unexpectedly.

aeschli commented 4 years ago

dup of #80041