Skip to content

debug: test pytest-xdist process isolation (--dist loadfile) #4

debug: test pytest-xdist process isolation (--dist loadfile)

debug: test pytest-xdist process isolation (--dist loadfile) #4

Workflow file for this run

name: debug-segfault
# TEMPORARY diagnostic for the CI SIGSEGV (kuzu NodeTableScanState::scanNext at ~53%).
# This variant tests PROCESS ISOLATION via pytest-xdist (--dist loadfile) — does
# spreading the suite across fresh worker processes prevent the accumulated native
# heap corruption that crashes kuzu? Delete once the fix is settled.
on:
push:
branches: [debug/segfault-gdb]
jobs:
gdb:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- uses: actions/setup-python@v5
with:
python-version: "3.11"
- name: Cache HuggingFace models
uses: actions/cache@v4
with:
path: ~/.cache/huggingface
key: hf-${{ hashFiles('**/pyproject.toml') }}-v1
restore-keys: |
hf-${{ hashFiles('**/pyproject.toml') }}-
hf-
- name: Install dependencies (+ pytest-xdist)
run: |
python -m pip install --upgrade pip
pip install -e ".[dev]" pytest-xdist
- name: Run FULL suite with pytest-xdist process isolation
continue-on-error: true
env:
JAVA_CODEBASE_RAG_RUN_HEAVY: "0"
HF_TOKEN: ${{ secrets.HF_TOKEN }}
TRANSFORMERS_CACHE: ~/.cache/huggingface
HF_HOME: ~/.cache/huggingface
PYTHONFAULTHANDLER: "1"
run: |
pytest tests -n auto --dist loadfile -v 2>&1 | tee xdist-output.log
echo "pytest-xdist finished (exit ${PIPESTATUS[0]}; 0 = all passed, 139 = SIGSEGV)"
- name: Show crash location
if: always()
run: |
echo "=== crash markers? ==="
grep -nE "Fatal Python error|Segmentation fault|received signal SIGSEGV" xdist-output.log | head || echo "NO CRASH MARKERS (good)"
echo "=== final summary lines ==="
grep -aE "[0-9]+ (passed|failed|error)|Segmentation|pytest-xdist finished" xdist-output.log | tail -6
- uses: actions/upload-artifact@v4
if: always()
with:
name: xdist-output
path: xdist-output.log