Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

[Bug]: test_other_signal_before_sigint fails with Qt on macOS CI #27984

Open
@QuLogic

Description

@QuLogic

Bug summary

We've previously not been installing Qt wrappers such as PyQt6 or PySide.#27723 adds those back, but we have discovered thattest_other_signal_before_sigint fails on CI. The subprocess appears to segfault somewhere in the Qt event loop.

I had tried to debug it withc1afbac, but then it stopped failing. Reverting that change then failed again, though one time it passed. So this seems to be fairly flaky.

I went through all CI runs, and found that this is not particularly limited to any parametrization:

      4 _ test_other_signal_before_sigint[show-kwargs0-MPLBACKEND=qtcairo-QT_API=PyQt6-BACKEND_DEPS=PyQt6,cairocffi] _      3 _ test_other_signal_before_sigint[show-kwargs0-MPLBACKEND=qtcairo-QT_API=PySide6-BACKEND_DEPS=PySide6,cairocffi] _      3 _ test_other_signal_before_sigint[show-kwargs0-MPLBACKEND=qtcairo-QT_API=PyQt5-BACKEND_DEPS=PyQt5,cairocffi] _      3 _ test_other_signal_before_sigint[show-kwargs0-MPLBACKEND=qtagg-QT_API=PyQt6-BACKEND_DEPS=PyQt6] _      2 _ test_other_signal_before_sigint[show-kwargs0-MPLBACKEND=qtcairo-QT_API=PySide2-BACKEND_DEPS=PySide2,cairocffi] _      2 _ test_other_signal_before_sigint[show-kwargs0-MPLBACKEND=qtagg-QT_API=PySide6-BACKEND_DEPS=PySide6] _      1 _ test_other_signal_before_sigint[show-kwargs0-MPLBACKEND=qtagg-QT_API=PySide2-BACKEND_DEPS=PySide2] _

Unfortunately, I don't think@tacaswell was able to reproduce the crash, and@ksunden was only able to reproduce once, but only as part of a full test suite, and never again later in a smaller run.

So as part of#27723, I've marked these asxfail, but if we can figure out a way to reproduce, we should be able to fix this.

Code for reproduction

pytest-ktest_other_signal_before_sigintlib/matplotlib/tests/test_backends_interactive.py

Actual outcome

_ test_other_signal_before_sigint[show-kwargs0-MPLBACKEND=qtagg-QT_API=PySide6-BACKEND_DEPS=PySide6] _[gw1] darwin -- Python 3.12.2 /Library/Frameworks/Python.framework/Versions/3.12/bin/pythonenv = {'BACKEND_DEPS': 'PySide6', 'MPLBACKEND': 'qtagg', 'QT_API': 'PySide6'}target = 'show', kwargs = {'block': True}request = <FixtureRequest for <Function test_other_signal_before_sigint[show-kwargs0-MPLBACKEND=qtagg-QT_API=PySide6-BACKEND_DEPS=PySide6]>>    @pytest.mark.skipif(sys.platform == 'win32',                        reason='No other signal available to send on Windows')    @pytest.mark.parametrize("env", _get_testable_interactive_backends())    @pytest.mark.parametrize("target, kwargs", [        ('show', {'block': True}),        ('pause', {'interval': 10})    ])    def test_other_signal_before_sigint(env, target, kwargs, request):        backend = env.get("MPLBACKEND")        if not backend.startswith(("qt", "macosx")):            pytest.skip("SIGINT currently only tested on qt and macosx")        if backend == "macosx":            request.node.add_marker(pytest.mark.xfail(reason="macosx backend is buggy"))        proc = _WaitForStringPopen(            [sys.executable, "-c",             inspect.getsource(_test_other_signal_before_sigint_impl) +             "\n_test_other_signal_before_sigint_impl("                f"{backend!r}, {target!r}, {kwargs!r})"])        try:            proc.wait_for('DRAW')            os.kill(proc.pid, signal.SIGUSR1)            proc.wait_for('SIGUSR1')            os.kill(proc.pid, signal.SIGINT)            stdout, _ = proc.communicate(timeout=_test_timeout)        except Exception:            proc.kill()            stdout, _ = proc.communicate()            raise        print(stdout)>       assert 'SUCCESS' in stdoutE       AssertionError/Users/runner/work/matplotlib/matplotlib/lib/matplotlib/tests/test_backends_interactive.py:790: AssertionError----------------------------- Captured stdout call ---------------------------------------------------------- Captured stderr call -----------------------------Fatal Python error: Segmentation faultCurrent thread 0x00000001d88a9c40 (most recent call first):  File "/Users/runner/work/matplotlib/matplotlib/lib/matplotlib/backends/qt_compat.py", line 159 in _exec  File "/Users/runner/work/matplotlib/matplotlib/lib/matplotlib/backends/backend_qt.py", line 633 in start_main_loop  File "/Users/runner/work/matplotlib/matplotlib/lib/matplotlib/backend_bases.py", line 3536 in show  File "/Users/runner/work/matplotlib/matplotlib/lib/matplotlib/pyplot.py", line 590 in show  File "<string>", line 21 in _test_other_signal_before_sigint_impl  File "<string>", line 25 in <module>Extension modules: numpy.core._multiarray_umath, numpy.core._multiarray_tests, numpy.linalg._umath_linalg, numpy.fft._pocketfft_internal, numpy.random._common, numpy.random.bit_generator, numpy.random._bounded_integers, numpy.random._mt19937, numpy.random.mtrand, numpy.random._philox, numpy.random._pcg64, numpy.random._sfc64, numpy.random._generator, PIL._imaging, kiwisolver._cext, PyQt6.QtCore, PyQt6.QtGui, PyQt6.QtWidgets (total: 18)

Expected outcome

Tests pass

Additional information

No response

Operating system

macOS

Matplotlib Version

main

Matplotlib Backend

QtAgg

Python version

3.10 or 3.12

Jupyter version

No response

Installation

git checkout

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions


      [8]ページ先頭

      ©2009-2025 Movatter.jp