nasty script crash - everyone have a look please!

Lydia Pintscher lydia at kde.org
Wed May 6 14:16:18 CEST 2009


Heya :)

ok a few people already tried to look at this bug
https://bugs.kde.org/show_bug.cgi?id=182810 . It is time everyone here
have a look at it and tries to fix it.

Nikolaj reproduced it on Jaunty regardless of which Amarok version he
uses (2.0.2 and 2.1 beta 1). It doesn't seem to happen on Intrepid.

Quote from the bug report:
-----------------------------------------------------------------------------------------------------

There is a few things going on in this bug repport so I think it is worth
nothing a few things.

In Amarok 2.0.1.1, a script throwing an unhanded exception could bring down
Amarok. This was fixed in 2.0.2 and should no longer be an issue.

The remaining issue is proving much tougher to solve however. The core of the
issue is that, on some systems, trying to load a UI file from within Amarok
(anything like this "UIloader.load( uifile, this);") causes a crash. Every
time.

Looking at the backtrace is where it gets really nasty though.
#12 0x00007fa7d584d707 in QFormInternal::QAbstractFormBuilder::create () from
/usr/lib/libamarokplasma.so.2
#13 0x00007fa7d584068b in QFormInternal::FormBuilderPrivate::create () from
/usr/lib/libamarokplasma.so.2
#14 0x00007fa7b1e384ec in QFormInternal::QAbstractFormBuilder::load () from
/usr/lib/kde4/plugins/script/libqtscript_uitools.so

Reading from the bottom, we start out by having a call to
QFormInternal::QAbstractFormBuilder::load (), in libqtscript_uitools.so. This
is what we would expect as we are telling Qt to load a ui file. Then things
starts to go badly wrong. On the next line (13)
QFormInternal::FormBuilderPrivate::create () is called. This also makes sense
as it is likely a step in parsing a ui file, what does not make sense is that
this function is called in the libamarokplasma.so.2 lib. (Note that Amarok
2.1.0 does not build its own plasma lib but relies on the system one, but the
issue is essentially the same, it just calls it in libplasma instead of
libamarokplasma )

It would seem that, for some reason, plasma is exporting some symbols that are
also exported by the Qt uitools lib, and that the linker somehow manages to
switch around between these 2 libs in mid flight.

As to why this happens or how to fix it, any ideas would be very welcome!
-----------------------------------------------------------------------------------------------------


As Amarok crashes right on startup this is quite bad.


Cheers
Lydia

-- 
Lydia Pintscher
Amarok community manager
kde.org - amarok.kde.org - kubuntu.org
claimid.com/nightrose


More information about the Amarok-devel mailing list