Package: cogl / 1.22.4-3

Metadata

Package Version Patches format
cogl 1.22.4-3 3.0 (quilt)

Patch series

view the series file
Patch File delta Description
Terminate tests with SIGALRM if they take more than 120 s.patch | (download)

test-fixtures/test-utils.c | 4 4 + 0 - 0 !
1 file changed, 4 insertions(+)

 terminate tests with sigalrm if they take more than 120 seconds

We're currently ignoring test failures, but if a test hangs, that will
still cause the build to fail (and tie up a buildd for 150 minutes).

The fork of cogl in Mutter uses a 120 second timeout for tests in its
Meson build system, but other than that it's purely an arbitrary number.

Bug-Debian: https://bugs.debian.org/935592
tests Show the actual output from tests if VERBOSE is set.patch | (download)

tests/run-tests.sh | 9 8 + 1 - 0 !
1 file changed, 8 insertions(+), 1 deletion(-)

 tests: show the actual output from tests if verbose is set

test premult Don t free texture data until CoglBitmap is .patch | (download)

tests/conform/test-conform-main.c | 2 1 + 1 - 0 !
tests/conform/test-premult.c | 6 5 + 1 - 0 !
2 files changed, 6 insertions(+), 2 deletions(-)

 test-premult: don't free texture data until coglbitmap is freed

According to the cogl_bitmap_new_for_data documentation, the data is not
copied, so the application must keep the buffer alive for the lifetime
of the CoglBitmap. Freeing it too early led to a use-after-free in the
cogl unit tests. With that fixed, the test passes, so remove the known
failure annotation.

==6223==ERROR: AddressSanitizer: heap-use-after-free on address 0x62100001a500 at pc 0x7f3e2d4e7f4e bp 0x7ffcd9c41f30 sp 0x7ffcd9c416e0
READ of size 4096 at 0x62100001a500 thread T0
    #0 0x7f3e2d4e7f4d  (/usr/lib/x86_64-linux-gnu/libasan.so.5+0x96f4d)
    #1 0x7f3e260c7f6b in util_copy_box ../src/gallium/auxiliary/util/u_surface.c:131
    #2 0x7f3e268c6c10 in u_default_texture_subdata ../src/gallium/auxiliary/util/u_transfer.c:67
    #3 0x7f3e26486459 in st_TexSubImage ../src/mesa/state_tracker/st_cb_texture.c:1480
    #4 0x7f3e26487029 in st_TexImage ../src/mesa/state_tracker/st_cb_texture.c:1709
    #5 0x7f3e26487029 in st_TexImage ../src/mesa/state_tracker/st_cb_texture.c:1691
    #6 0x7f3e2644bdba in teximage ../src/mesa/main/teximage.c:3105
    #7 0x7f3e2644bdba in teximage_err ../src/mesa/main/teximage.c:3132
    #8 0x7f3e2644d84f in _mesa_TexImage2D ../src/mesa/main/teximage.c:3170
    #9 0x7f3e2cd1f7df in _cogl_texture_driver_upload_to_gl driver/gl/gl/cogl-texture-driver-gl.c:347
    #10 0x7f3e2ccd441b in allocate_from_bitmap driver/gl/cogl-texture-2d-gl.c:255
    #11 0x7f3e2ccd441b in _cogl_texture_2d_gl_allocate driver/gl/cogl-texture-2d-gl.c:462
    #12 0x7f3e2ce3a6c0 in cogl_texture_allocate cogl/cogl-texture.c:1398
    #13 0x7f3e2ce3e116 in _cogl_texture_pre_paint cogl/cogl-texture.c:359
    #14 0x7f3e2cdee177 in _cogl_pipeline_layer_pre_paint cogl/cogl-pipeline-layer.c:864
    #15 0x7f3e2cd574af in _cogl_rectangles_validate_layer_cb cogl/cogl-primitives.c:542
    #16 0x7f3e2cdd742f in cogl_pipeline_foreach_layer cogl/cogl-pipeline.c:735
    #17 0x7f3e2cd5c8b0 in _cogl_framebuffer_draw_multitextured_rectangles cogl/cogl-primitives.c:658
    #18 0x7f3e2cd60152 in cogl_rectangle cogl/cogl-primitives.c:858
    #19 0x5570a71ed6a0 in check_texture tests/conform/test-premult.c:103
    #20 0x5570a71ed946 in test_premult tests/conform/test-premult.c:159
    #21 0x5570a71df0d6 in main tests/conform/test-conform-main.c:58
    #22 0x7f3e2bcd809a in __libc_start_main ../csu/libc-start.c:308
    #23 0x5570a71e0869 in _start (/home/smcv/src/debian/cogl/tests/conform/.libs/test-conformance+0x33869)

0x62100001a500 is located 0 bytes inside of 4096-byte region [0x62100001a500,0x62100001b500)
freed by thread T0 here:
    #0 0x7f3e2d5581d7 in __interceptor_free (/usr/lib/x86_64-linux-gnu/libasan.so.5+0x1071d7)
    #1 0x5570a71ed58b in make_texture tests/conform/test-premult.c:69

previously allocated by thread T0 here:
    #0 0x7f3e2d558588 in malloc (/usr/lib/x86_64-linux-gnu/libasan.so.5+0x107588)
    #1 0x7f3e2d384500 in g_malloc ../../../glib/gmem.c:99

Signed-off-by: Simon McVittie <smcv@debian.org>

Don t usually run tests that are not expected to succeed.patch | (download)

test-fixtures/test-utils.c | 4 3 + 1 - 0 !
test-fixtures/test-utils.h | 2 1 + 1 - 0 !
tests/conform/test-conform-main.c | 15 11 + 4 - 0 !
tests/unit/test-unit-main.c | 18 12 + 6 - 0 !
4 files changed, 27 insertions(+), 12 deletions(-)

 don't usually run tests that are not expected to succeed

They can still be requested via an environment variable.