[cairo-bugs] [Bug 50705] New: cairo_glyph_path is not multithread safe

bugzilla-daemon at freedesktop.org bugzilla-daemon at freedesktop.org
Mon Jun 4 13:25:20 PDT 2012


             Bug #: 50705
           Summary: cairo_glyph_path is not multithread safe
    Classification: Unclassified
           Product: cairo
           Version: 1.12.2
          Platform: x86-64 (AMD64)
        OS/Version: Linux (All)
            Status: NEW
          Severity: normal
          Priority: medium
         Component: general
        AssignedTo: cworth at cworth.org
        ReportedBy: zhaohongchao at gmail.com
         QAContact: cairo-bugs at cairographics.org

environment: cairo on red hat linux with GCC 3.4.5.
context: use cairo_glyph_path to get halo effect.


When I call the function in single thread environment, it is no problem; but in
multihread when run more than 2 hours, it crashes with the GDB info:

#0  0x0000000000b1f899 in kill ()
#1  0x00000000007f4d7b in __pthread_raise () at src/ul_file.cpp:28
#2  0x0000000000b1fc63 in abort ()
#3  0x0000000000b1a39c in __assert_fail ()
#4  0x00000000006f1589 in _cairo_hash_table_remove (hash_table=Variable
"hash_table" is not available.
) at cairo-hash.c:506
#5  0x00000000006d4b82 in _cairo_scaled_glyph_page_destroy (closure=Variable
"closure" is not available.
) at cairo-scaled-font.c:461
#6  0x00000000006ed1ac in _cairo_cache_shrink_to_accommodate (cache=0x1426480,
additional=0) at cairo-cache.c:223
#7  0x00000000006d5049 in _cairo_scaled_font_thaw_cache
(scaled_font=0x2acb989780) at cairo-scaled-font.c:793
#8  0x00000000006d6a66 in _cairo_scaled_font_glyph_path
(scaled_font=0x2acb989780, glyphs=0x2aab8358b0, num_glyphs=1,
path=0x2acc20e9f0) at cairo-scaled-font.c:2635
#9  0x00000000006bb26d in _cairo_gstate_glyph_path (gstate=0x2acc20e6b8,
glyphs=0x2acc76e210, num_glyphs=1, path=0x2acc20e9f0) at cairo-gstate.c:2061
#10 0x00000000006b2ce6 in cairo_glyph_path (cr=0x2acc20e680, glyphs=Variable
"glyphs" is not available.
) at cairo.c:3548
#11 0x000000000065366b in map::(anonymous namespace)::DrawTextImpl
(cr=0x2acc20e680, scaled_font=0x2ac43638e0, text=@0x2acc76e250,
at=@0x2acc21fb30, desc=@0x1585ad0, angle=0.17453292519943295) at
#12 0x0000000000654ae4 in map::CairoRender::DrawText (this=0x2ab0023e30,
pts=0x2acc21fb30, count=Variable "count" is not available.

On my more than 10 cores, it is on the same function: cairo_glyph_path.
Additionally, when I see other threads info, at least one thread run the same  

so my question is: is cairo_glyph_path multithread safe ?

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