[Fontconfig] thread problem with fontconfig

Christian Krause krause.chr at gmail.com
Sun Feb 26 18:13:03 PST 2006


Hi,

Recently I found a problem with evince and a special pdf file ([1]).
The backtrace (see below, [2]) indicates that 2 threads call at the
same time functions of the fontconfig library when the crash occurs.

So I have 2 questions:

1. Is fontconfig thread-safe? Is there something special where
developers of multi-threaded applications must take care of?

2. Please can you have a look at the backtrace and give me a hint
where I can start looking for the problem?

Thank you very much in advance.

Best regards,
Christian

[1] http://bugzilla.gnome.org/show_bug.cgi?id=328654

[2]
Program received signal SIGSEGV, Segmentation fault.
[Switching to Thread -1498080336 (LWP 22646)]
0xa76be343 in FcFontSetMatch (config=0xa6213e30, sets=0xa6b50ef8, nsets=1,
    p=0xa6253b80, result=0xa6b50f48) at fcmatch.c:620
620                             if (cand_elts[cand_elt].object ==

(gdb) thread apply all bt

Thread 2 (Thread -1498080336 (LWP 22646)):
#0  0xa76be343 in FcFontSetMatch (config=0xa6213e30, sets=0xa6b50ef8, nsets=1,
    p=0xa6253b80, result=0xa6b50f48) at fcmatch.c:620
#1  0xa76be650 in FcFontMatch (config=0x0, p=0x1, result=0x1) at fcmatch.c:718
#2  0xa73cb056 in GlobalParams::getDisplayFont () from /usr/lib/libpoppler.so.0
#3  0xa739027d in CairoFont::CairoFont () from /usr/lib/libpoppler.so.0
#4  0xa73908c0 in CairoFontEngine::getFont () from /usr/lib/libpoppler.so.0
#5  0xa73914ce in CairoOutputDev::updateFont () from /usr/lib/libpoppler.so.0
#6  0xa73ac7b5 in Gfx::opShowText () from /usr/lib/libpoppler.so.0
#7  0xa73a30c8 in Gfx::execOp () from /usr/lib/libpoppler.so.0
#8  0xa73a32e5 in Gfx::go () from /usr/lib/libpoppler.so.0
#9  0xa73a377f in Gfx::display () from /usr/lib/libpoppler.so.0
#10 0xa73ebce9 in Page::displaySlice () from /usr/lib/libpoppler.so.0
#11 0xa748a081 in poppler_page_render_to_pixbuf ()
   from /usr/lib/libpoppler-glib.so.0
#12 0x08094eae in pdf_document_thumbnails_get_thumbnail (
    document_thumbnails=0x1, page=0, rotation=0, size=0, border=1)
    at ev-poppler.cc:917
#13 0x0808f90c in ev_document_thumbnails_get_thumbnail (document=0x8164ad8,
    page=0, rotation=0, size=0, border=0) at ev-document-thumbnails.c:60
#14 0x080623b1 in ev_job_thumbnail_run (job=0x8295b88) at ev-jobs.c:347
#15 0x0806061f in handle_job (job=0x8295b88) at ev-job-queue.c:96
#16 0x080608e6 in ev_render_thread (data=0x0) at ev-job-queue.c:187
#17 0xa7233a5a in g_thread_create_proxy (data=0x80fb700) at gthread.c:564
#18 0xa7180167 in start_thread () from /lib/libpthread.so.0
#19 0xa6b514a0 in ?? ()
#20 0x00000000 in ?? ()

Thread 1 (Thread -1497610576 (LWP 22642)):
#0  FcObjectPtrU (si=10) at fcname.c:313
#1  0xa76bd64c in FcCompareValueList (o=10, v1orig=
        {bank = 0, u = {stat = 137044584, dyn = 0x82b2268}}, v2orig=
        {bank = 950448371, u = {stat = 119, dyn = 0x77}}, bestValue=0x0,
    value=0xa4a10608, result=0xa) at fcmatch.c:348
#2  0xa76bea1e in FcFontSetSort (config=0xa6213e30, sets=0xafd542f8, nsets=1,
    p=0x82b08c0, trim=1, csp=0x0, result=0xafd543bc) at fcmatch.c:447
#3  0xa76bf020 in FcFontSort (config=0x82b2268, p=0xa, trim=10, csp=0xa,
    result=0xa) at fcmatch.c:981
#4  0xa76e10fb in pango_fc_font_map_load_fontset (fontmap=0x815e038,
    context=0x826bf98, desc=0x82b0728, language=0x8111cf0)
    at pangofc-fontmap.c:1089
#5  0xa76120cc in pango_font_map_load_fontset (fontmap=0x815e038,
    context=0x82b2268, desc=0x82b0728, language=0x82b2268)
    at pango-fontmap.c:106
#6  0xa76101e9 in itemize_state_process_run (state=0xafd54560)
    at pango-context.c:1050
#7  0xa76107fc in pango_itemize_with_base_dir (context=0x826bf98, base_dir=10,
    text=0x8269010 "Loading...", start_index=0, length=137048784, attrs=0xa,
    cached_iter=0xa) at pango-context.c:1194
#8  0xa7617846 in pango_layout_check_lines (layout=0x82b1148)
    at pango-layout.c:3276
#9  0xa76183d6 in pango_layout_get_extents_internal (layout=0x82b1148,
    ink_rect=0x0, logical_rect=0xafd548b0, line_extents=0x0)
    at pango-layout.c:2027
#10 0xa7618d81 in pango_layout_get_pixel_extents (layout=0x82b1148,
    ink_rect=0x0, logical_rect=0xafd548b0) at pango-layout.c:2215
#11 0x0806df80 in ev_view_expose_event (widget=0xa, event=0xafd54df0)
#12 0xa7a4cfab in _gtk_marshal_BOOLEAN__BOXED (closure=0x80f0a58,
    return_value=0xafd54a80, n_param_values=2, param_values=0xafd54bd0,
    invocation_hint=0xafd54aa8, marshal_data=0x806d660) at gtkmarshalers.c:83
#13 0xa72dae1e in g_type_class_meta_marshal (closure=0x80f0a58,
    return_value=0xa, n_param_values=10, param_values=0xafd54bd0,
    invocation_hint=0xa, marshal_data=0xa) at gclosure.c:569
#14 0xa72daae9 in IA__g_closure_invoke (closure=0x80f0a58, return_value=0xa,
    n_param_values=10, param_values=0xa, invocation_hint=0xa) at gclosure.c:492
#15 0xa72efead in signal_emit_unlocked_R (node=0x80f0aa8, detail=0,
    instance=0x81541d0, emission_return=0xafd54b60,
    instance_and_params=0xafd54bd0) at gsignal.c:2523
#16 0xa72f1041 in IA__g_signal_emit_valist (instance=0x81541d0, signal_id=0,
    detail=0, var_args=0xafd54d60 "hMկ\210\030\017\b") at gsignal.c:2254
#17 0xa72f1597 in IA__g_signal_emit (instance=0xa, signal_id=10, detail=10)
    at gsignal.c:2288
#18 0xa7b4ea06 in gtk_widget_event_internal (widget=0x81541d0,
    event=0xafd54df0) at gtkwidget.c:3735
#19 0xa7a4b878 in IA__gtk_main_do_event (event=0xafd54df0) at gtkmain.c:1370
#20 0xa77b28ea in gdk_window_process_updates_internal (window=0x8235818)
    at gdkwindow.c:2215
#21 0xa77b29c7 in IA__gdk_window_process_all_updates () at gdkwindow.c:2268
#22 0xa79b2ec7 in gtk_container_idle_sizer (data=0x0) at gtkcontainer.c:1117
#23 0xa721a1b0 in g_idle_dispatch (source=0x8282f28, callback=0x82b2268,
    user_data=0xa) at gmain.c:3817
#24 0xa7216edd in IA__g_main_context_dispatch (context=0x80e5df0)
    at gmain.c:1934
#25 0xa721884f in g_main_context_iterate (context=0x80e5df0, block=1,
    dispatch=1, self=0x80b6de8) at gmain.c:2565
#26 0xa7218b6d in IA__g_main_loop_run (loop=0x8237618) at gmain.c:2769
#27 0xa7a4a861 in IA__gtk_main () at gtkmain.c:991
#28 0x0807fe6f in main (argc=137044584, argv=0x82b2268) at main.c:295


More information about the Fontconfig mailing list