1111
1212jobs :
1313 diagnose :
14- runs-on : ubuntu-latest
14+ runs-on : ${{ matrix.os }}
1515 strategy :
1616 fail-fast : false
1717 matrix :
18- attempt : [1, 2, 3, 4, 5, 6, 7, 8]
19- name : attempt-${{ matrix.attempt }}
18+ os : [ubuntu-22.04, ubuntu-24.04]
19+ attempt : [1, 2, 3, 4]
20+ name : ${{ matrix.os }}-${{ matrix.attempt }}
2021 steps :
2122 - uses : actions/checkout@v6
2223 with :
2627 uses : actions/setup-python@v6
2728 with :
2829 python-version : " 3.11"
30+ cache : pip
2931
3032 - name : Restore model cache
3133 uses : actions/cache@v5
3638 - name : Show runner CPU
3739 run : lscpu
3840
39- - name : Show glibc before package installation
40- run : ldd --version
41-
42- - name : Install debugger without upgrading installed packages
43- run : |
44- sudo apt-get install --yes --no-install-recommends --no-upgrade gdb
45-
46- - name : Show glibc after package installation
41+ - name : Show glibc
4742 run : ldd --version
4843
4944 - name : Build package
@@ -52,17 +47,36 @@ jobs:
5247 python -m pip install uv
5348 python -m uv pip install -e '.[all]' --verbose
5449
50+ - name : Reproduce recurrent context construction
51+ id : recurrent
52+ continue-on-error : true
53+ env :
54+ VERBOSE : " 1"
55+ run : python tests/diagnose_recurrent_context.py
56+
5557 - name : Reproduce full test suite
56- id : reproduce
58+ id : suite
5759 continue-on-error : true
5860 run : python -m pytest
5961
60- - name : Capture full-suite backtrace
61- if : steps.reproduce.outcome == 'failure'
62+ - name : Install debugger after failure
63+ if : steps.recurrent.outcome == 'failure' || steps.suite.outcome == 'failure'
64+ run : |
65+ sudo apt-get update
66+ sudo apt-get install --yes --no-install-recommends --no-upgrade gdb
67+
68+ - name : Capture recurrent constructor backtrace
69+ if : steps.recurrent.outcome == 'failure' || steps.suite.outcome == 'failure'
6270 continue-on-error : true
71+ env :
72+ VERBOSE : " 1"
6373 run : |
6474 gdb --batch \
6575 -ex "set pagination off" \
6676 -ex run \
6777 -ex "thread apply all bt" \
68- --args python -m pytest
78+ --args python tests/diagnose_recurrent_context.py
79+
80+ - name : Fail when a reproduction failed
81+ if : steps.recurrent.outcome == 'failure' || steps.suite.outcome == 'failure'
82+ run : exit 1
0 commit comments