dotnet-stack produces empty output under load

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

メンテナーはふだん 1 日以内に返信

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

評価

難易度
4/5
見積もり時間
3〜5日
初心者へのやさしさ
45/100
issue の種類
バグ
明瞭さ
おおむね明確
活発さ
静か
技術スタック
csharp
領域
cli, devtools

調査の方向性

まず、Windows 上で CPU 負荷の高い w3wp プロセスに対して dotnet-stack を使い、問題を再現します。その後、負荷が下がってから同じ呼び出しで実行した結果と比較します。空の出力が timeout またはその他の失敗に対応しているかを追跡します。完了条件は、ツールがスタック トレースを確実に報告するか、stderr にエラーを出力し、該当する場合は timeout を延長する方法があることです。

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

説明

bug

I was trying to produce stack traces of a process that was consuming a lot of CPU time. About 80% of time it produced an empty output, the remaining 20% it produced the expected list of stack-traces. Later, after the load dropped, exactly the same invocation worked reliably.

What I'd expect:

  • Ideally always produce output
  • At least output an error to stderr if it fails
  • If this is due to a timeout while waiting for the target process to send data, the ability to increase the timeout

Environment: Windows on AWS t3.large (2 vCPU, x86-64). The target process was w3wp, i.e. an ASP.NET 8 application running in IIS. dotnet-stack was running with elevated privileges. Latest version of dotnet-stack.

dotnet --info

Host:
Version: 8.0.15
Architecture: x64
Commit: 50c4cb9fc3
RID: win-x64

.NET runtimes installed:
Microsoft.AspNetCore.App 6.0.35 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App]
Microsoft.AspNetCore.App 8.0.15 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App]
Microsoft.NETCore.App 6.0.5 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
Microsoft.NETCore.App 6.0.35 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
Microsoft.NETCore.App 8.0.15 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
Microsoft.WindowsDesktop.App 6.0.5 [C:\Program Files\dotnet\shared\Microsoft.WindowsDesktop.App]
Microsoft.WindowsDesktop.App 8.0.15 [C:\Program Files\dotnet\shared\Microsoft.WindowsDesktop.App]

主要言語
C++
スター
1.3k
フォーク
407
平均マージ
21時間 5分
マージ済み PR(30日)
78

環境構築

Codespaces で開く

このプロジェクトの開発コンテナを、あなたの GitHub アカウントでブラウザ上に起動します。

  • Dockerfile・Docker Compose ファイルなし
  • プルリクエストのテンプレートなし
  • コントリビューションガイドなし

はじめの一歩

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

dotnet/diagnostics のほかの issue

dotnet/diagnostics の issue をすべて見る

似ている issue

C++ の issue をもっと見る

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

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