forked from microsoft/perfview
-
Notifications
You must be signed in to change notification settings - Fork 3
chore: sync fork with microsoft/perfview main #3
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
Merged
Merged
Changes from all commits
Commits
Show all changes
151 commits
Select commit
Hold shift + click to select a range
3aa4ea9
Fix broken links in PerfView user guide documentation (#2225)
Copilot ee7ef76
Throw exception then TdhEnumerateProviders fails, which allows lookin…
desdesdes 5cbea4f
Add AutomationProperties.Name to Process Selection DataGrid for acces…
Copilot 08d0d03
Fix focus indicator visibility for hyperlinks in dark mode and high c…
Copilot 2d397ca
Address NullReferenceException in Anti-Malware view. (#2233)
brianrob 371607f
Fix WebView2 crash on close by implementing proper disposal pattern (…
Copilot 372d5a6
Add support for native AOT gcdumps (#2242)
MichalStrehovsky cd2b0fb
Fix NVDA accessibility: Theme menu items not announcing selection sta…
Copilot 1a18dea
Extend PredefinedDynamicTraceEventParser to Support Dynamic Events fr…
Copilot e1fa2a7
Implement MSFZ symbols format support in SymbolReader (#2244)
Copilot 2e7b342
Remove uses of DefaultAzureCredential (#2255)
brianrob 415381c
Add option to hide TimeStamp columns in EventWindow View menu (#2247)
Copilot 76b6938
Fix NVDA screen reader incorrect list count for File menu separators …
Copilot 7e3cf31
Increment Versions (#2260)
brianrob 4510075
Fix unhandled exception when double-clicking in scroll bar area with …
Copilot 4cb44a7
Fix universal symbol conversion for overlapping mappings (#2252)
Copilot bc9c1c6
Fix TraceEvent.props to respect ProcessorArchitecture when RuntimeIde…
Copilot e9a2b7e
Add explanation for CodeQL suppressions. (#2263)
brianrob bb36ed7
Implement NuGet Central Package Version Management (#2262)
Copilot eeec451
More CodeQL Suppressions (#2264)
brianrob 4284608
Fix broken stacks warning for universal traces (#2268)
Copilot e7ea5b4
Fix jitted code symbols in universal traces to show assembly names in…
Copilot 9268be2
Use themed background brush for menu and filter (#2272)
JeremyKuhne 0e3b74a
Update NetTraceFormat.md (#2273)
noahfalk 3c3485e
Improve rendering and dark mode (#2274)
JeremyKuhne 45dfab9
Implement configurable symbol server authentication with /SymbolsAuth…
Copilot 51c3343
Add a themed dialog (#2276)
JeremyKuhne a8605fe
Fix regression: "Goto Item in Callers/Callees" now accumulates across…
Copilot db63c41
Fix parsing issues and add support for additional events to the Linux…
thooot 5c2f832
Fix TraceLog live session RelatedActivityID/ContainerID corruption by…
Copilot 28529df
NetTrace LabelList metadata overrides and metadata flushing (#2281)
noahfalk 13e54b6
Fix NullReferenceException in ProviderBrowser.LevelSelected when dese…
Copilot c63bac3
Bump version (#2290)
cincuranet 52cb563
Only Dispose Non-Null Handles in ETWTraceEventSource (#2291)
brianrob e30beba
Small cleanup in NettraceUniversalConverter. (#2292)
cincuranet 186e9ff
Fix hyperlink focus visibility in dark mode and improve keyboard navi…
Copilot 049ed4f
Gracefully handle invalid characters in PATH. (#2296)
cincuranet 0691921
Inventory bootstrapping (#2299)
cincuranet 18142b7
Revise NetTraceFormat.md for clarity (#2305)
noahfalk ca72672
Fix the PlatformToolsetVersion Variable in C++ Build (#2306)
brianrob 15b703d
Revise V2 field definitions in NetTraceFormat_v5.md (#2302)
noahfalk 9810dc1
Fix copying First/Last columns with pipe symbols to work in time rang…
Copilot 2326722
Increment Versions (#2311)
brianrob 638121e
Increment Versions (#2312)
brianrob 79f04f4
Add support for Boolean8 to NetTrace V6. (#2318)
noahfalk 5ebd796
Increment Versions (#2319)
brianrob 338bf05
Implement A Thread Time View for Universal Traces (#2320)
brianrob 85ba4d8
Add test validating EventPipe EventSource dispatch via GetDispatcherF…
Copilot 445faa3
Remove Incorrect Argument Description (#2323)
brianrob 5fc5e08
Increment Versions (#2324)
brianrob 0878f77
Warn users when circular buffer overflow causes missing type info in …
Copilot 93fb65a
Special-Case BitMask Parsing (#2327)
brianrob 7c9d839
Refactor PEFile and PEHeader to use ReadOnlySpan exclusively with zer…
Copilot fccab76
Fix cdbstack parser dropping last sample and missing metrics (#2329)
Copilot 39d63ed
Remove Test Workaround (#2328)
brianrob c8b103a
Add @StephenMolloy to CODEOWNERS (#2335)
Copilot c0a6db5
Add FastSerialization.Tests project with comprehensive test coverage …
Copilot 33fd4fd
Disable Azure DevOps dependabot (#2334)
Copilot 50a5ff6
Initial Issue Triage Agent (#2336)
brianrob 8e9a5be
Add regression tests for recursive call handling in CallTree (#2341)
Copilot 699501e
Fix unhandled ArgumentOutOfRangeException when exporting FlameGraph w…
Copilot 098a616
Add guidance for capturing ETW traces in Kubernetes pods (#2344)
Copilot 0eee617
Fix CS0649 warnings in TraceEvent.Tests PEFileTests.cs and Caching Bu…
Copilot de20568
Fix merge command line order in kubernetes documentation (#2346)
Copilot 896e242
Fix GetRegisteredOrEnabledProviders() documentation claiming list is …
Copilot bba3596
Fix duplicate stringTable elements in instrumentation manifest (#2347)
Copilot 7381b14
Fix Histogram.AddMetric losing values after single-bucket to array tr…
Copilot 7a795f5
Fix clipboard copy formatting based on selection dimensions in Stack …
Copilot 2dad339
Fix XML escaping in GetManifestForRegisteredProvider (#2351)
Copilot 9bc2b79
Fix Perfcollect CI Job (#2356)
brianrob b588766
Fix race condition in ProviderNameToGuid causing ERROR_INSUFFICIENT_B…
Copilot b3caefb
Bump version to 3.1.29 (#2358)
Copilot ce38a7e
doc: fix typos (#2359)
chinwobble 07a3b98
Fix SourceLink parsing to support both wildcard and exact path mappin…
ivberg 5409507
Improve Copilot Behavior (#2362)
brianrob 62ef690
Re-enable DebugAssertionTests (#2363)
Copilot 745facb
add horizontal scrolling to eventviewer (#2361)
logangeorge01 8f9eaaa
Add SHA-384 and SHA-512 hash algorithm support for PDB checksums (#2366)
Copilot 498a0bb
Bump version to 3.1.30 (#2367)
brianrob ddcaf39
Fix Debug.Assert failures exposed by ThrowingTraceListener in SpeedSc…
brianrob c89763a
Add TraceParserGen.Tests project and fix code generation bugs (#2308)
Copilot ada70c5
Update UsersGuide.htm (#2370)
AftabAnsari10662 8698727
Strip .il and .ni suffixes from TraceModuleFile.Name (#2364)
leculver d133824
Handle provider names that start with a numeric digit. (#2369)
brianrob 46f2cfa
Dispose WebView2 controls before Environment.Exit to prevent finalize…
brianrob f9873e6
Refactor GetManifestForRegisteredProvider to use XmlWriter (#2353)
Copilot 7ca5179
docs: Add investigation guidance for JIT-inlined missing stack frames…
Copilot 2cec8a6
Fix spurious BROKEN frame at top of Linux thread stacks in CPU Stacks…
Copilot 7d777af
Fix NRE in AddUniversalDynamicSymbol for invalid symbol address range…
brianrob 6b9eb26
Add missing authority parameter to log (#2379)
hoyosjs c1e00d4
Replace individual code owners with microsoft/perfview-reviewers grou…
brianrob ed427a3
Fix Dynamic Symbol Resolution for Mappings Shared Across Multiple Pro…
brianrob 9707e62
Implement Symbol Demanglers for Linux Binaries (#2383)
brianrob a3829cd
Fix NullReferenceException race condition in TraceLog.AllocLookup/Fre…
Copilot b2e719c
Add typed schema for AllocationSampled (EventID 303, .NET 10+) in Clr…
Copilot bcc0670
Add ElfSymbolModule for Parsing ELF Symbol Tables (#2384)
brianrob 9f6829b
Update BDN to latest version. (#2389)
cincuranet 83c8085
Fixed overflow when working with large dumps (#2399)
remilema 5ef79ab
Fix XamlMessageBox STA Threading Crash from Background Threads (#2400)
brianrob fec1368
Add ELF Symbol Resolution for Linux .nettrace Traces (#2397)
brianrob d42f6e0
Bump version to 3.2.0 (#2402)
brianrob 696960c
Add Missing WCF Event Templates (#2390)
brianrob 85f1ca4
Optimize nettrace-to-TraceLog Conversion (#2403)
brianrob afe5e5d
Embed missing System.Text.Json transitive dependencies in PerfView (#…
brianrob 543e9e9
Update version to 3.2.1 (#2405)
Copilot ffa46a1
Fix PDB Symbol Resolution for Unmerged Windows Traces (#2407)
brianrob 0f886d5
Upgrade Microsoft.Windows.CsWin32 to 0.3.209 (GHSA-ghhp-997w-qr28) (#…
Copilot 3d1f2f7
Enable Spectre mitigations and linker optimizations for EtwClrProfile…
139ea6a
Fix 'unhanded' / 'occured' typos in UnhandledExceptionDialog body tex…
SAY-5 bb792f0
Fix GCStats failures on dotnet trace gc-verbose collections (#2414) (…
cincuranet 2f3a001
C entrypoint fixes (#2421)
zachcmadsen e0f49b0
Bump version to 3.2.3 (#2423)
brianrob fa3ea3f
Replace PAT with WIF service connection in mirror pipeline (#2424)
missymessa e1eacef
Update CsWin32 package version (#2425)
brianrob 3b34739
Retarget native profiler builds to VS 2026 v145 (#2428)
brianrob 3162599
Stabilize XamlMessageBox UI-thread dispatch test (#2430)
brianrob 422494e
Fix incorrect field offsets when parsing ETW events with fixed-count …
Copilot f3abc55
Fix BPerf WildCopy so short copies do not write past the requested ou…
brianrob 7d2680d
Validate BPerf event record bounds
brianrob fe27fd3
Fix source-server path traversal and command injection
brianrob bc9cbe2
Validate PDB extraction target paths against the symbol directory
brianrob b1c51cb
Sanitize R2R perf map symbol paths
brianrob ad8e654
Constrain DiagSession resource extraction paths
brianrob 8440d5a
Validate PdbScope XML module paths
brianrob 3ea3634
Validate dynamic event array bounds
brianrob fa9719d
Sanitize provider names when writing dynamic manifests
brianrob a8191b0
Bounds-check StackBytesSize in EventPipe V3 event headers
brianrob 107c4bc
Bounds-check GCDynamic event payloads
brianrob a245d7f
Bound CodeView PDB filename read by IMAGE_DEBUG_DIRECTORY SizeOfData
brianrob 734cdb5
Bound PE resource name reads by the resource data directory size
brianrob 2e98051
Bounds-check TDH metadata offsets in RegisteredTraceEventParser
brianrob 69fa0e6
Bump ReleaseVersion to 3.2.4
brianrob 60c3232
Bring v3.2.4 security and reliability fixes into main (#2435)
brianrob 4239169
Fix spurious BROKEN frames on musl-based Linux stacks
brianrob 226c25a
Fix spurious BROKEN frames on musl-based Linux stacks (#2437)
brianrob 36d9a6a
Fix InMemoryCircularBuffer merge failure with large CircularMB (#2439)
cincuranet 4bd9156
Fix GC dynamic ETLX replay (#2440)
brianrob fea55d6
Enable W4 and warnings as errors for C++ projects (#2441)
brianrob 0d1fc7d
Bump ReleaseVersion to 3.2.5 (#2442)
brianrob 0759c07
Support embedded portable PDBs for managed symbol resolution (#2434)
JeremyKuhne 5e746c4
Fix StackOverflow on malformed EventPipe object type length (#2444)
brianrob 2d3da12
Fix AccessViolation on malformed MethodILToNativeMap entry count (#2445)
brianrob f3ec1b3
Fix infinite loop in LinuxPerfScriptEventParser on truncated sched_sw…
brianrob 97e8f45
Support TraceLogging formatting hints (#2443)
chwarr 7ca8ae9
Add Accessible Label To Directory Search Field
brianrob d461e1e
Align Directory Field Accessible Name
brianrob b5f4df9
Improve Keyboard Focus Indicator Contrast (#2448)
brianrob 3b8e4e6
Make PerfView help dismissible with Escape (#2450)
brianrob 935e21d
Preserve directory automation name
brianrob 54357b5
Fix main window keyboard focus order (#2449)
brianrob af22740
Add Accessible Label To Directory Search Field (#2447)
brianrob File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,5 @@ | ||
| version: 2 | ||
|
|
||
| # Disabling dependabot on Azure DevOps as this is a mirrored repo. Updates should go through github. | ||
| enable-campaigned-updates: false | ||
| enable-security-updates: false |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -1,4 +1,4 @@ | ||
| # Users referenced in this file will automatically be requested as reviewers for PRs that modify the given paths. | ||
| # See https://help.github.com/articles/about-code-owners/ | ||
|
|
||
| * @brianrob @cincuranet @leculver @mconnew @marklio | ||
| * @microsoft/perfview-reviewers |
Large diffs are not rendered by default.
Oops, something went wrong.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,70 @@ | ||
| # Copilot Instructions for PerfView | ||
|
|
||
| ## Project Overview | ||
|
|
||
| PerfView is a Windows performance-analysis tool for investigating CPU and memory issues, built on the TraceEvent library for parsing ETW and EventPipe trace data. The solution (`PerfView.sln`) contains the WPF GUI application, the cross-platform TraceEvent library, and several supporting libraries. | ||
|
|
||
| ## Architecture | ||
|
|
||
| - `src/PerfView/` — WPF GUI application (Windows-only, .NET Framework 4.7.2+, C# 7.3 features only) | ||
| - `src/TraceEvent/` — Core trace parsing library (cross-platform, targets netstandard2.0) | ||
| - `src/FastSerialization/` — Lightweight binary serialization library | ||
| - `src/MemoryGraph/` — Memory dump analysis (graph-based heap representation) | ||
| - `src/Utilities/` — Shared utility code | ||
| - `src/HeapDump*/` — Heap dump capture using ClrMD (Windows-only native interop) | ||
| - `src/EtwClrProfiler/` — Native C++ CLR profiler emitting ETW events (Windows-only) | ||
| - `src/PerfViewExtensions/` — Extensibility mechanism ("Global" project) | ||
|
|
||
| ## Build & Test | ||
|
|
||
| - **Full solution (Windows):** `build.cmd` or open `PerfView.sln` in Visual Studio 2026 with the repository `.vsconfig` components installed. Native ETWClrProfiler projects use the latest installed MSVC v145 toolset. | ||
| - **Individual projects (cross-platform via dotnet CLI):** | ||
| - `dotnet build src/TraceEvent/TraceEvent.csproj -c Debug` | ||
| - `dotnet build src/FastSerialization/FastSerialization.csproj -c Debug` | ||
| - `dotnet build src/MemoryGraph/MemoryGraph.csproj -c Debug` | ||
| - **Running tests:** `dotnet test <TestProject>.csproj -c Debug` — always use Debug configuration so assertions are active. | ||
| - `src/TraceEvent/TraceEvent.Tests/TraceEvent.Tests.csproj` | ||
| - `src/FastSerialization.Tests/FastSerialization.Tests.csproj` | ||
| - `src/LinuxTracing.Tests/LinuxTracing.Tests.csproj` | ||
| - `src/PerfView.Tests/PerfView.Tests.csproj` (Windows-only) | ||
| - `src/SymbolsAuth.Tests/SymbolsAuth.Tests.csproj` | ||
| - Tests use **xUnit**. The full test suite should complete in under 1 minute. | ||
| - NuGet uses central package management (`src/Directory.Packages.props`). Use the repo-local `Nuget.config` when restoring: `dotnet restore --configfile Nuget.config`. | ||
|
|
||
| ## C# Coding Conventions | ||
|
|
||
| Follow existing patterns — when in doubt, match the surrounding code. | ||
|
|
||
| ### Naming | ||
| - Standard .NET conventions: `PascalCase` for types, methods, and properties; `camelCase` for parameters and locals. | ||
| - Private instance fields: prefix with `m_` (e.g., `m_nodeCount`). The `_` prefix is also acceptable. | ||
| - Static fields: prefix with `s_` (e.g., `s_defaultSize`). | ||
| - No Hungarian notation. | ||
|
|
||
| ### Class Layout | ||
| - Order members for readability as a **public contract**: constructors/factories first, then properties, then methods. | ||
| - All private members go **after** all public members, wrapped in `#region private` so Visual Studio outlining (Ctrl-M Ctrl-O) collapses them. | ||
| - Fields go **together at the end** of the private region — this makes it easy to see all object state at a glance. | ||
|
|
||
| ### Comments & Documentation | ||
| - This codebase is **heavily commented** — maintain that standard. | ||
| - Public types and public members exposed outside their assembly **must** have XML doc comments (`/// <summary>`). Parameter-level docs are optional if names are descriptive. | ||
| - Private fields often need comments, especially to document invariants they maintain. | ||
| - Use inline comments to explain non-obvious logic and design decisions. | ||
|
|
||
| ### Error Handling & Assertions | ||
| - Use `Debug.Assert()` liberally to validate internal invariants — this is why tests must run in Debug configuration. | ||
| - Throw specific exceptions with descriptive messages for public API misuse. | ||
|
|
||
| ### Other Patterns | ||
| - **Type aliases** for semantic clarity: `using Address = System.UInt64;` | ||
| - **Lazy initialization** for expensive sub-objects (check for null, create on first access). | ||
| - **Reuse event objects** in TraceEvent callbacks to minimize GC pressure. | ||
|
|
||
| ## Making Changes | ||
|
|
||
| - Keep changes **minimal and focused** — complexity is the enemy (see `CONTRIBUTING.md`). | ||
| - Prefer **simplicity over cleverness**. Performance optimizations that add complexity need measurements to justify them. | ||
| - Run tests in **Debug** configuration before submitting changes. | ||
| - PerfView embeds its support DLLs into the EXE at build time, creating non-obvious build dependencies. If you see "DLL not found" errors, a normal (non-clean) rebuild usually fixes it. | ||
| - The `Global` project depends on PerfView — expect unresolved references there until PerfView builds first. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
New tests skipped in CI
Medium Severity
The new
FastSerialization.Testsproject builds asFastSerializationTests.dll, but the pipeline test assembly list only addsTraceParserGen.Tests.dll. Those new serialization tests never run in CI, so regressions in FastSerialization can ship undetected.Additional Locations (1)
src/FastSerialization.Tests/FastSerialization.Tests.csproj#L6-L7Reviewed by Cursor Bugbot for commit af22740. Configure here.