From fc1b3352093c8260d2bc1edfa6afc53a8ba672ee Mon Sep 17 00:00:00 2001 From: Lukas Geiger Date: Thu, 15 Oct 2026 18:59:54 +0200 Subject: [PATCH 1/3] ci: expose native Qt crashes and stalled test stacks Generated-with: gpt-6.1-sol (Codex) --- .github/workflows/ci.yml | 2 +- .github/workflows/linux-platform-smoke.yml | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 3e2a329..3656639 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -83,4 +83,4 @@ jobs: python -m pip install -r requirements.txt pytest Pillow tomli - name: Run Pytest Test Suite - run: pytest -v + run: python -X faulthandler -u -m pytest -s -v -o faulthandler_timeout=60 diff --git a/.github/workflows/linux-platform-smoke.yml b/.github/workflows/linux-platform-smoke.yml index 5347dcb..f8fec9c 100644 --- a/.github/workflows/linux-platform-smoke.yml +++ b/.github/workflows/linux-platform-smoke.yml @@ -52,10 +52,10 @@ jobs: - name: Run desktop regressions run: | - python -m pytest -q tests/test_lsp_client.py tests/test_save_failure_guards.py tests/test_tab_reordering.py + python -X faulthandler -u -m pytest -s -q -o faulthandler_timeout=60 tests/test_lsp_client.py tests/test_save_failure_guards.py tests/test_tab_reordering.py - name: Run Linux platform smoke - run: python tests/linux_platform_smoke.py + run: python -X faulthandler -u tests/linux_platform_smoke.py macos-smoke: runs-on: macos-latest @@ -79,4 +79,4 @@ jobs: python -m pip install -r requirements.txt pytest - name: Run macOS platform smoke - run: python tests/macos_platform_smoke.py + run: python -X faulthandler -u tests/macos_platform_smoke.py From 4635f265195365f83cec67153146743340c94135 Mon Sep 17 00:00:00 2001 From: Lukas Geiger Date: Thu, 15 Oct 2026 20:19:52 +0200 Subject: [PATCH 2/3] ci: compare isolated highlighter callbacks across Qt bindings Generated-with: gpt-6.1-sol (Codex) --- .github/workflows/ci.yml | 52 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 52 insertions(+) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 3656639..2ef0920 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -15,6 +15,58 @@ permissions: contents: read jobs: + qt-binding-probe: + name: Isolated Qt binding (${{ matrix.qt }}) + runs-on: ubuntu-latest + timeout-minutes: 8 + strategy: + fail-fast: false + matrix: + qt: ["6.11.3", "6.12.0"] + env: + QT_QPA_PLATFORM: offscreen + PYTHONIOENCODING: utf-8 + steps: + - uses: actions/setup-python@v5 + with: + python-version: "3.11" + - name: Install isolated binding + run: python -m pip install "PySide6_Essentials==${{ matrix.qt }}" + - name: Exercise virtual highlighter callbacks without product code + run: | + python -X faulthandler -u - <<'PY' + import gc + import sys + import PySide6 + import shiboken6 + from PySide6.QtGui import QSyntaxHighlighter, QTextCharFormat, QTextDocument + from PySide6.QtWidgets import QApplication + + class Probe(QSyntaxHighlighter): + calls = 0 + + def highlightBlock(self, text): + self.calls += 1 + self.setCurrentBlockState(0) + self.setFormat(0, len(text), QTextCharFormat()) + + app = QApplication([]) + document = QTextDocument() + highlighter = Probe(document) + print("versions", sys.version, PySide6.__version__, shiboken6.__version__) + print("initial None references", sys.getrefcount(None)) + for iteration in range(1000): + document.setPlainText(("plain text " + str(iteration) + "\n") * 10) + highlighter.rehighlight() + app.processEvents() + if iteration % 100 == 0: + gc.collect() + print("iteration", iteration, "callbacks", highlighter.calls, + "None references", sys.getrefcount(None)) + assert highlighter.calls >= 1000 + print("PROBE_COMPLETED", highlighter.calls, sys.getrefcount(None)) + PY + lint: name: Lint & Code Style runs-on: ubuntu-latest From e8c80d978550400f3a11a528134a48c0bf95e181 Mon Sep 17 00:00:00 2001 From: Lukas Geiger Date: Thu, 15 Oct 2026 20:24:54 +0200 Subject: [PATCH 3/3] ci: install runtime libraries and use available Qt comparison wheel Generated-with: gpt-6.1-sol (Codex) --- .github/workflows/ci.yml | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 2ef0920..37c69c8 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -22,7 +22,7 @@ jobs: strategy: fail-fast: false matrix: - qt: ["6.11.3", "6.12.0"] + qt: ["6.11.2", "6.12.0"] env: QT_QPA_PLATFORM: offscreen PYTHONIOENCODING: utf-8 @@ -30,6 +30,10 @@ jobs: - uses: actions/setup-python@v5 with: python-version: "3.11" + - name: Install Linux Qt runtime + run: | + sudo apt-get update -qq + sudo apt-get install -y --no-install-recommends libegl1 libgl1 libxkbcommon-x11-0 - name: Install isolated binding run: python -m pip install "PySide6_Essentials==${{ matrix.qt }}" - name: Exercise virtual highlighter callbacks without product code