mirror of
https://github.com/astral-sh/uv.git
synced 2025-08-04 19:08:04 +00:00
Show backtraces for CI crashes (#14081)
I only just realized that we can get backtraces for crashes with `RUST_BACKTRACE: 1`, even non-panics (https://github.com/astral-sh/uv/pull/14079). This is much better than trying to analyze crash dumps.
This commit is contained in:
parent
5c1ebf902b
commit
423cfaabf5
1 changed files with 2 additions and 53 deletions
55
.github/workflows/ci.yml
vendored
55
.github/workflows/ci.yml
vendored
|
@ -14,8 +14,9 @@ env:
|
|||
CARGO_INCREMENTAL: 0
|
||||
CARGO_NET_RETRY: 10
|
||||
CARGO_TERM_COLOR: always
|
||||
RUSTUP_MAX_RETRIES: 10
|
||||
PYTHON_VERSION: "3.12"
|
||||
RUSTUP_MAX_RETRIES: 10
|
||||
RUST_BACKTRACE: 1
|
||||
|
||||
jobs:
|
||||
determine_changes:
|
||||
|
@ -295,23 +296,7 @@ jobs:
|
|||
with:
|
||||
tool: cargo-nextest
|
||||
|
||||
# Get crash dumps to debug the `exit_code: -1073741819` failures
|
||||
- name: Configure crash dumps
|
||||
if: runner.os == 'Windows'
|
||||
shell: powershell
|
||||
run: |
|
||||
$dumps = "$env:GITHUB_WORKSPACE\dumps"
|
||||
New-Item -Path $dumps -ItemType Directory -Force
|
||||
|
||||
# https://github.com/microsoft/terminal/wiki/Troubleshooting-Tips#capture-automatically
|
||||
$reg = "HKLM:\SOFTWARE\Microsoft\Windows\Windows Error Reporting\LocalDumps"
|
||||
New-Item -Path $reg -Force | Out-Null
|
||||
Set-ItemProperty -Path $reg -Name "DumpFolder" -Value $dumps
|
||||
Set-ItemProperty -Path $reg -Name "DumpType" -Value 2
|
||||
|
||||
- name: "Cargo test"
|
||||
id: test
|
||||
continue-on-error: true
|
||||
working-directory: ${{ env.UV_WORKSPACE }}
|
||||
env:
|
||||
# Avoid permission errors during concurrent tests
|
||||
|
@ -325,42 +310,6 @@ jobs:
|
|||
--workspace \
|
||||
--status-level skip --failure-output immediate-final --no-fail-fast -j 20 --final-status-level slow
|
||||
|
||||
# Get crash dumps to debug the `exit_code: -1073741819` failures (contd.)
|
||||
- name: Analyze crashes
|
||||
if: steps.test.outcome == 'failure'
|
||||
shell: powershell
|
||||
run: |
|
||||
$dumps = Get-ChildItem "$env:GITHUB_WORKSPACE\dumps\*.dmp" -ErrorAction SilentlyContinue
|
||||
if (!$dumps) { exit 0 }
|
||||
|
||||
Write-Host "Found $($dumps.Count) crash dump(s)"
|
||||
|
||||
# Download cdb if needed
|
||||
$cdb = "C:\Program Files (x86)\Windows Kits\10\Debuggers\x64\cdb.exe"
|
||||
if (!(Test-Path $cdb)) {
|
||||
# https://github.com/microsoft/react-native-windows/blob/f1570a5ef1c4fc1e78d0a0ad5af848ab91a4061c/vnext/Scripts/Analyze-Crash.ps1#L44-L56
|
||||
Invoke-WebRequest "https://go.microsoft.com/fwlink/?linkid=2173743" -OutFile "$env:TEMP\sdk.exe"
|
||||
Start-Process "$env:TEMP\sdk.exe" -ArgumentList "/features OptionId.WindowsDesktopDebuggers /quiet" -Wait
|
||||
}
|
||||
|
||||
# Analyze each dump
|
||||
foreach ($dump in $dumps) {
|
||||
Write-Host "`n=== $($dump.Name) ==="
|
||||
& $cdb -z $dump -c "!analyze -v; .ecxr; k; q" 2>&1 | Select-String -Pattern "(ExceptionCode:|SYMBOL_NAME:|IMAGE_NAME:|STACK_TEXT:)" -Context 0,2
|
||||
}
|
||||
|
||||
- name: Upload crash dumps
|
||||
if: steps.test.outcome == 'failure'
|
||||
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2
|
||||
with:
|
||||
name: crash-dumps-${{ github.run_number }}
|
||||
path: dumps/*.dmp
|
||||
if-no-files-found: ignore
|
||||
|
||||
- name: Fail if tests failed
|
||||
if: steps.test.outcome == 'failure'
|
||||
run: exit 1
|
||||
|
||||
# Separate jobs for the nightly crate
|
||||
windows-trampoline-check:
|
||||
timeout-minutes: 15
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue