[PATCH] Fix for plasma crashes in Kubuntu

Alexey Borzenkov snaury at gmail.com
Wed Feb 19 12:48:55 UTC 2014


On Wed, Feb 19, 2014 at 4:37 PM, David Edmundson
<david at davidedmundson.co.uk> wrote:
> Whoa. It's really nice to see people get down and dirty with Qt internals.
>
> The best place for these patches is https://codereview.qt-project.org/#mine.
> It's a bit intimidating but worth it:
> http://qt-project.org/wiki/Gerrit-Introduction

But the bug is introduced by a kubuntu-specific patch (which is said
to be taken from some a11y branch, but I couldn't find it :-/).
There's no such bug upstream, why would they review it? Or am I
mistaken and this patch is upstream somewhere and upstream needs to
fix it?

> You're now sharing the QDeclarativeAccessibilityUpdater between
> engines which from what you described would also be bad.

It's not bad in that sense, because it's effectively stateless and all
it does is forwarding into static members of another class, so sharing
should be ok, all it needs is to satisfy the interface. The only
question is where to place it.

> Do you have the original backtrace?

Sure:

Thread 1 (Thread 0x7f40c2f837c0 (LWP 1985)):
[KCrash Handler]
#6  0x00007f40c1000334 in QDeclarativeItem::~QDeclarativeItem
(this=0x3d7a640, __in_chrg=<optimized out>) at
graphicsitems/qdeclarativeitem.cpp:1668
#7  0x00007f4023606aa1 in ~QDeclarativeElement (this=0x3d7a640,
__in_chrg=<optimized out>) at
/usr/include/qt4/QtDeclarative/qdeclarativeprivate.h:87
#8  QDeclarativePrivate::QDeclarativeElement<Plasma::FrameSvgItem>::~QDeclarativeElement
(this=0x3d7a640, __in_chrg=<optimized out>) at
/usr/include/qt4/QtDeclarative/qdeclarativeprivate.h:87
#9  0x00007f40bf41ce08 in QObject::event (this=0x3d7a640, e=<optimized
out>) at kernel/qobject.cpp:1175
#10 0x00007f40be7a1dfc in QApplicationPrivate::notify_helper
(this=this at entry=0x16dd9d0, receiver=receiver at entry=0x3d7a640,
e=e at entry=0x3b4be60) at kernel/qapplication.cpp:4567
#11 0x00007f40be7a8470 in QApplication::notify
(this=this at entry=0x16c2700, receiver=receiver at entry=0x3d7a640,
e=e at entry=0x3b4be60) at kernel/qapplication.cpp:4353
#12 0x00007f40c00c8a6a in KApplication::notify (this=0x16c2700,
receiver=0x3d7a640, event=0x3b4be60) at
../../kdeui/kernel/kapplication.cpp:311
#13 0x00007f40bf4048bd in QCoreApplication::notifyInternal
(this=0x16c2700, receiver=receiver at entry=0x3d7a640,
event=event at entry=0x3b4be60) at kernel/qcoreapplication.cpp:946
#14 0x00007f40bf407e1f in sendEvent (event=0x3b4be60,
receiver=0x3d7a640) at
../../include/QtCore/../../src/corelib/kernel/qcoreapplication.h:231
#15 QCoreApplicationPrivate::sendPostedEvents
(receiver=receiver at entry=0x0, event_type=event_type at entry=0,
data=0x16571f0) at kernel/qcoreapplication.cpp:1570
#16 0x00007f40bf4082c3 in QCoreApplication::sendPostedEvents
(receiver=receiver at entry=0x0, event_type=event_type at entry=0) at
kernel/qcoreapplication.cpp:1463
#17 0x00007f40bf432073 in sendPostedEvents () at
../../include/QtCore/../../src/corelib/kernel/qcoreapplication.h:236
#18 postEventSourceDispatch (s=0x16dee50) at
kernel/qeventdispatcher_glib.cpp:279
#19 0x00007f40b5bc53b6 in g_main_context_dispatch () from
/lib/x86_64-linux-gnu/libglib-2.0.so.0
#20 0x00007f40b5bc5708 in ?? () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#21 0x00007f40b5bc57ac in g_main_context_iteration () from
/lib/x86_64-linux-gnu/libglib-2.0.so.0
#22 0x00007f40bf431a55 in QEventDispatcherGlib::processEvents
(this=0x16dd030, flags=...) at kernel/qeventdispatcher_glib.cpp:424
#23 0x00007f40be8439d6 in QGuiEventDispatcherGlib::processEvents
(this=<optimized out>, flags=...) at
kernel/qguieventdispatcher_glib.cpp:204
#24 0x00007f40bf4035ef in QEventLoop::processEvents
(this=this at entry=0x7fffd0054700, flags=...) at
kernel/qeventloop.cpp:149
#25 0x00007f40bf4038e5 in QEventLoop::exec
(this=this at entry=0x7fffd0054700, flags=...) at
kernel/qeventloop.cpp:204
#26 0x00007f40bf408e5b in QCoreApplication::exec () at
kernel/qcoreapplication.cpp:1218
#27 0x00007f40be7a034c in QApplication::exec () at kernel/qapplication.cpp:3828
#28 0x00007f40c2b6e64c in kdemain (argc=1, argv=0x7fffd0054958) at
../../../../plasma/desktop/shell/main.cpp:126
#29 0x00007f40c278bde5 in __libc_start_main (main=0x4006e0 <main(int,
char**)>, argc=1, ubp_av=0x7fffd0054958, init=<optimized out>,
fini=<optimized out>, rtld_fini=<optimized out>,
stack_end=0x7fffd0054948) at libc-start.c:260
#30 0x000000000040070e in _start ()

Thanks,
Alexey.



More information about the kubuntu-devel mailing list