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

CodeQL Analysis crash with out of memory #1641

Open
unional opened this issue Apr 10, 2023 · 6 comments
Open

CodeQL Analysis crash with out of memory #1641

unional opened this issue Apr 10, 2023 · 6 comments

Comments

@unional
Copy link

unional commented Apr 10, 2023

https://github.com/unional/async-fp/actions/runs/4653860071/jobs/8235098420

[2023-04-10 02:21:17] [build-stdout] Extracting /home/runner/work/async-fp/async-fp/packages/gizmo/ts/define.define_deps.spec.ts
  [2023-04-10 02:43:15] [build-stderr] <--- Last few GCs --->
  [2023-04-10 02:43:15] [build-stderr] [2032:0x6de5530]  1319634 ms: Mark-sweep 3160.3 (3390.9) -> 3143.5 (3389.8) MB, 2799.8 / 0.0 ms  (average mu = 0.119, current mu = 0.046) allocation failure; scavenge might not succeed
  [2023-04-10 02:43:15] [build-stderr] [2032:0x6de5530]  1319773 ms: Scavenge 3159.3 (3389.8) -> 3144.1 (3389.8) MB, 20.2 / 0.0 ms  (average mu = 0.119, current mu = 0.046) allocation failure; 
  [2023-04-10 02:43:15] [build-stderr] <--- JS stacktrace --->
  [2023-04-10 02:43:15] [build-stderr] FATAL ERROR: Ineffective mark-compacts near heap limit Allocation failed - JavaScript heap out of memory
  [2023-04-10 02:43:15] [build-stderr]  1: 0xb7b3e0 node::Abort() [node]
  [2023-04-10 02:43:15] [build-stderr]  2: 0xa8c8aa  [node]
  [2023-04-10 02:43:15] [build-stderr]  3: 0xd69100 v8::Utils::ReportOOMFailure(v8::internal::Isolate*, char const*, bool) [node]
  [2023-04-10 02:43:15] [build-stderr]  4: 0xd694a7 v8::internal::V8::FatalProcessOutOfMemory(v8::internal::Isolate*, char const*, bool) [node]
  [2023-04-10 02:43:15] [build-stderr]  5: 0xf46ba5  [node]
  [2023-04-10 02:43:15] [build-stderr]  6: 0xf47aa8 v8::internal::Heap::RecomputeLimits(v8::internal::GarbageCollector) [node]
  [2023-04-10 02:43:15] [build-stderr]  7: 0xf57fb3  [node]
  [2023-04-10 02:43:15] [build-stderr]  8: 0xf58e28 v8::internal::Heap::CollectGarbage(v8::internal::AllocationSpace, v8::internal::GarbageCollectionReason, v8::GCCallbackFlags) [node]
  [2023-04-10 02:43:15] [build-stderr]  9: 0xf3378e v8::internal::HeapAllocator::AllocateRawWithLightRetrySlowPath(int, v8::internal::AllocationType, v8::internal::AllocationOrigin, v8::internal::AllocationAlignment) [node]
  [2023-04-10 02:43:15] [build-stderr] 10: 0xf34b57 v8::internal::HeapAllocator::AllocateRawWithRetryOrFailSlowPath(int, v8::internal::AllocationType, v8::internal::AllocationOrigin, v8::internal::AllocationAlignment) [node]
  [2023-04-10 02:43:15] [build-stderr] 11: 0xf15d2a v8::internal::Factory::NewFillerObject(int, v8::internal::AllocationAlignment, v8::internal::AllocationType, v8::internal::AllocationOrigin) [node]
  [2023-04-10 02:43:15] [build-stderr] 12: 0x12dacdf v8::internal::Runtime_AllocateInYoungGeneration(int, unsigned long*, v8::internal::Isolate*) [node]
  [2023-04-10 02:43:15] [build-stderr] 13: 0x1707b79  [node]
  [2023-04-10 02:43:16] [build-stderr] Exception while extracting /home/runner/work/async-fp/async-fp/packages/gizmo/ts/define.define_deps.spec.ts.
  [2023-04-10 02:43:16] [build-stderr] The TypeScript parser wrapper crashed, possibly from running out of memory.
  [2023-04-10 02:43:16] [build-stderr] 	at com.semmle.ts.extractor.TypeScriptParser.getExceptionFromMalformedResponse(TypeScriptParser.java:413)
  [2023-04-10 02:43:16] [build-stderr] 	at com.semmle.ts.extractor.TypeScriptParser.talkToParserWrapper(TypeScriptParser.java:381)
  [2023-04-10 02:43:16] [build-stderr] 	at com.semmle.ts.extractor.TypeScriptParser.parse(TypeScriptParser.java:451)
  [2023-04-10 02:43:16] [build-stderr] 	at com.semmle.js.extractor.TypeScriptExtractor.extract(TypeScriptExtractor.java:24)
  [2023-04-10 02:43:16] [build-stderr] 	at com.semmle.js.extractor.FileExtractor.extractContents(FileExtractor.java:547)
  [2023-04-10 02:43:16] [build-stderr] 	at com.semmle.js.extractor.FileExtractor.extract(FileExtractor.java:454)
  [2023-04-10 02:43:16] [build-stderr] 	at com.semmle.js.extractor.AutoBuild.doExtract(AutoBuild.java:1234)
  [2023-04-10 02:43:16] [build-stderr] 	at com.semmle.js.extractor.AutoBuild.extract(AutoBuild.java:1220)
  [2023-04-10 02:43:16] [build-stderr] 	at com.semmle.js.extractor.AutoBuild.extractTypeScriptFiles(AutoBuild.java:1173)
  [2023-04-10 02:43:16] [build-stderr] 	at com.semmle.js.extractor.AutoBuild.extractTypeScript(AutoBuild.java:1051)
  [2023-04-10 02:43:16] [build-stderr] 	at com.semmle.js.extractor.AutoBuild.extractSource(AutoBuild.java:752)
  [2023-04-10 02:43:16] [build-stderr] 	at com.semmle.js.extractor.AutoBuild.run(AutoBuild.java:459)
  [2023-04-10 02:43:16] [build-stderr] 	at com.semmle.js.extractor.AutoBuild.main(AutoBuild.java:1329)
  Error: 4-10 02:43:16] [ERROR] Spawned process exited abnormally (code 1; tried to run: [/opt/hostedtoolcache/CodeQL/2.12.6-20230403/x[64](https://github.com/unional/async-fp/actions/runs/4653860071/jobs/8235098420#step:5:65)/codeql/javascript/tools/autobuild.sh])

This tends to happen on TypeScript project.

I have also seen this on type-plus

And a workaround is to ignore the spec files.

@unional
Copy link
Author

unional commented Apr 10, 2023

https://github.com/unional/async-fp/actions/runs/4654029005/jobs/8235410528

[2023-04-10 02:56:10] [build-stdout] Extracting /home/runner/work/async-fp/async-fp/packages/gizmo/ts/define.ts
  [2023-04-10 03:16:38] [build-stderr] <--- Last few GCs --->
  [2023-04-10 03:16:38] [build-stderr] [1970:0x6fc9530]  1228465 ms: Mark-sweep 3160.7 (3392.3) -> 3142.9 (3390.8) MB, 2723.0 / 0.0 ms  (average mu = 0.110, current mu = 0.094) allocation failure; scavenge might not succeed
  [2023-04-10 03:16:38] [build-stderr] [1970:0x6fc9530]  1228604 ms: Scavenge 31[58](https://github.com/unional/async-fp/actions/runs/4654029005/jobs/8235410528#step:5:59).7 (3390.8) -> 3143.5 (3390.8) MB, 24.3 / 0.0 ms  (average mu = 0.110, current mu = 0.094) allocation failure; 
  [2023-04-10 03:16:38] [build-stderr] [1970:0x6fc9530]  1228[69](https://github.com/unional/async-fp/actions/runs/4654029005/jobs/8235410528#step:5:70)9 ms: Scavenge 3158.7 (3390.8) -> 3144.0 (3391.0) MB, 21.4 / 0.0 ms  (average mu = 0.110, current mu = 0.094) allocation failure; 
  [2023-04-10 03:16:38] [build-stderr] <--- JS stacktrace --->
  [2023-04-10 03:16:38] [build-stderr] FATAL ERROR: Ineffective mark-compacts near heap limit Allocation failed - JavaScript heap out of memory
  [2023-04-10 03:16:38] [build-stderr]  1: 0xb7b3e0 node::Abort() [node]
  [2023-04-10 03:16:38] [build-stderr]  2: 0xa8c8aa  [node]
  [2023-04-10 03:16:38] [build-stderr]  3: 0xd69100 v8::Utils::ReportOOMFailure(v8::internal::Isolate*, char const*, bool) [node]
  [2023-04-10 03:16:38] [build-stderr]  4: 0xd694a7 v8::internal::V8::FatalProcessOutOfMemory(v8::internal::Isolate*, char const*, bool) [node]
  [2023-04-10 03:16:38] [build-stderr]  5: 0xf46ba5  [node]
  [2023-04-10 03:16:38] [build-stderr]  6: 0xf47aa8 v8::internal::Heap::RecomputeLimits(v8::internal::GarbageCollector) [node]
  [2023-04-10 03:16:38] [build-stderr]  7: 0xf57fb3  [node]
  [2023-04-10 03:16:38] [build-stderr]  8: 0xf58e28 v8::internal::Heap::CollectGarbage(v8::internal::AllocationSpace, v8::internal::GarbageCollectionReason, v8::GCCallbackFlags) [node]
  [2023-04-10 03:16:38] [build-stderr]  9: 0xf3378e v8::internal::HeapAllocator::AllocateRawWithLightRetrySlowPath(int, v8::internal::AllocationType, v8::internal::AllocationOrigin, v8::internal::AllocationAlignment) [node]
  [2023-04-10 03:16:38] [build-stderr] 10: 0xf34b57 v8::internal::HeapAllocator::AllocateRawWithRetryOrFailSlowPath(int, v8::internal::AllocationType, v8::internal::AllocationOrigin, v8::internal::AllocationAlignment) [node]
  [2023-04-10 03:16:38] [build-stderr] 11: 0xf15d2a v8::internal::Factory::NewFillerObject(int, v8::internal::AllocationAlignment, v8::internal::AllocationType, v8::internal::AllocationOrigin) [node]
  [2023-04-10 03:16:38] [build-stderr] 12: 0x12dacdf v8::internal::Runtime_AllocateInYoungGeneration(int, unsigned long*, v8::internal::Isolate*) [node]
  [2023-04-10 03:16:38] [build-stderr] 13: 0x1[70](https://github.com/unional/async-fp/actions/runs/4654029005/jobs/8235410528#step:5:71)7b79  [node]
  [2023-04-10 03:16:38] [build-stderr] Exception while extracting /home/runner/work/async-fp/async-fp/packages/gizmo/ts/define.ts.
  [2023-04-10 03:16:38] [build-stderr] The TypeScript parser wrapper crashed, possibly from running out of memory.

here is a case that the actual code getting out of memory

@adityasharad
Copy link
Contributor

Thanks for reporting. I agree with you that ignoring the spec files is the best workaround, using the paths-ignore property.

We'll take a closer look at the problematic file itself, but in the meantime, please try that workaround to keep your workflow unblocked.
Link to the problematic spec file: https://github.com/unional/async-fp/blob/main/packages/gizmo/ts/define.define_deps.spec.ts

@unional
Copy link
Author

unional commented Apr 10, 2023

Thanks, for the last one, the out of memory comes from the actual code. So in this case, I can't ignore it using paths-ignore (well, I can, just meaning I'm not going to check that file(s))

Link to the problematic file: https://github.com/unional/async-fp/blob/main/packages/gizmo/ts/define.ts

The issue is likely caused by analyzing the types, which they are in this file:
https://github.com/unional/async-fp/blob/main/packages/gizmo/ts/types.ts

@adityasharad
Copy link
Contributor

Oh yes good point: you will have to ignore all 3 files to avoid the error. Give that a try; I've passed this on to our JavaScript analysis team to investigate the crash itself.

@cooljeanius
Copy link

cooljeanius commented Feb 13, 2024

It would be nice if the action printed additional information when it runs out of memory like this (like: what the limit is, how to increase it, or how to reduce your usage to avoid hitting it, etc.)

@cooljeanius
Copy link

It would be nice if the action printed additional information when it runs out of memory like this (like: what the limit is, how to increase it, or how to reduce your usage to avoid hitting it, etc.)

Update: it appears that it now does this; @unional if you could try running the job again and seeing if there are any additional messages, that might be helpful

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

3 participants