Skip to content

CI tests are failing (xvfb issue?) #756

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Closed
murrayrm opened this issue Aug 4, 2022 · 9 comments · Fixed by #757 or #759
Closed

CI tests are failing (xvfb issue?) #756

murrayrm opened this issue Aug 4, 2022 · 9 comments · Fixed by #757 or #759

Comments

@murrayrm
Copy link
Member

murrayrm commented Aug 4, 2022

Conda-based CI tests are failing, as seen in PR #755. This this is new behavior. I checked on my local branch and this appears to be happening on the main branch => appears that the issue is outside of this repository. One possibility is an issue with slycot.

@murrayrm murrayrm changed the title CI tests are failing (Slycot issue?) CI tests are failing (coveralls issue?) Aug 4, 2022
@murrayrm
Copy link
Member Author

murrayrm commented Aug 4, 2022

Doing a bit of digging. It doesn't look like slycot is the issue, since Python 3.7 without Slycot without cvxopt also crashes. The error messages seem to point to coverage (?). I'm try to isolate things here.

@murrayrm murrayrm changed the title CI tests are failing (coveralls issue?) CI tests are failing (coverage issue?) Aug 4, 2022
@bnavigator
Copy link
Contributor

I don't think that it is coverage.

Looks Qt related which is the default backend for Matplotlib. My first guess is that this is a conda-forge packaging bug on the MPL or Qt side.

More things to try:

  • pytest-xvfb
  • set MPLBACKEND
  • try QT_QPA_PLATFORM=offscreen

@murrayrm murrayrm changed the title CI tests are failing (coverage issue?) CI tests are failing (xvfb issue?) Aug 4, 2022
@murrayrm
Copy link
Member Author

murrayrm commented Aug 4, 2022

Using pytest-xvfb fixes the original crash (which was happening in config_test.py), but introduces a new test failure:

def test_root_locus_zoom(self):
[102](https://github.com/murrayrm/python-control/runs/7679958935?check_suite_focus=true#step:5:103)
        """Check the zooming functionality of the Root locus plot"""
[103](https://github.com/murrayrm/python-control/runs/7679958935?check_suite_focus=true#step:5:104)
        system = TransferFunction([1000], [1, 25, 100, 0])
[104](https://github.com/murrayrm/python-control/runs/7679958935?check_suite_focus=true#step:5:105)
        plt.figure()
[105](https://github.com/murrayrm/python-control/runs/7679958935?check_suite_focus=true#step:5:106)
        root_locus(system)
[106](https://github.com/murrayrm/python-control/runs/7679958935?check_suite_focus=true#step:5:107)
        fig = plt.gcf()
[107](https://github.com/murrayrm/python-control/runs/7679958935?check_suite_focus=true#step:5:108)
        ax_rlocus = fig.axes[0]
[108](https://github.com/murrayrm/python-control/runs/7679958935?check_suite_focus=true#step:5:109)
    
[109](https://github.com/murrayrm/python-control/runs/7679958935?check_suite_focus=true#step:5:110)
        event = type('test', (object,), {'xdata': 14.7607954359,
[110](https://github.com/murrayrm/python-control/runs/7679958935?check_suite_focus=true#step:5:111)
                                         'ydata': -35.6171379864,
[111](https://github.com/murrayrm/python-control/runs/7679958935?check_suite_focus=true#step:5:112)
                                         'inaxes': ax_rlocus.axes})()
[112](https://github.com/murrayrm/python-control/runs/7679958935?check_suite_focus=true#step:5:113)
        ax_rlocus.set_xlim((-10.813628105112421, 14.760795435937652))
[113](https://github.com/murrayrm/python-control/runs/7679958935?check_suite_focus=true#step:5:114)
        ax_rlocus.set_ylim((-35.61713798641108, 33.879716621220311))
[114](https://github.com/murrayrm/python-control/runs/7679958935?check_suite_focus=true#step:5:115)
>       plt.get_current_fig_manager().toolbar.mode = 'zoom rect'
[115](https://github.com/murrayrm/python-control/runs/7679958935?check_suite_focus=true#step:5:116)
E       AttributeError: 'NoneType' object has no attribute 'mode'

There is a note saying that we were using xvfb-run to get the right MPL back end, so that is probably related somehow.

@murrayrm
Copy link
Member Author

murrayrm commented Aug 4, 2022

One thing that is odd is that the other test suites pass and they are using xvfb-run. In particular, control-slycot-src.yml seems fine and it runs the full test suite...

@bnavigator
Copy link
Contributor

There is a note saying that we were using xvfb-run to get the right MPL back end, so that is probably related somehow.

Yes, it is related. The plain Agg backend does not have the toolbar for the figure manager. We have seen this before: #504 (comment)

So this looks more and more like a qt backend issue in the MPL or Qt packages in conda-forge.

Are you able to determine package version differences in the control-slycot-src vs. the python-package-conda runs?

@murrayrm
Copy link
Member Author

murrayrm commented Aug 5, 2022

It looks like the error occurs when the installation uses a specialized conda environment (versus just installing things in the conda base environment). There are quite a few differences in the various packages that are installed in each case.

@bnavigator
Copy link
Contributor

Now that the conda error is resolved, there is a new X11 error on the main branch. Something in the GHA runners must have changed between the check run for #755 and after the merge of it.

@bnavigator bnavigator reopened this Aug 6, 2022
@bnavigator
Copy link
Contributor

The failures with the invalid DISPLAY variable are totally random. We might just have been lucky in the builds for #755 and #757.

https://github.com/bnavigator/python-control/commits/update-CI

@bnavigator
Copy link
Contributor

For the record: the random DISPLAY failure is back. (Maybe due to #796)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
2 participants