ci: broaden recurrent failure diagnostics #8
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
| 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 |