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

after the animation encoder (e.g. ffmpeg) fails, the animation framework itself fails internally in various ways while trying to report the error #9205

Closed
@anntzer

Description

@anntzer

Bug report

Bug summary

While trying some LD_PRELOAD tricks, test_save_animation_smoketest failed for me with

lib/matplotlib/tests/test_animation.py:173: in test_save_animation_smoketest    dpi=dpi, codec=codec)lib/matplotlib/animation.py:1261: in save    writer.grab_frame(**savefig_kwargs)/usr/lib/python3.6/contextlib.py:88: in __exit__    next(self.gen)lib/matplotlib/animation.py:237: in saving    self.finish()    raise RuntimeError(msg)E   RuntimeError: Error creating movie, return code: 127 Try setting mpl.verbose.set_level("helpful")

Well that's tricky to do within the tests which set classic mode, so let's instead patch

            try:                stdout = [s.decode() for s in self._proc._stdout_buff]                stderr = [s.decode() for s in self._proc._stderr_buff]                verbose.report("MovieWriter.finish: stdout: %s" % stdout,                               level='helpful')                verbose.report("MovieWriter.finish: stderr: %s" % stderr,                               level='helpful')            except Exception as e:                pass

to raise the error instead (pass -> raise).
I now get

lib/matplotlib/tests/test_animation.py:173: in test_save_animation_smoketest    dpi=dpi, codec=codec)lib/matplotlib/animation.py:1262: in save    writer.grab_frame(**savefig_kwargs)/usr/lib/python3.6/contextlib.py:88: in __exit__    next(self.gen)lib/matplotlib/animation.py:237: in saving    self.finish()lib/matplotlib/animation.py:577: in finish    "\n" + str(self._proc._stderr_buff))E   AttributeError: 'Popen' object has no attribute '_stdout_buff'

Code for reproduction

Apply the suggested patch and run pytest (suggested with --instafail (pytest-instafail) so that the traceback appears early, as test_animation is one of the first ones to be run).

Actual outcome

An exception is thrown while trying to generate an error message. (The actual error was due to the fact that I tried to LD_PRELOAD the fixed version of libfreetype into matplotlib, but that also affected the subprocess -- so that error is not really relevant.)

Expected outcome

The actual error message gets displayed.

Matplotlib version

  • Operating System: Arch Linux
  • Matplotlib Version: master
  • Python Version: 3.6
  • Jupyter Version (if applicable): NA
  • Other Libraries:

The use of a private subprocess API seem to have come in through#5628. We should definitely just use a public API here. The private API still exists on Windows, but has been removed on Unices inpython/cpython@3a4586a (I think), i.e. all supported Python versions.

Probably never caught because no one actually uses verbose mode... (perhaps tests should use verbose mode by default, actually -- especially as pytest will buffer away the output unless a failure actually occurs).

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions


      [8]ページ先頭

      ©2009-2025 Movatter.jp