[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-bugs-dist
Subject:    [Bug 270487] Choqok lanza un erroa al reiniciar KDE
From:       Erik Hovland <erik () hovland ! org>
Date:       2011-04-17 19:14:07
Message-ID: 20110417191407.CE55685965 () immanuel ! kde ! org
[Download RAW message or body]

https://bugs.kde.org/show_bug.cgi?id=270487


Erik Hovland <erik@hovland.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |erik@hovland.org




--- Comment #3 from Erik Hovland <erik hovland org>  2011-04-17 21:14:04 ---
I am using the choqok from the kubuntu ppa: 1.1-1ppa~adilson~maverick.1. I see
roughly the same crash over and over again:
Thread 1 (Thread 0xb77a2710 (LWP 6113)):
[KCrash Handler]
#7  0x00fcf416 in __kernel_vsyscall ()
#8  0x07b4b941 in raise () from /lib/libc.so.6
#9  0x07b4ee42 in abort () from /lib/libc.so.6
#10 0x055ba2dc in qt_message_output (msgType=QtFatalMsg, buf=0x944aa78
"choqok(6113): Accessed invalid KPluginInfo object ") at
global/qglobal.cpp:2259
#11 0x05b05532 in KPluginInfo::category() const () from
/usr/lib/libkdecore.so.5
#12 0x05b0622c in KPluginInfo::operator<(KPluginInfo const&) const () from
/usr/lib/libkdecore.so.5
#13 0x00c2994c in ?? () from /usr/lib/libchoqok.so.1
#14 0x00c237b0 in Choqok::PluginManager::slotPluginReadyForUnload() () from
/usr/lib/libchoqok.so.1
#15 0x00c28d1b in Choqok::PluginManager::qt_metacall(QMetaObject::Call, int,
void**) () from /usr/lib/libchoqok.so.1
#16 0x056cb8ca in QMetaObject::metacall (object=0x8b92df4, cl=6113, idx=10,
argv=0x0) at kernel/qmetaobject.cpp:237
#17 0x056de6ad in QMetaObject::activate (sender=0x8ca39f0, m=0xc5c7e0,
local_signal_index=1, argv=0x0) at kernel/qobject.cpp:3280
#18 0x00c1ead7 in Choqok::Plugin::readyForUnload() () from
/usr/lib/libchoqok.so.1
#19 0x0389f9a8 in TwitterApiMicroBlog::saveTimeline (this=0x8ca39f0,
account=0x8ca45d8, timelineName=..., timeline=...) at
/home/erik/src/choqok/helperlibs/twitterapihelper/twitterapimicroblog.cpp:275
#20 0x00c38cbb in Choqok::UI::TimelineWidget::saveTimeline() () from
/usr/lib/libchoqok.so.1
#21 0x00c39dce in Choqok::UI::TimelineWidget::qt_metacall(QMetaObject::Call,
int, void**) () from /usr/lib/libchoqok.so.1
#22 0x0389088a in TwitterApiTimelineWidget::qt_metacall (this=0x9352d00,
_c=QMetaObject::InvokeMetaMethod, _id=34, _a=0xbfa2685c) at
/home/erik/src/choqok/build/helperlibs/twitterapihelper/moc_twitterapitimelinewidget.cpp:70
#23 0x056cb8ca in QMetaObject::metacall (object=0x9352d00, cl=6113, idx=34,
argv=0xbfa2685c) at kernel/qmetaobject.cpp:237
#24 0x056de6ad in QMetaObject::activate (sender=0x8ca39f0, m=0xc5c620,
local_signal_index=8, argv=0x0) at kernel/qobject.cpp:3280
#25 0x00c1e237 in Choqok::MicroBlog::saveTimelines() () from
/usr/lib/libchoqok.so.1
#26 0x00c1e53b in Choqok::MicroBlog::qt_metacall(QMetaObject::Call, int,
void**) () from /usr/lib/libchoqok.so.1
#27 0x038948fa in TwitterApiMicroBlog::qt_metacall (this=0x8ca39f0,
_c=QMetaObject::InvokeMetaMethod, _id=14, _a=0xbfa26a4c) at
/home/erik/src/choqok/build/helperlibs/twitterapihelper/twitterapimicroblog.moc:118
#28 0x077a9ca4 in ?? () from /usr/lib/kde4/choqok_twitter.so
#29 0x056cb8ca in QMetaObject::metacall (object=0x8ca39f0, cl=6113, idx=14,
argv=0x0) at kernel/qmetaobject.cpp:237
#30 0x056de6ad in QMetaObject::activate (sender=0x8ca3668, m=0x57f85a4,
local_signal_index=0, argv=0x0) at kernel/qobject.cpp:3280
#31 0x057301e7 in QTimer::timeout (this=0x8ca3668) at
.moc/release-shared/moc_qtimer.cpp:134
#32 0x056e41ce in QTimer::timerEvent (this=0x8ca3668, e=0xbfa26f80) at
kernel/qtimer.cpp:271
#33 0x056d8504 in QObject::event (this=0x8ca3668, e=0x6) at
kernel/qobject.cpp:1183
#34 0x01110fdc in QApplicationPrivate::notify_helper (this=0x8a5ebd0,
receiver=0x8ca3668, e=0xbfa26f80) at kernel/qapplication.cpp:4396
#35 0x0111704e in QApplication::notify (this=0xbfa272ec, receiver=0x8ca3668,
e=0xbfa26f80) at kernel/qapplication.cpp:3798
#36 0x002e868a in KApplication::notify(QObject*, QEvent*) () from
/usr/lib/libkdeui.so.5
#37 0x056c5b3b in QCoreApplication::notifyInternal (this=0xbfa272ec,
receiver=0x8ca3668, event=0xbfa26f80) at kernel/qcoreapplication.cpp:732
#38 0x056f7ad6 in sendEvent (this=0x8a61e74) at
../../include/QtCore/../../src/corelib/kernel/qcoreapplication.h:215
#39 QTimerInfoList::activateTimers (this=0x8a61e74) at
kernel/qeventdispatcher_unix.cpp:602
#40 0x056f4874 in timerSourceDispatch (source=0x8a61e40) at
kernel/qeventdispatcher_glib.cpp:184
#41 0x053e4855 in g_main_context_dispatch () from /lib/libglib-2.0.so.0
#42 0x053e8668 in ?? () from /lib/libglib-2.0.so.0
#43 0x053e8848 in g_main_context_iteration () from /lib/libglib-2.0.so.0
#44 0x056f4565 in QEventDispatcherGlib::processEvents (this=0x8a3bb58,
flags=...) at kernel/qeventdispatcher_glib.cpp:415
#45 0x011d2be5 in QGuiEventDispatcherGlib::processEvents (this=0x8a3bb58,
flags=...) at kernel/qguieventdispatcher_glib.cpp:204
#46 0x056c4609 in QEventLoop::processEvents (this=0xbfa27244, flags=) at
kernel/qeventloop.cpp:149
#47 0x056c4a8a in QEventLoop::exec (this=0xbfa27244, flags=...) at
kernel/qeventloop.cpp:201
#48 0x056c900f in QCoreApplication::exec () at kernel/qcoreapplication.cpp:1009
#49 0x0110fe07 in QApplication::exec () at kernel/qapplication.cpp:3672
#50 0x0805421a in _start ()

Further inspection of the code leads me to this call site:
void PluginManager::slotPluginReadyForUnload()
{
    kDebug();
    // Using QObject::sender() is on purpose here, because otherwise all
    // plugins would have to pass 'this' as parameter, which makes the API
    // less clean for plugin authors
    // FIXME: I don't buy the above argument. Add a
Choqok::Plugin::emitReadyForUnload(void),
    //        and make readyForUnload be passed a plugin. - Richard
    Plugin *plugin = dynamic_cast<Plugin *>( const_cast<QObject *>( sender() )
);
    if ( !plugin )
    {
        kWarning() << "Calling object is not a plugin!";
        return;
    }
    kDebug() << plugin->pluginId() << "ready for unload";
    _kpmp->loadedPlugins.remove(_kpmp->loadedPlugins.key(plugin));
    plugin->deleteLater();
    plugin = 0L;
    if(_kpmp->loadedPlugins.count() < 1){
        slotShutdownDone();
    }
}

in libchoqok/pluginmanager.cpp. Looking through kplugininfo.cpp, I found this
call site:
00286 QString KPluginInfo::category() const
00287 {
00288     KPLUGININFO_ISVALID_ASSERTION;
00289     return d->category;
00290 }

Which would produce this error in this call stack if d is invalid. I was unable
to find the connection between slotPluginReadyForUnload() and
KPluginInfo::category(). But I believe the connection is there.

-- 
Configure bugmail: https://bugs.kde.org/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are watching all bug changes.
[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic