[cairo-bugs] [Bug 9906] evolution crash to _cairo_gstate_backend_to_user()

bugzilla-daemon at freedesktop.org bugzilla-daemon at freedesktop.org
Fri Mar 2 03:54:04 PST 2007


http://bugs.freedesktop.org/show_bug.cgi?id=9906


cworth at cworth.org changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|NEW                         |RESOLVED
         Resolution|                            |FIXED




------- Comment #2 from cworth at cworth.org  2007-03-02 03:53 PST -------
(In reply to comment #1)
> Could you break on _cairo_error which should show you where the INVALID_RESTORE
> is first happening, and then step through to see how you're getting from there
> to the crash?

Oh, never mind. It's clear enough from the existing backtrace already. Any
INVALID_RESTORE condition was leaving a NULL gstate and almost any cairo_get_*
call would dererference that and trigger the crash.

I augmented cairo's test suite to exercise the crash, then I fixed the bug.

You can see the commit I just pushed out here:

http://gitweb.freedesktop.org/?p=cairo;a=commitdiff;h=6da7f140334835be9a972db75de78d99b8bd24b1

This is currently available in cairo 1.3.15 as made available in git, and will
be pushed out very shortly in the cairo 1.4 release.

Meanwhile, there's still a bug in evolution somewhere that's leading to the
INVALID_RESTORE in the first place, (that is, calling cairo_restore without a
matching call to cairo_save). This fix will prevent the crash, and will instead
replace it with cairo simply refusing to draw anything after the invalid
restore state. So you'll still want to fix that.

-Carl


-- 
Configure bugmail: http://bugs.freedesktop.org/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the QA contact for the bug, or are watching the QA contact.


More information about the cairo-bugs mailing list