Skip to content

ci: broaden recurrent failure diagnostics #8

ci: broaden recurrent failure diagnostics

ci: broaden recurrent failure diagnostics #8

name: Diagnose recurrent Linux abort
on:
workflow_dispatch:
push:
branches:
- test/diagnose-linux-recurrent-abort
env:
MODEL_CACHE_KEY: qwen35-q8-mamba130m-q2-falconh1tiny-q2-bge-small-q4
jobs:
diagnose:
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
os: [ubuntu-22.04, ubuntu-24.04]
attempt: [1, 2, 3, 4]
name: ${{ matrix.os }}-${{ matrix.attempt }}
steps:
- uses: actions/checkout@v6
with:
submodules: recursive
- name: Set up Python
uses: actions/setup-python@v6
with:
python-version: "3.11"
cache: pip
- name: Restore model cache
uses: actions/cache@v5
with:
path: ~/.cache/huggingface/hub
key: ${{ runner.os }}-model-${{ env.MODEL_CACHE_KEY }}
- name: Show runner CPU
run: lscpu
- name: Show glibc
run: ldd --version
- name: Build package
run: |
python -m pip install --upgrade pip
python -m pip install uv
python -m uv pip install -e '.[all]' --verbose
- name: Reproduce recurrent context construction
id: recurrent
continue-on-error: true
env:
VERBOSE: "1"
run: python tests/diagnose_recurrent_context.py
- name: Reproduce full test suite
id: suite
continue-on-error: true
run: python -m pytest
- name: Install debugger after failure
if: steps.recurrent.outcome == 'failure' || steps.suite.outcome == 'failure'
run: |
sudo apt-get update
sudo apt-get install --yes --no-install-recommends --no-upgrade gdb
- name: Capture recurrent constructor backtrace
if: steps.recurrent.outcome == 'failure' || steps.suite.outcome == 'failure'
continue-on-error: true
env:
VERBOSE: "1"
run: |
gdb --batch \
-ex "set pagination off" \
-ex run \
-ex "thread apply all bt" \
--args python tests/diagnose_recurrent_context.py
- name: Fail when a reproduction failed
if: steps.recurrent.outcome == 'failure' || steps.suite.outcome == 'failure'
run: exit 1