[cairo-bugs] [Bug 34912] [Piketon bisected]System hangs when run firefox-talos-gfx.trace
bugzilla-daemon at freedesktop.org
bugzilla-daemon at freedesktop.org
Wed Mar 2 14:27:28 PST 2011
https://bugs.freedesktop.org/show_bug.cgi?id=34912
--- Comment #4 from Uli Schlachter <psychon at znc.in> 2011-03-02 14:27:26 PST ---
Turns out the problem lies deeper than this. Thanks to Andrea, I dug a little
deeper and found a cyclic reference:
- _cairo_xcb_surface_picture() is called for a XCB surface
- This calls _copy_to_picture(source, FALSE) to make use of the existing
Picture
- Let's assume the source owns its pixmap, then this calls
_cairo_xcb_picture_copy()
- This creates a surface with: surface->owner = cairo_surface_reference
(&target->base);
(-> The _cairo_xcb_picture_t has a reference to the "source" surface)
- _cairo_xcb_surface_picture() now calls _cairo_surface_attach_snapshot()
which causes the reference count for "source" to be increased.
So the result is:
"source" has the _cairo_xcb_picture_t as a snapshot and owns a reference for
it.
At the same time, _cairo_xcb_picture_t owns a reference for the "source" since
it co-uses its Picture.
(valgrind won't detect this because cairo_device_finish for the xcb device
"cleans up" by finishing all surfaces which are still alive)
Easiest fix would be to remove _cairo_xcb_picture_copy.
--
Configure bugmail: https://bugs.freedesktop.org/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the QA contact for the bug.
More information about the cairo-bugs
mailing list