[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#1038823: pysdl2: autopkgtest failure with SDL 2.28.0: cannot create a Renderer



Source: pysdl2
Version: 0.9.9+dfsg1-6
Severity: serious
Tags: fixed-upstream
Justification: https://release.debian.org/testing/rc_policy.txt 6a
X-Debbugs-CC: debian-ci@lists.debian.org
User: debian-ci@lists.debian.org
Usertags: needs-update

pysdl2's autopkgtest is failing since I uploaded libsdl2 version 2.28.0
to unstable. This appears to be a test issue, rather than a regression
in libsdl2.

An example of one of the failures:

 70s self = <sdl2.test.render_test.TestSDLRender object at 0x7ffa7d1c1810>
 70s
 70s     def test_SDL_CreateDestroyRenderer(self):
 70s         failed = 0
 70s         rcount = render.SDL_GetNumRenderDrivers()
 70s         for i in range(rcount):
 70s             window = video.SDL_CreateWindow(b"Test", 10, 10, 10, 10,
 70s                                             video.SDL_WINDOW_SHOWN)
 70s             assert isinstance(window.contents, video.SDL_Window)
 70s             renderer = render.SDL_CreateRenderer(window, i, self._RENDERFLAGS)
 70s             if not (renderer and renderer.contents):
 70s                 failed += 1
 70s                 video.SDL_DestroyWindow(window)
 70s                 continue
 70s             assert isinstance(renderer.contents, render.SDL_Renderer)
 70s             render.SDL_DestroyRenderer(renderer)
 70s
 70s             # TODO: using -1 as index for the call below leads to random
 70s             # access violations on Win32
 70s             renderer = render.SDL_CreateRenderer(window, i,
 70s                                                  render.SDL_RENDERER_SOFTWARE)
 70s >           assert isinstance(renderer.contents, render.SDL_Renderer)
 70s E           ValueError: NULL pointer access

If I hack in some extra debug, it seems that the SDL error message is
"Surface already associated with window", which is related to:

- https://github.com/pygame-community/pygame-ce/issues/2190
- https://github.com/libsdl-org/SDL/issues/7793
- https://github.com/libsdl-org/SDL/pull/7795

Briefly, SDL upstream considers it to be a programming error to attempt
to create a Renderer for a window that already has a window surface,
and some video drivers imply creation of a window surface. SDL 2.28.0
is better at detecting and diagnosing this situation than previous
releases.

pysdl2/experimental seems to have fixed the test, so I'm going to upload
that to unstable if successful.

    smcv


Reply to: