Commit 4587349
Add ci-crash-dump skill for debugging CI test crashes (#12)
* Add ci-crash-dump skill for debugging CI test crashes
Adds a skill to the dotnet-dnceng plugin for downloading and debugging
crash dumps from CI test failures in dotnet repositories. The skill covers:
- Finding crashed work items from a PR or build via the ci-analysis script
- Querying the Helix API for dump artifacts and identifying crashes by
exit code (Windows NTSTATUS codes, Unix signals)
- Downloading dumps and runtime binaries from Helix
- Debugging with dotnet-dump (managed), cdb (native/Windows), or
lldb (native/Linux/macOS)
- OS compatibility matrix for cross-platform dump analysis
- Guidance on NativeAOT, Cross DAC, internal jobs, and mobile/WASM
limitations
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* Address review feedback: multi-crash, runfo fallback, analysis guidance
- Clarify script reference is from this plugin's ci-analysis skill
- Stop and redirect to ci-analysis if no dump files found
- Multiple crashes: list them and ask user which to investigate
- runfo is fallback when Files URIs are inaccessible, not alternative
- Archive extraction covers .zip and .tar.gz
- NativeAOT identified by CI job name containing 'NativeAOT'
- After loading dump: correlate with PR changes, don't stop at backtrace
- Expired artifacts: report to user instead of just 'download promptly'
- Internal jobs: report and hand off (agent can't get tokens)
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* Add symbol server guidance for managed and native debugging
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* Add native binary version metadata guidance for crash analysis
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* Address testing feedback: crashreport.json, macOS compat, cross-DAC discovery
- Highlight .crashreport.json files as primary data source for macOS crashes
- Prioritize direct download of crash artifacts before full payload
- Be honest that macOS Mach-O dumps won't work with dotnet-dump cross-platform
- Explain how to search AzDO artifacts for CrossDac binaries
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* Require including resolved call stack in crash analysis report
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* Require exit code, exception details, and stack in crash report
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* Support issue-based workflow: find linked builds from issue comments
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* Require PR/build link and existing issue search in crash report
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* Address Windows testing feedback: console log stacks, DAC version, duplicate dumps, AzDO expiry
- Console log often has symbolicated stacks from Helix crash handler (cdb)
- dotnet-dump DAC version mismatch: add error code and --prerelease update
- Duplicate dumps: WER vs createdump, (1) variant more reliable for SOS
- AzDO builds expire too, not just Helix artifacts
- Issue entry point: check body + comments, start with newest build
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* Console log: only skip dump download if stacks have resolved symbols
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* Always do independent analysis, don't just repeat existing stacks
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* Fix cdb.exe discovery: search common paths instead of relying on PATH
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* Add dotnet-symbol guidance for resolving stripped Linux native frames
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* Address review feedback: fix dotnet-dump version guidance and CODEOWNERS ordering
- Replace invalid '<major>.*' version specifier with exact version example
- Reorder CODEOWNERS to list @lewing before @danmoseley for consistency
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* Clarify how to determine dotnet-dump version from payload
Explain that the runtime major version comes from the payload's
shared/Microsoft.NETCore.App/<version>/ directory, and show how to
find and install a matching dotnet-dump version from NuGet.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* Address review: duplicate dumps note applies to Linux too
Update the duplicate dumps guidance to cover both Windows and Linux,
since Linux CI also produces duplicate crash dumps (e.g., core.1000.33
and coredump.33.dmp for the same crash).
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* Clarify which dump to prefer on each platform
On Windows prefer the createdump variant (the (1) file). On Linux
prefer coredump.*.dmp (createdump) over core.* (kernel core dump).
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* Address PR review feedback: step ordering, lldb/SOS clarity, Unicode, script path
- Step 2: reference console log via Get-CIStatus.ps1 output, not Details endpoint
- lldb section: clarify SOS plugin commands work inside lldb
- Capitalize Unicode
- Script path: reference by skill name, not relative path
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* Expand lldb native commands: bt, bt all, frame variable
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* Add DAC version mismatch fallback guidance and cdb discovery improvements
- When dotnet-dump DAC loading fails, recommend 'modules -v' as first
diagnostic step (works without DAC, reveals runtime paths)
- Add guidance for unreleased .NET versions where no matching dotnet-dump
package exists: skip directly to cdb instead of searching feeds
- Position cdb as a fallback for DAC mismatch, not just native crashes
- Add MSIX package discovery snippet (Get-AppxPackage) for finding cdb.exe
- Document MSIX sandbox limitation: copy dumps to %TEMP% if cdb can't
access the original path
- Add 'No CLR runtime found' as an additional DAC mismatch error message
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* Use relative path for Get-CIStatus.ps1 references
Address review feedback: use ../ci-analysis/scripts/Get-CIStatus.ps1
instead of bare Get-CIStatus.ps1 so the script path is unambiguous.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* Address hoyosjs PR feedback: crash attribution, console log scope, crashreport coverage
- Crashes can be attributed to individual tests, not just entire work items;
a single work item can have multiple crashes (e.g., RemoteExecutor)
- Console log cdb/crash stacks are runtime-specific, not all repos; stacks
alone may be insufficient for corruption or xunit-caught exceptions
- .crashreport.json files are generated on both macOS and Linux, not just macOS
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* Address remaining hoyosjs feedback: dotnet-dump backwards compat, 20-day expiry
- Simplify dotnet-dump version guidance: it's backwards compatible, so
just install latest from dotnet-tools feed
- Fix Helix artifact expiry from ~30 days to 20 days
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
---------
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>1 parent 8c856f3 commit 4587349
File tree
2 files changed
+280
-0
lines changed- .github
- plugins/dotnet-dnceng/skills/ci-crash-dump
2 files changed
+280
-0
lines changed| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
6 | 6 | | |
7 | 7 | | |
8 | 8 | | |
| 9 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
| 23 | + | |
| 24 | + | |
| 25 | + | |
| 26 | + | |
| 27 | + | |
| 28 | + | |
| 29 | + | |
| 30 | + | |
| 31 | + | |
| 32 | + | |
| 33 | + | |
| 34 | + | |
| 35 | + | |
| 36 | + | |
| 37 | + | |
| 38 | + | |
| 39 | + | |
| 40 | + | |
| 41 | + | |
| 42 | + | |
| 43 | + | |
| 44 | + | |
| 45 | + | |
| 46 | + | |
| 47 | + | |
| 48 | + | |
| 49 | + | |
| 50 | + | |
| 51 | + | |
| 52 | + | |
| 53 | + | |
| 54 | + | |
| 55 | + | |
| 56 | + | |
| 57 | + | |
| 58 | + | |
| 59 | + | |
| 60 | + | |
| 61 | + | |
| 62 | + | |
| 63 | + | |
| 64 | + | |
| 65 | + | |
| 66 | + | |
| 67 | + | |
| 68 | + | |
| 69 | + | |
| 70 | + | |
| 71 | + | |
| 72 | + | |
| 73 | + | |
| 74 | + | |
| 75 | + | |
| 76 | + | |
| 77 | + | |
| 78 | + | |
| 79 | + | |
| 80 | + | |
| 81 | + | |
| 82 | + | |
| 83 | + | |
| 84 | + | |
| 85 | + | |
| 86 | + | |
| 87 | + | |
| 88 | + | |
| 89 | + | |
| 90 | + | |
| 91 | + | |
| 92 | + | |
| 93 | + | |
| 94 | + | |
| 95 | + | |
| 96 | + | |
| 97 | + | |
| 98 | + | |
| 99 | + | |
| 100 | + | |
| 101 | + | |
| 102 | + | |
| 103 | + | |
| 104 | + | |
| 105 | + | |
| 106 | + | |
| 107 | + | |
| 108 | + | |
| 109 | + | |
| 110 | + | |
| 111 | + | |
| 112 | + | |
| 113 | + | |
| 114 | + | |
| 115 | + | |
| 116 | + | |
| 117 | + | |
| 118 | + | |
| 119 | + | |
| 120 | + | |
| 121 | + | |
| 122 | + | |
| 123 | + | |
| 124 | + | |
| 125 | + | |
| 126 | + | |
| 127 | + | |
| 128 | + | |
| 129 | + | |
| 130 | + | |
| 131 | + | |
| 132 | + | |
| 133 | + | |
| 134 | + | |
| 135 | + | |
| 136 | + | |
| 137 | + | |
| 138 | + | |
| 139 | + | |
| 140 | + | |
| 141 | + | |
| 142 | + | |
| 143 | + | |
| 144 | + | |
| 145 | + | |
| 146 | + | |
| 147 | + | |
| 148 | + | |
| 149 | + | |
| 150 | + | |
| 151 | + | |
| 152 | + | |
| 153 | + | |
| 154 | + | |
| 155 | + | |
| 156 | + | |
| 157 | + | |
| 158 | + | |
| 159 | + | |
| 160 | + | |
| 161 | + | |
| 162 | + | |
| 163 | + | |
| 164 | + | |
| 165 | + | |
| 166 | + | |
| 167 | + | |
| 168 | + | |
| 169 | + | |
| 170 | + | |
| 171 | + | |
| 172 | + | |
| 173 | + | |
| 174 | + | |
| 175 | + | |
| 176 | + | |
| 177 | + | |
| 178 | + | |
| 179 | + | |
| 180 | + | |
| 181 | + | |
| 182 | + | |
| 183 | + | |
| 184 | + | |
| 185 | + | |
| 186 | + | |
| 187 | + | |
| 188 | + | |
| 189 | + | |
| 190 | + | |
| 191 | + | |
| 192 | + | |
| 193 | + | |
| 194 | + | |
| 195 | + | |
| 196 | + | |
| 197 | + | |
| 198 | + | |
| 199 | + | |
| 200 | + | |
| 201 | + | |
| 202 | + | |
| 203 | + | |
| 204 | + | |
| 205 | + | |
| 206 | + | |
| 207 | + | |
| 208 | + | |
| 209 | + | |
| 210 | + | |
| 211 | + | |
| 212 | + | |
| 213 | + | |
| 214 | + | |
| 215 | + | |
| 216 | + | |
| 217 | + | |
| 218 | + | |
| 219 | + | |
| 220 | + | |
| 221 | + | |
| 222 | + | |
| 223 | + | |
| 224 | + | |
| 225 | + | |
| 226 | + | |
| 227 | + | |
| 228 | + | |
| 229 | + | |
| 230 | + | |
| 231 | + | |
| 232 | + | |
| 233 | + | |
| 234 | + | |
| 235 | + | |
| 236 | + | |
| 237 | + | |
| 238 | + | |
| 239 | + | |
| 240 | + | |
| 241 | + | |
| 242 | + | |
| 243 | + | |
| 244 | + | |
| 245 | + | |
| 246 | + | |
| 247 | + | |
| 248 | + | |
| 249 | + | |
| 250 | + | |
| 251 | + | |
| 252 | + | |
| 253 | + | |
| 254 | + | |
| 255 | + | |
| 256 | + | |
| 257 | + | |
| 258 | + | |
| 259 | + | |
| 260 | + | |
| 261 | + | |
| 262 | + | |
| 263 | + | |
| 264 | + | |
| 265 | + | |
| 266 | + | |
| 267 | + | |
| 268 | + | |
| 269 | + | |
| 270 | + | |
| 271 | + | |
| 272 | + | |
| 273 | + | |
| 274 | + | |
| 275 | + | |
| 276 | + | |
| 277 | + | |
| 278 | + | |
| 279 | + | |
0 commit comments