[cairo-bugs] [Bug 4030] Crash with cairo CVS
bugzilla-daemon at freedesktop.org
bugzilla-daemon at freedesktop.org
Fri Jan 27 21:21:12 PST 2006
Please do not reply to this email: if you want to comment on the bug, go to
the URL shown below and enter yourcomments there.
https://bugs.freedesktop.org/show_bug.cgi?id=4030
------- Additional Comments From mathis.ahrens at gmx.de 2006-01-28 16:16 -------
I see the same. Trying to summarize a bit:
I think there are two issues here:
1. Wrong font rendering of bitmap fonts by poppler 0.5.0 + fontconfig
2. Segfault when closing evince after that wrong rendering
This happens also in pdfs without Helvetica,
but it disappears when I disable bitmap fonts in my fontconfig
like this:
<selectfont>
<rejectfont>
<pattern>
<patelt name="scalable"><bool>false</bool></patelt>
</pattern>
</rejectfont>
</selectfont>
(reject NON-scalable, that is)
My version of the evince crash is similar:
#0 0xb6f29758 in FT_Done_Face (face=0x31) at ftobjs.c:1820
#1 0xb7199f85 in ~CairoFont (this=0xb5400708) at CairoFontEngine.cc:258
#2 0xb719a259 in ~CairoFontEngine (this=0x83c3140) at CairoFontEngine.cc:309
#3 0xb719a69a in ~CairoOutputDev (this=0x83bcea0) at CairoOutputDev.cc:65
#4 0xb7374b9f in poppler_document_save () from /usr/lib/libpoppler-glib.so.0
#5 0xb6db5f6b in g_object_unref () from /usr/lib/libgobject-2.0.so.0
#6 0xb76d04f0 in gtk_signal_emitv_by_name () from /usr/lib/libgtk-x11-2.0.so.0
poppler_document_save() or poppler_document_finalize()
both trigger the same deadly sequence:
- some cairo destructors
- libfreetype's FT_Done_Face
This is where I loose it, I gotta sleep, but maybe this helps someone:
FT_EXPORT_DEF( FT_Error )
FT_Done_Face( FT_Face face )
{
FT_Error error;
FT_Driver driver;
FT_Memory memory;
FT_ListNode node;
error = FT_Err_Invalid_Face_Handle;
if ( face && face->driver ) // this is line 1820
{
driver = face->driver;
memory = driver->root.memory;
/* find face in driver's list */
node = FT_List_Find( &driver->faces_list, face );
if ( node )
{
/* remove face object from the driver's list */
FT_List_Remove( &driver->faces_list, node );
FT_FREE( node );
/* now destroy the object proper */
destroy_face( memory, face, driver );
error = FT_Err_Ok;
}
}
return error;
}
--
Configure bugmail: https://bugs.freedesktop.org/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the QA contact for the bug, or are watching the QA contact.
More information about the cairo-bugs
mailing list