[cairo] Thread-safety and library versions

Weeble clockworksaint at gmail.com
Tue Sep 17 07:14:12 PDT 2013


Thanks for the quick replies. I've submitted a bug, along with my
analysis of what I think is happening:
https://bugs.freedesktop.org/show_bug.cgi?id=69470

On 17 September 2013 14:09, Chris Wilson <chris at chris-wilson.co.uk> wrote:
> On Tue, Sep 17, 2013 at 02:44:53PM +0200, Uli Schlachter wrote:
>> Hi,
>>
>> On 17.09.2013 14:16, Weeble wrote:
>> [...]
>> > More specifically, I'm running libcairo 1.12.14 and libfontconfig
>> > 2.10.2. When Mono repeatedly creates cairo drawing contexts, calls
>> > cairo_select_font_face, and destroys the drawing contexts; (with each
>> > context accessed only from a single thread, but more than one thread
>> > running at once;) sooner or later it crashes when
>> > _cairo_toy_font_face_destroy calls _cairo_hash_table_remove and raises
>> > an assertion, apparently because the key is missing from the hash
>> > table.
>>
>> I was thinking "it can't be that simple" and produced the attached test program
>> which does exactly this. The result with current cairo from git:
>>
>> a.out: cairo-hash.c:506: _cairo_hash_table_lookup_exact_key: Assertion
>> `!"reached"' failed.
>>
>> Could someone with more clue about how things are supposed to work take a look
>> at this? Chris? Behdad?
>
> Sure, that looks to be a race inside toy-font.
> -Chris
>
> --
> Chris Wilson, Intel Open Source Technology Centre


More information about the cairo mailing list