Gentoo Websites Logo
Go to: Gentoo Home Documentation Forums Lists Bugs Planet Store Wiki Get Gentoo!
Bug 202014 - x11-libs/qt-4.3.3 segfaults on fontconfig if no font is installed
Summary: x11-libs/qt-4.3.3 segfaults on fontconfig if no font is installed
Status: RESOLVED FIXED
Alias: None
Product: Gentoo Linux
Classification: Unclassified
Component: Current packages (show other bugs)
Hardware: All Linux
: High normal
Assignee: Qt Bug Alias
URL:
Whiteboard:
Keywords:
Depends on: 217528
Blocks:
  Show dependency tree
 
Reported: 2007-12-12 07:41 UTC by Alexis Ballier
Modified: 2009-03-27 21:49 UTC (History)
0 users

See Also:
Package list:
Runtime testing required: ---


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Alexis Ballier gentoo-dev 2007-12-12 07:41:10 UTC
I had no font installed and when running e.g. traverso I hit the following segfault:


0xf6c52582 in FcPatternObjectPosition (p=0x0, object=1) at fcpat.c:308
308	    FcPatternElt    *elts = FcPatternElts(p);
(gdb) bt
#0  0xf6c52582 in FcPatternObjectPosition (p=0x0, object=1) at fcpat.c:308
#1  0xf6c5262d in FcPatternObjectFindElt (p=0x0, object=1) at fcpat.c:333
#2  0xf6c5331f in FcPatternObjectGet (p=0x0, object=1, id=0, v=0xffc9b808) at fcpat.c:735
#3  0xf6c535b0 in FcPatternObjectGetString (p=0x0, object=1, id=0, s=0xffc9b890) at fcpat.c:819
#4  0xf6c53616 in IA__FcPatternGetString (p=0x0, object=0xf7dc51c3 "family", id=0, s=0xffc9b890)
    at fcpat.c:832
#5  0xf7966b7d in qt_FcPatternToQFontDef (pattern=0x0, request=@0xffc9b9ec) at text/qfontdatabase_x11.cpp:739
#6  0xf7967178 in tryPatternLoad (p=0x8359960, screen=0, request=@0xffc9b9ec, script=0)
    at text/qfontdatabase_x11.cpp:1623
#7  0xf796d1c9 in loadFc (fp=0x83128d0, script=0, request=@0xffc9b9ec) at text/qfontdatabase_x11.cpp:1686
#8  0xf796eaed in QFontDatabase::load (d=0x83128d0, script=0) at text/qfontdatabase_x11.cpp:1904
#9  0xf78bdbf2 in QFontPrivate::engineForScript (this=0x83128d0, script=0) at text/qfont_p.h:160
#10 0xf798dc76 in QScriptLine::setDefaultHeight (this=0x8372468, eng=0x838d188) at text/qtextengine.cpp:1520
#11 0xf7995f7d in QTextLine::layout_helper (this=0xffc9bc38, maxGlyphs=2147483647)
    at text/qtextlayout.cpp:1505
#12 0xf7996cc8 in QTextLine::setNumColumns (this=0xffc9bc38, numColumns=2147483647)
    at text/qtextlayout.cpp:1433
#13 0xf7996df3 in QTextLayout::endLayout (this=0x837118c) at text/qtextlayout.cpp:621
#14 0xf7b84f22 in QLineEditPrivate::updateTextLayout (this=0x8371020) at widgets/qlineedit.cpp:2670
#15 0xf7b88401 in QLineEditPrivate::init (this=0x8371020, txt=@0xffc9bd28) at widgets/qlineedit.cpp:2640
#16 0xf7b886db in QLineEdit (this=0x8346c80, parent=0x8346c68) at widgets/qlineedit.cpp:260
#17 0xf7b24adf in QAbstractSpinBoxPrivate::init (this=0x8377578) at widgets/qabstractspinbox.cpp:1475
#18 0xf7b26293 in QAbstractSpinBox (this=0x8346c68, dd=@0x8377578, parent=0x8390990)
    at widgets/qabstractspinbox.cpp:138
#19 0xf7bd9994 in QSpinBox (this=0x8346c68, parent=0x8390990) at widgets/qspinbox.cpp:195
[...]


(gdb) up
#1  0xf6c5262d in FcPatternObjectFindElt (p=0x0, object=1) at fcpat.c:333
333	    int	    i = FcPatternObjectPosition (p, object);
(gdb) up
#2  0xf6c5331f in FcPatternObjectGet (p=0x0, object=1, id=0, v=0xffc9b808) at fcpat.c:735
735	    e = FcPatternObjectFindElt (p, object);
(gdb) up
#3  0xf6c535b0 in FcPatternObjectGetString (p=0x0, object=1, id=0, s=0xffc9b890) at fcpat.c:819
819	    r = FcPatternObjectGet (p, object, id, &v);
(gdb) up
#4  0xf6c53616 in IA__FcPatternGetString (p=0x0, object=0xf7dc51c3 "family", id=0, s=0xffc9b890)
    at fcpat.c:832
832	    return FcPatternObjectGetString (p, FcObjectFromName (object), id, s);
(gdb) up
#5  0xf7966b7d in qt_FcPatternToQFontDef (pattern=0x0, request=@0xffc9b9ec) at text/qfontdatabase_x11.cpp:739
739	    if (FcPatternGetString(pattern, FC_FAMILY, 0, &value) == FcResultMatch) {
Current language:  auto; currently c++
(gdb) up
#6  0xf7967178 in tryPatternLoad (p=0x8359960, screen=0, request=@0xffc9b9ec, script=0)
    at text/qfontdatabase_x11.cpp:1623
1623	    engine = new QFontEngineX11FT(match, qt_FcPatternToQFontDef(match, request), screen);
(gdb) print res
$1 = FcResultNoMatch
(gdb) print match
$2 = (FcPattern *) 0x0


having a look at:
static QFontEngine *tryPatternLoad(FcPattern *p, int screen,
                                   const QFontDef &request, int script)
in qt-x11-opensource-src-4.3.3/src/gui/text/qfontdatabase_x11.cpp:1579
shows that neither res nor the return value of FcFontMatch is checked, so no wonder it segfaults.

I'm reporting here as I'm not sure how to fix it, or if qt should just pull in some fonts. Of course, installing something like liberation-fonts-ttf make the segfault disappear.
Comment 1 Caleb Tennis (RETIRED) gentoo-dev 2007-12-12 11:23:11 UTC
a good bet would be to mail your report to qt-bugs@trolltech.com, and when they give you an issue number tag it here so we can follow it.
Comment 2 Alexis Ballier gentoo-dev 2007-12-13 09:40:24 UTC
I didnt find anything about qt-bugs ml on their web site, but I used the web interface and I just received a mail containing: 

We have read your email but require more time to deal with it. We have
assigned it the issue number #191483. Please use this number if you email
us about the issue. We regret that we cannot guarantee a personal reply.
Comment 3 Caleb Tennis (RETIRED) gentoo-dev 2007-12-13 11:26:08 UTC
It's not a mailing list, it's just a place to report bugs, but the web form accomplishes the same issue.

We'll see what their response is.
Comment 4 Ingmar Vanhassel (RETIRED) gentoo-dev 2008-04-13 17:48:27 UTC
According to http://trolltech.com/developer/task-tracker/index_html?method=entry&id=191756 this is fixed in Qt-4.4.0, marking as a dependency of bug 217528.
Comment 5 Ben de Groot (RETIRED) gentoo-dev 2009-03-27 21:49:18 UTC
Problematic version is no longer in portage