Inaccurate windows stacktrace printer
Nobody has claimed this yet.
- Dominant language
- JavaScript
- Stars
- 122k
- Forks
- 37.3k
- Avg merge
- 4d 2h
- Merged PRs (30d)
- 283
Description
Version
v20.11.1
Platform
Microsoft Windows NT 10.0.19045.0 x64
Subsystem
debug util
What steps will reproduce the bug?
One line quick reproduction:
$ node --max-heap-size=10 -e 'var idx = 0; while (true) {global[idx++] = new Array(10_000_000) }'
How often does it reproduce? Is there a required condition?
Always
What is the expected behavior? Why is that the expected behavior?
Expected stack trace:
1: 00007FF73361E1CB node::DumpNativeBacktrace+155 [D:\dev\nodejs\node\src\debug_utils.cc]:L322
2: 00007FF733554C24 node::OOMErrorHandler+324 [D:\dev\nodejs\node\src\node_errors.cc]:L621
3: 00007FF73483A5D1 v8::Utils::ReportOOMFailure+33 [D:\dev\nodejs\node\deps\v8\src\api\api.cc]:L350
4: 00007FF734821E96 v8::internal::V8::FatalProcessOutOfMemory+694 [D:\dev\nodejs\node\deps\v8\src\api\api.cc]:L302
5: 00007FF7345952B0 v8::internal::Heap::FatalProcessOutOfMemory+32 [D:\dev\nodejs\node\deps\v8\src\heap\heap.cc]:L6314
6: 00007FF734590CFD v8::internal::Heap::CollectGarbage+1229 [D:\dev\nodejs\node\deps\v8\src\heap\heap.cc]:L1967
7: 00007FF7345AFEC4 v8::internal::HeapAllocator::AllocateRawWithLightRetrySlowPath+2084 [D:\dev\nodejs\node\deps\v8\src\heap\heap-allocator.cc]:L108
8: 00007FF7345B0B5A v8::internal::HeapAllocator::AllocateRawWithRetryOrFailSlowPath+90 [D:\dev\nodejs\node\deps\v8\src\heap\heap-allocator.cc]:L124
9: 00007FF7345C092D v8::internal::Factory::AllocateRaw+541 [D:\dev\nodejs\node\deps\v8\src\heap\factory.cc]:L284
10: 00007FF7345DDA1C v8::internal::FactoryBase<v8::internal::Factory>::NewFixedArray+108 [D:\dev\nodejs\node\deps\v8\src\heap\factory-base.cc]:L172
What do you see instead?
Actual stack trace:
1: 00007FF73D0971AB node::SetCppgcReference+16075
2: 00007FF73D00DCC6 v8::base::CPU::num_virtual_address_bits+79190
3: 00007FF73D00FED5 v8::base::CPU::num_virtual_address_bits+87909
4: 00007FF73DA7F061 v8::Isolate::ReportExternalAllocationLimitReached+65
5: 00007FF73DA687F8 v8::Function::Experimental_IsNopFunction+1336
6: 00007FF73D8CA120 v8::Platform::SystemClockTimeMillis+659328
7: 00007FF73D8C71A8 v8::Platform::SystemClockTimeMillis+647176
8: 00007FF73D8DC4BA v8::Platform::SystemClockTimeMillis+733978
9: 00007FF73D8DCD37 v8::Platform::SystemClockTimeMillis+736151
10: 00007FF73D8E596E v8::Platform::SystemClockTimeMillis+772046
Additional information
Only reproducible on Windows release build downloaded from https://nodejs.org/download/ and https://nodejs.org/dist/. Local .\vcbuild.bat build can output correct stacktrace.
This is not related to https://github.com/nodejs/node/pull/50849 since that only released in v20.12.0. This problem can reproduce on v20.11.1 and previous versions.
/cc @joyeecheung
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start by running the provided out-of-memory command with the downloaded Windows release build, then compare its output with a local .\vcbuild.bat build. Inspect src/debug_utils.cc and the stack-trace behavior around the reported node::DumpNativeBacktrace location. Done means the Windows release build prints the expected symbols, function names, source paths, and line numbers.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- cpp, javascript, nodejs
- Domain
- devtools, operating-systems
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Active
- Clarity
- Mostly clear
- Newbie friendliness
- 48/100