help understanding a Windows crash report
Thiago Macieira
thiago at macieira.org
Wed Oct 29 18:50:01 PDT 2014
On Wednesday 29 October 2014 15:07:35 Dirk Hohndel wrote:
> I have no debug symbols. Thiago is looking into this and he came to the
> conclusion that this might be a Qt 5.3.2 bug. The previous Fedora version
> was 5.3.1 - but I can't get those RPMs anymore.
I'm fairly certain it's not a Qt bug now. This is a binary incompatibility
issue between QtGui and QtWidgets due either a bug in Dirk's packaging or in
Fedora's packaging.
Dirk: verify that the DLLs you gave me are exactly the ones that Fedora
shipped. If they are, the bug is in Fedora's build, somehow. It looks like a
stale Qt5Gui.dll got packaged instead of the right one.
Explanation:
The backtrace that I managed to obtain with Dirk made little sense, but after
realising that the debugger wasn't picking up the names of unexported
functions, I reconstructed the following backtrace:
#3 QPlatformFontDatabase::resolveFontFamilyAlias(const QString &) const
#4 QFontComboBoxPrivate::_q_updateModel()
[not shown] QFontComboBox::setWritingSystem(QFontDatabase::WritingSystem)
#5 QFontComboBox::QFontComboBox(QWidget *)
If you look at _q_updateModel, you'll see that it does not call
resolveFontFamilyAlias. But by comparing the assembly with the source code,
the crash point is on line:
if (pfdb->isPrivateFontFamily(list.at(i)))
pfdb is a QPlatformFontDatabase.
Here's how I know it's a BIC issue: both resolveFontFamilyAlias and
isPrivateFontFamily are virtual functions and isPrivateFontFamily was added
between Qt 5.3.1 and 5.3.2, inserted just before resolveFontFamilyAlias. That
means the caller in QtWidget placed a call to the correct virtual slot, but
the QPlatformFontDatabase's virtual table in QtGui contained the old function
at that position.
This problem cannot happen in a clean build. The only way for this to happen
is if Fedora rebuilt without cleaning up the .o files or if they accidentally
packaged a pre-release Qt5Gui.dll.
--
Thiago Macieira - thiago (AT) macieira.info - thiago (AT) kde.org
Software Architect - Intel Open Source Technology Center
PGP/GPG: 0x6EF45358; fingerprint:
E067 918B B660 DBD1 105C 966C 33F5 F005 6EF4 5358
More information about the subsurface
mailing list