[cairo-bugs] [Bug 102966] CAIRO_STATUS_NO_MEMORY after filling with pattern and large translation

bugzilla-daemon at freedesktop.org bugzilla-daemon at freedesktop.org
Thu Oct 5 17:24:34 UTC 2017


https://bugs.freedesktop.org/show_bug.cgi?id=102966

--- Comment #4 from Jason Crain <jason at inspiresomeone.us> ---
Created attachment 134687
  --> https://bugs.freedesktop.org/attachment.cgi?id=134687&action=edit
test-100868.c

The PDF in bug #100868 is the same. It's also doing a pattern fill under
different, but still odd coordinates, making cairo have an invalid matrix and
out of memory error. Backtrace is similar.

> (gdb) b _cairo_error
> Breakpoint 2 at 0x7ffff7a897b2: file cairo-error.c, line 68.
> (gdb) run
> Starting program: /home/jason/100868/test
> [Thread debugging using libthread_db enabled]
> Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".
> 
> Breakpoint 2, _cairo_error (status=CAIRO_STATUS_INVALID_MATRIX) at cairo-error.c:68
> 68          assert (_cairo_status_is_error (status));
> (gdb) bt
> #0  _cairo_error (status=CAIRO_STATUS_INVALID_MATRIX) at cairo-error.c:68
> #1  0x00007ffff7aa434c in _cairo_matrix_to_pixman_matrix (matrix=0x7fffffffb7f0, pixman_transform=0x7fffffffb8c0, xc=818.5, yc=1123) at cairo-matrix.c:996
> #2  0x00007ffff7aa4b63 in _cairo_matrix_to_pixman_matrix_offset (matrix=0x7fffffffd4c0, filter=CAIRO_FILTER_GOOD, xc=818.5, yc=1123, out_transform=0x7fffffffb8c0, x_offset=0x7fffffffbb70, y_offset=0x7fffffffbb74)
>     at cairo-matrix.c:1210
> #3  0x00007ffff7a9d628 in _pixman_image_set_properties (pixman_image=0x55555575ed50, pattern=0x7fffffffd480, extents=0x7fffffffd43c, ix=0x7fffffffbb70, iy=0x7fffffffbb74) at cairo-image-source.c:900
> #4  0x00007ffff7a9e821 in _pixman_image_for_surface (dst=0x55555575a920, pattern=0x7fffffffd480, is_mask=0, extents=0x7fffffffd43c, sample=0x7fffffffd460, ix=0x7fffffffbb70, iy=0x7fffffffbb74) at cairo-image-source.c:1424
> #5  0x00007ffff7a9ec12 in _pixman_image_for_pattern (dst=0x55555575a920, pattern=0x7fffffffd480, is_mask=0, extents=0x7fffffffd43c, sample=0x7fffffffd460, tx=0x7fffffffbb70, ty=0x7fffffffbb74) at cairo-image-source.c:1557
> #6  0x00007ffff7a9a36e in inplace_renderer_init (r=0x7fffffffbb20, composite=0x7fffffffd400, antialias=CAIRO_ANTIALIAS_DEFAULT, needs_clip=0) at cairo-image-compositor.c:2904
> #7  0x00007ffff7a9a550 in span_renderer_init (_r=0x7fffffffbb20, composite=0x7fffffffd400, antialias=CAIRO_ANTIALIAS_DEFAULT, needs_clip=0) at cairo-image-compositor.c:2966
> #8  0x00007ffff7aec547 in composite_polygon (compositor=0x7ffff7dd7920 <spans>, extents=0x7fffffffd400, polygon=0x7fffffffcfb0, fill_rule=CAIRO_FILL_RULE_WINDING, antialias=CAIRO_ANTIALIAS_DEFAULT)
>     at cairo-spans-compositor.c:798
> #9  0x00007ffff7aecb0a in clip_and_composite_polygon (compositor=0x7ffff7dd7920 <spans>, extents=0x7fffffffd400, polygon=0x7fffffffcfb0, fill_rule=CAIRO_FILL_RULE_WINDING, antialias=CAIRO_ANTIALIAS_DEFAULT)
>     at cairo-spans-compositor.c:967
> #10 0x00007ffff7aed2d7 in _cairo_spans_compositor_fill (_compositor=0x7ffff7dd7920 <spans>, extents=0x7fffffffd400, path=0x55555575ae18, fill_rule=CAIRO_FILL_RULE_WINDING, tolerance=0.10000000000000001,
>     antialias=CAIRO_ANTIALIAS_DEFAULT) at cairo-spans-compositor.c:1174
> #11 0x00007ffff7a83cba in _cairo_compositor_fill (compositor=0x7ffff7dd7920 <spans>, surface=0x55555575a920, op=CAIRO_OPERATOR_OVER, source=0x7fffffffd7f0, path=0x55555575ae18, fill_rule=CAIRO_FILL_RULE_WINDING,
>     tolerance=0.10000000000000001, antialias=CAIRO_ANTIALIAS_DEFAULT, clip=0x0) at cairo-compositor.c:203
> #12 0x00007ffff7aa03f8 in _cairo_image_surface_fill (abstract_surface=0x55555575a920, op=CAIRO_OPERATOR_OVER, source=0x7fffffffd7f0, path=0x55555575ae18, fill_rule=CAIRO_FILL_RULE_WINDING, tolerance=0.10000000000000001,
>     antialias=CAIRO_ANTIALIAS_DEFAULT, clip=0x0) at cairo-image-surface.c:987
> #13 0x00007ffff7af32c4 in _cairo_surface_fill (surface=0x55555575a920, op=CAIRO_OPERATOR_OVER, source=0x7fffffffd7f0, path=0x55555575ae18, fill_rule=CAIRO_FILL_RULE_WINDING, tolerance=0.10000000000000001,
>     antialias=CAIRO_ANTIALIAS_DEFAULT, clip=0x0) at cairo-surface.c:2343
> #14 0x00007ffff7a90ce7 in _cairo_gstate_fill (gstate=0x55555575aae0, path=0x55555575ae18) at cairo-gstate.c:1318
> #15 0x00007ffff7a88538 in _cairo_default_context_fill (abstract_cr=0x55555575aab0) at cairo-default-context.c:1055
> #16 0x00007ffff7a7b01f in cairo_fill (cr=0x55555575aab0) at cairo.c:2424
> #17 0x0000555555554bdc in main (argc=1, argv=0x7fffffffdb58) at test.c:20
> (gdb) c
> Continuing.
> 
> Breakpoint 2, _cairo_error (status=CAIRO_STATUS_NO_MEMORY) at cairo-error.c:68
> 68          assert (_cairo_status_is_error (status));
> (gdb) bt
> #0  _cairo_error (status=CAIRO_STATUS_NO_MEMORY) at cairo-error.c:68
> #1  0x00007ffff7a9a394 in inplace_renderer_init (r=0x7fffffffbb20, composite=0x7fffffffd400, antialias=CAIRO_ANTIALIAS_DEFAULT, needs_clip=0) at cairo-image-compositor.c:2909
> #2  0x00007ffff7a9a550 in span_renderer_init (_r=0x7fffffffbb20, composite=0x7fffffffd400, antialias=CAIRO_ANTIALIAS_DEFAULT, needs_clip=0) at cairo-image-compositor.c:2966
> #3  0x00007ffff7aec547 in composite_polygon (compositor=0x7ffff7dd7920 <spans>, extents=0x7fffffffd400, polygon=0x7fffffffcfb0, fill_rule=CAIRO_FILL_RULE_WINDING, antialias=CAIRO_ANTIALIAS_DEFAULT)
>     at cairo-spans-compositor.c:798
> #4  0x00007ffff7aecb0a in clip_and_composite_polygon (compositor=0x7ffff7dd7920 <spans>, extents=0x7fffffffd400, polygon=0x7fffffffcfb0, fill_rule=CAIRO_FILL_RULE_WINDING, antialias=CAIRO_ANTIALIAS_DEFAULT)
>     at cairo-spans-compositor.c:967
> #5  0x00007ffff7aed2d7 in _cairo_spans_compositor_fill (_compositor=0x7ffff7dd7920 <spans>, extents=0x7fffffffd400, path=0x55555575ae18, fill_rule=CAIRO_FILL_RULE_WINDING, tolerance=0.10000000000000001,
>     antialias=CAIRO_ANTIALIAS_DEFAULT) at cairo-spans-compositor.c:1174
> #6  0x00007ffff7a83cba in _cairo_compositor_fill (compositor=0x7ffff7dd7920 <spans>, surface=0x55555575a920, op=CAIRO_OPERATOR_OVER, source=0x7fffffffd7f0, path=0x55555575ae18, fill_rule=CAIRO_FILL_RULE_WINDING,
>     tolerance=0.10000000000000001, antialias=CAIRO_ANTIALIAS_DEFAULT, clip=0x0) at cairo-compositor.c:203
> #7  0x00007ffff7aa03f8 in _cairo_image_surface_fill (abstract_surface=0x55555575a920, op=CAIRO_OPERATOR_OVER, source=0x7fffffffd7f0, path=0x55555575ae18, fill_rule=CAIRO_FILL_RULE_WINDING, tolerance=0.10000000000000001,
>     antialias=CAIRO_ANTIALIAS_DEFAULT, clip=0x0) at cairo-image-surface.c:987
> #8  0x00007ffff7af32c4 in _cairo_surface_fill (surface=0x55555575a920, op=CAIRO_OPERATOR_OVER, source=0x7fffffffd7f0, path=0x55555575ae18, fill_rule=CAIRO_FILL_RULE_WINDING, tolerance=0.10000000000000001,
>     antialias=CAIRO_ANTIALIAS_DEFAULT, clip=0x0) at cairo-surface.c:2343
> #9  0x00007ffff7a90ce7 in _cairo_gstate_fill (gstate=0x55555575aae0, path=0x55555575ae18) at cairo-gstate.c:1318
> #10 0x00007ffff7a88538 in _cairo_default_context_fill (abstract_cr=0x55555575aab0) at cairo-default-context.c:1055
> #11 0x00007ffff7a7b01f in cairo_fill (cr=0x55555575aab0) at cairo.c:2424
> #12 0x0000555555554bdc in main (argc=1, argv=0x7fffffffdb58) at test.c:20
> (gdb) c
> Continuing.
> 
> Breakpoint 2, _cairo_error (status=CAIRO_STATUS_NO_MEMORY) at cairo-error.c:68
> 68          assert (_cairo_status_is_error (status));
> (gdb) bt
> #0  _cairo_error (status=CAIRO_STATUS_NO_MEMORY) at cairo-error.c:68
> #1  0x00007ffff7af035a in _cairo_surface_set_error (surface=0x55555575a920, status=CAIRO_INT_STATUS_NO_MEMORY) at cairo-surface.c:201
> #2  0x00007ffff7af3301 in _cairo_surface_fill (surface=0x55555575a920, op=CAIRO_OPERATOR_OVER, source=0x7fffffffd7f0, path=0x55555575ae18, fill_rule=CAIRO_FILL_RULE_WINDING, tolerance=0.10000000000000001,
>     antialias=CAIRO_ANTIALIAS_DEFAULT, clip=0x0) at cairo-surface.c:2352
> #3  0x00007ffff7a90ce7 in _cairo_gstate_fill (gstate=0x55555575aae0, path=0x55555575ae18) at cairo-gstate.c:1318
> #4  0x00007ffff7a88538 in _cairo_default_context_fill (abstract_cr=0x55555575aab0) at cairo-default-context.c:1055
> #5  0x00007ffff7a7b01f in cairo_fill (cr=0x55555575aab0) at cairo.c:2424
> #6  0x0000555555554bdc in main (argc=1, argv=0x7fffffffdb58) at test.c:20
> (gdb) c
> Continuing.
> 
> Breakpoint 2, _cairo_error (status=CAIRO_STATUS_NO_MEMORY) at cairo-error.c:68
> 68          assert (_cairo_status_is_error (status));
> (gdb) bt
> #0  _cairo_error (status=CAIRO_STATUS_NO_MEMORY) at cairo-error.c:68
> #1  0x00007ffff7a79786 in _cairo_set_error (cr=0x55555575aab0, status=CAIRO_STATUS_NO_MEMORY) at cairo.c:401
> #2  0x00007ffff7a7b039 in cairo_fill (cr=0x55555575aab0) at cairo.c:2426
> #3  0x0000555555554bdc in main (argc=1, argv=0x7fffffffdb58) at test.c:20
> (gdb) c
> Continuing.
> 
> Breakpoint 2, _cairo_error (status=CAIRO_STATUS_NO_MEMORY) at cairo-error.c:68
> 68          assert (_cairo_status_is_error (status));
> (gdb) bt
> #0  _cairo_error (status=CAIRO_STATUS_NO_MEMORY) at cairo-error.c:68
> #1  0x00007ffff7a797b4 in _cairo_set_error (cr=0x55555575aab0, status=CAIRO_STATUS_NO_MEMORY) at cairo.c:401
> #2  0x00007ffff7a7b039 in cairo_fill (cr=0x55555575aab0) at cairo.c:2426
> #3  0x0000555555554bdc in main (argc=1, argv=0x7fffffffdb58) at test.c:20
> (gdb) c
> Continuing.
> cairo_status: out of memory
> [Inferior 1 (process 15289) exited normally]

-- 
You are receiving this mail because:
You are the QA Contact for the bug.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.cairographics.org/archives/cairo-bugs/attachments/20171005/49957a7c/attachment.html>


More information about the cairo-bugs mailing list