[Kde-bindings] Ruby plasmoid - crash during Garbage collection

Cédric kde at xfou.com
Sat Dec 12 15:36:02 UTC 2009


Hi,

I am working on a ruby plasmoid and my application is not really stable and
sometimes plasma crashes, sometimes just passing the mouse over the panel
seems to crash plasma.

I put the qt debug level to the max but this trigger another bug (Ruby
object allocation during Garbage collection).

Disabling Garbage collection solved the instability problem.

Here is for example a backtrace :

 Application: Espace de travail Plasma (plasma-desktop), signal:
Segmentation fault

[Current thread is 1 (Thread 0xb336a730 (LWP 11416))]

Thread 2 (Thread 0xa56adb70 (LWP 11417)):

#0 0xb7753430 in __kernel_vsyscall ()

#1 0xb464fe15 in pthread_cond_wait@@GLIBC_2.3.2 () from
/lib/tls/i686/cmov/libpthread.so.0

#2 0xb764c78d in pthread_cond_wait () from /lib/tls/i686/cmov/libc.so.6

#3 0xb5f4fe67 in QWaitConditionPrivate::wait (this=0xa819710,
mutex=0xa81970c, time=4294967295) at thread/qwaitcondition_unix.cpp:87

#4 QWaitCondition::wait (this=0xa819710, mutex=0xa81970c, time=4294967295)
at thread/qwaitcondition_unix.cpp:159

#5 0xb4948922 in QHostInfoAgent::run (this=0xa819700) at
kernel/qhostinfo.cpp:260

#6 0xb5f4ee32 in QThreadPrivate::start (arg=0xa819700) at
thread/qthread_unix.cpp:188

#7 0xb464b80e in start_thread () from /lib/tls/i686/cmov/libpthread.so.0

#8 0xb763f7ee in clone () from /lib/tls/i686/cmov/libc.so.6

Thread 1 (Thread 0xb336a730 (LWP 11416)):

[KCrash Handler]

#6 0xa7cb0830 in smokeruby_free(void*) () from
/usr/lib/libqtruby4shared.so.2

#7 0xa7d925e3 in run_final (p=<value optimized out>) at gc.c:1946

#8 finalize_list (p=<value optimized out>) at gc.c:1097

#9 0xa7d9278b in rb_gc_finalize_deferred () at gc.c:1974

#10 0xa7d81075 in rb_thread_schedule () at eval.c:11004

#11 0xa7d79565 in rb_eval (self=<value optimized out>, n=<value optimized
out>) at eval.c:4170

#12 0xa7d7967b in rb_eval (self=2816726384, n=<value optimized out>) at
eval.c:3497

#13 0xa7d7967b in rb_eval (self=2816726384, n=<value optimized out>) at
eval.c:3497

#14 0xa7d7c9ab in rb_eval (self=<value optimized out>, n=<value optimized
out>) at eval.c:3343

#15 0xa7d7eab9 in rb_call0 (klass=<value optimized out>, recv=<value
optimized out>, id=4057, oid=4057, argc=2, argv=0xbfac01f0, body=0xa7380a34,
flags=0) at eval.c:6068

#16 0xa7d7edba in rb_call (klass=2805964820, recv=2764513660, mid=4057,
argc=2, argv=0xbfac01f0, scope=1, self=6) at eval.c:6164

#17 0xa7d7f6b9 in rb_funcall2 (recv=191382352, mid=4057, argc=2,
argv=0xbfac01f0) at eval.c:6300

#18 0xa7d8577a in method_missing (obj=<value optimized out>, id=<value
optimized out>, argc=1, argv=0xbfac0300, call_status=0) at eval.c:5742

#19 0xa7d7eea6 in rb_call (klass=2764345620, recv=2764513660, mid=23828,
argc=1, argv=0xbfac0300, scope=1, self=2764513660) at eval.c:6133

#20 0xa7d7c0c2 in rb_eval (self=<value optimized out>, n=<value optimized
out>) at eval.c:3485

#21 0xa7d7c518 in rb_eval (self=3215723956, n=<value optimized out>) at
eval.c:3319

#22 0xa7d7eab9 in rb_call0 (klass=<value optimized out>, recv=<value
optimized out>, id=11225, oid=11225, argc=1, argv=0xbfac0db0,
body=0xa4c54488, flags=0) at eval.c:6068

#23 0xa7d7edba in rb_call (klass=2764645040, recv=2764513660, mid=11225,
argc=1, argv=0xbfac0db0, scope=0, self=2805415460) at eval.c:6164

#24 0xa7d7bfcb in rb_eval (self=<value optimized out>, n=<value optimized
out>) at eval.c:3503

#25 0xa7d7eab9 in rb_call0 (klass=<value optimized out>, recv=<value
optimized out>, id=11225, oid=11225, argc=1, argv=0xbfac1740,
body=0xa73771a0, flags=0) at eval.c:6068

#26 0xa7d7edba in rb_call (klass=2805949940, recv=2805415460, mid=11225,
argc=1, argv=0xbfac1740, scope=1, self=6) at eval.c:6164

#27 0xa7d7f6b9 in rb_funcall2 (recv=191382352, mid=11225, argc=1,
argv=0xbfac1740) at eval.c:6300

#28 0xa7cb806b in ?? () from /usr/lib/libqtruby4shared.so.2

#29 0xa7d75371 in rb_protect (proc=0xa7cb8030, data=2805415460,
state=0xbfac16a8) at eval.c:5539

#30 0xa7cb9630 in QtRuby::VirtualMethodCall::callMethod() () from
/usr/lib/libqtruby4shared.so.2

#31 0xa7cb813e in QtRuby::MethodCallBase::next() () from
/usr/lib/libqtruby4shared.so.2

#32 0xa7c87e36 in QtRuby::Binding::callMethod(short, void*,
Smoke::StackItem*, bool) () from /usr/lib/libqtruby4shared.so.2

#33 0xa7c0b16b in ?? () from /usr/lib/libsmokeplasma.so.2

#34 0xb73fdc7c in Plasma::Applet::constraintsEvent (this=0xa705c30,
constraints=...) at ../../plasma/applet.cpp:673

#35 0xb7404843 in Plasma::Applet::flushPendingConstraintsEvents
(this=0xa6de9c8) at ../../plasma/applet.cpp:1173

#36 0xb7404f78 in Plasma::Applet::timerEvent (this=0xa705c30,
event=0xbfac1e30) at ../../plasma/applet.cpp:2120

#37 0xb604f3bf in QObject::event (this=0xa705c30, e=0xbfac1e30) at
kernel/qobject.cpp:1075

#38 0xb691eb64 in QGraphicsWidget::event (this=0xa705c30, event=0xbfac1e30)
at graphicsview/qgraphicswidget.cpp:1340

#39 0xb62c5f54 in QApplicationPrivate::notify_helper (this=0xa01e310,
receiver=0xa705c30, e=0xbfac1e30) at kernel/qapplication.cpp:4056

#40 0xb62cd67c in QApplication::notify (this=0xa01b550, receiver=0xa705c30,
e=0xbfac1e30) at kernel/qapplication.cpp:3603

#41 0xb6f5dbfa in KApplication::notify (this=0xa01b550, receiver=0xa705c30,
event=0xbfac1e30) at ../../kdeui/kernel/kapplication.cpp:302

#42 0xb603f6cb in QCoreApplication::notifyInternal (this=0xa01b550,
receiver=0xa705c30, event=0xbfac1e30) at kernel/qcoreapplication.cpp:610

#43 0xb606c7ce in QCoreApplication::sendEvent (this=0xa021134) at
../../include/QtCore/../../src/corelib/kernel/qcoreapplication.h:213

#44 QTimerInfoList::activateTimers (this=0xa021134) at
kernel/qeventdispatcher_unix.cpp:572

#45 0xb606a0e0 in timerSourceDispatch (source=0xa021100) at
kernel/qeventdispatcher_glib.cpp:165

#46 0xb4697e78 in g_main_context_dispatch () from /lib/libglib-2.0.so.0

#47 0xb469b720 in ?? () from /lib/libglib-2.0.so.0

#48 0xb469b853 in g_main_context_iteration () from /lib/libglib-2.0.so.0

#49 0xb606a02c in QEventDispatcherGlib::processEvents (this=0x9fefb68,
flags=...) at kernel/qeventdispatcher_glib.cpp:327

#50 0xb6366be5 in QGuiEventDispatcherGlib::processEvents (this=0x9fefb68,
flags=...) at kernel/qguieventdispatcher_glib.cpp:202

#51 0xb603dc79 in QEventLoop::processEvents (this=0xbfac20f4, flags=) at
kernel/qeventloop.cpp:149

#52 0xb603e0ca in QEventLoop::exec (this=0xbfac20f4, flags=...) at
kernel/qeventloop.cpp:201

#53 0xb604053f in QCoreApplication::exec () at
kernel/qcoreapplication.cpp:888

#54 0xb62c5dd7 in QApplication::exec () at kernel/qapplication.cpp:3525

#55 0xb76e780d in kdemain (argc=1, argv=0xbfac22d4) at
../../../../plasma/shells/desktop/main.cpp:50

#56 0x080485cb in main (argc=1, argv=0xbfac22d4) at
plasma-desktop_dummy.cpp:3


I hope this will help you correct this bug.


By the way is their a way to desactive only Smokes garbage collection ?


I am using kubuntu with KDE 4.3.2.

I'll be back

Thanks
Cédric
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.kde.org/pipermail/kde-bindings/attachments/20091212/7717cbe6/attachment.html>


More information about the Kde-bindings mailing list