nodejs / nodejs/node

Inaccurate windows stacktrace printer

オープン
#53,361 コメント 9 件 リアクション 0 件 担当者 0 名 GitHub で見る

まだ誰も着手していません。

windows
主要言語
JavaScript
スター
122k
フォーク
37.3k
平均マージ
4日 2時間
マージ済み PR(30日)
283

説明

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

コントリビューションガイド

コントリビューションガイドを開く

はじめの一歩

  1. issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
  2. 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
  3. リポジトリをフォークし、ブランチを切って変更します。
  4. issue 番号を参照したプルリクエストを送ります。

調査の方向性

まず、ダウンロードした Windows リリースビルドで、提供されている out-of-memory コマンドを実行し、その出力をローカルの .\vcbuild.bat ビルドと比較します。src/debug_utils.cc と、報告された node::DumpNativeBacktrace の位置周辺におけるスタックトレースの動作を調査します。Windows リリースビルドが期待されるシンボル、関数名、ソースパス、行番号を出力すれば完了です。

索引モデルが issue の本文から書いたものです。

評価

技術スタック
cpp, javascript, nodejs
領域
devtools, operating-systems
issue の種類
バグ
難易度
4/5
見積もり時間
3〜5日
活発さ
活発
明瞭さ
おおむね明確
初心者へのやさしさ
48/100

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。