[cairo] crash with pixman-0.17.4

Soeren Sandmann sandmann at daimi.au.dk
Sat Jan 23 15:57:32 PST 2010


Siarhei Siamashka <siarhei.siamashka at gmail.com> writes:

> If I understand it correctly, the behavior of pixman has changed recently and
> xserver also had to be updated to accommodate these changes. Out of bound
> workaround was required to maintain compatibility with old versions of xserver
> and probably it is failing somehow in your case. I would guess that upgrading
> xserver is the right thing to do in the long run. Soeren can probably explain
> it much better and correct me if I was wrong.

That is correct. The X server in question here is kdrive which is not
really being maintained anymore. 

The short version of the story is that old X servers had a bad bug in
them that due to a bug in pixman didn't usually cause any issues. So
when the pixman bug was fixed, X started misrendering. To preserve
compatibility, pixman got a workaround for the server bug.

It is difficult to say whether the crash here is caused by (a) a bug
in the workaround, (b) the workaround not correcting for the server
bug in this case, or (c) some unrelated bug in pixman or the server
that happens to be masked by the workaround.

In one of the gdb traces, it looks like the workaround is not actually
being triggered:

197         if (src->common.need_workaround)
(gdb) 
199         if (mask && mask->common.need_workaround)
(gdb) 
201         if (dest->common.need_workaround)
(gdb) 

If you want to try and track this down further, the first thing you'd
want to find out these things:

 - is the source drawable a window or a pixmap?

 - what is the clip region for the drawable?

 - is the workaround being triggered? (ie. image->comon.needs_workaround)



Soren


More information about the cairo mailing list