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