Summary: |
self-copy crashes for a stack overflow with svg12 backend |
Product: |
cairo
|
Reporter: |
Massimo <sixtysix> |
Component: |
pdf backend | Assignee: |
Adrian Johnson <ajohnson> |
Status: |
RESOLVED
MOVED
|
QA Contact: |
cairo-bugs mailing list <cairo-bugs> |
Severity: |
normal
|
|
|
Priority: |
medium
|
|
|
Version: |
unspecified | |
|
Hardware: |
Other | |
|
OS: |
All | |
|
Whiteboard: |
|
i915 platform:
|
|
i915 features:
|
|
Attachments: |
quick hack
|
Use of freedesktop.org services, including Bugzilla, is subject to our Code of Conduct. How we collect and use information is described in our Privacy Policy.
Created attachment 112093 [details] quick hack The problem is that with a paginated surface (pdf, svg) _cairo_recording_surface_break_self_copy_loop flushes the internal recording surface, but not the parent which is the snapshot_of of the paint source pattern. When later detach_snapshots is invoked for the recording_surface it creates a paint command that uses the same recording surface as source and this results in a memory leak for the pdf backend and an infinite recursion for the svg12 backend. The attached quick hack flushes the pattern->surface before adding the paint-command to the recording surface commands. Reproduction step (cd test && CAIRO_TEST_TARGET=pdf,svg12 .libs/cairo-test-suite -f self-copy)