Summary: | KGet got signal 11 | ||
---|---|---|---|
Product: | [Applications] kget | Reporter: | cerebro84 |
Component: | general | Assignee: | KGet authors <kget> |
Status: | RESOLVED FIXED | ||
Severity: | crash | CC: | dan.dickey, mveinot, rdieter, werner |
Priority: | NOR | ||
Version: | 0.8.3 | ||
Target Milestone: | --- | ||
Platform: | unspecified | ||
OS: | Linux | ||
Latest Commit: | Version Fixed In: | ||
Attachments: | A patch fixing the bug |
Description
cerebro84
2004-07-04 09:53:30 UTC
*** Bug 85167 has been marked as a duplicate of this bug. *** Confirmed for kde-3.3.0 as released to packagers, on redhat 7.3, redhat 9.0, redhat enterprise 3.0 all experience the same problem. (Oddly Fedora Core 2's symptoms are slighty different, but I'll report that separately) The problem here is that KMainWidget::updateStatusBar(), which updates a tooltip of the dock too, is called *before* KMainWidget::kdock gets initialized. Consider these backtraces: ==9591== Use of uninitialised value of size 4 ==9591== at 0x1C75A1B4: QGDict::look_ptr(void*, void*, int) (in /usr/lib/libqt-mt.so.3.3.3) ==9591== by 0x1C5DE0E7: QTipManager::remove(QWidget*, QRect const&, bool) (in /usr/lib/libqt-mt.so.3.3.3) ==9591== by 0x1C5DFC6C: QToolTip::remove(QWidget*) (in /usr/lib/libqt-mt.so.3.3.3) ==9591== by 0x807806E: DockWidget::updateToolTip(QString const&) (docking.cpp:102) ==9591== by 0x8074193: KMainWidget::updateStatusBar() (kmainwidget.cpp:2064) ==9591== by 0x806EE03: KMainWidget::setupGUI() (kmainwidget.cpp:402) ==9591== by 0x806C967: KMainWidget::KMainWidget(bool) (kmainwidget.cpp:153) ==9591== by 0x80925D8: KGetApp::newInstance() (main.cpp:145) ==9591== by 0x1C0863F1: KUniqueApplication::processDelayed() (in /usr/lib/libkdecore.so.4.2.0) ==9591== by 0x1C08689E: KUniqueApplication::qt_invoke(int, QUObject*) (in /usr/lib/libkdecore.so.4.2.0) ==9591== by 0x1C4A550B: QObject::activate_signal(QConnectionList*, QUObject*) (in /usr/lib/libqt-mt.so.3.3.3) ==9591== by 0x1C7E3069: QSignal::signal(QVariant const&) (in /usr/lib/libqt-mt.so.3.3.3) ==9591== by 0x1C4BF6CC: QSignal::activate() (in /usr/lib/libqt-mt.so.3.3.3) ==9591== by 0x1C4C6EB2: QSingleShotTimer::event(QEvent*) (in /usr/lib/libqt-mt.so.3.3.3) ==9591== by 0x1C448BCE: QApplication::internalNotify(QObject*, QEvent*) (in /usr/lib/libqt-mt.so.3.3.3) ==9591== by 0x1C4481CD: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libqt-mt.so.3.3.3) ==9591== by 0x1BFDFF12: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdecore.so.4.2.0) ==9591== by 0x1C438404: QEventLoop::activateTimers() (in /usr/lib/libqt-mt.so.3.3.3) ==9591== by 0x1C3F1C4A: QEventLoop::processEvents(unsigned) (in /usr/lib/libqt-mt.so.3.3.3) ==9591== by 0x1C45AF27: QEventLoop::enterLoop() (in /usr/lib/libqt-mt.so.3.3.3) ==9591== by 0x1C45ADD7: QEventLoop::exec() (in /usr/lib/libqt-mt.so.3.3.3) ==9591== by 0x1C448E20: QApplication::exec() (in /usr/lib/libqt-mt.so.3.3.3) ==9591== by 0x80807F4: main (main.cpp:206) ==9591== Use of uninitialised value of size 4 ==9591== at 0x1C75A9AB: QGDict::unlink_ptr(void*, void*) (in /usr/lib/libqt-mt.so.3.3.3) ==9591== by 0x1C75AD90: QGDict::take_ptr(void*) (in /usr/lib/libqt-mt.so.3.3.3) ==9591== by 0x1C5DE24B: QTipManager::remove(QWidget*, QRect const&, bool) (in /usr/lib/libqt-mt.so.3.3.3) ==9591== by 0x1C5DFC6C: QToolTip::remove(QWidget*) (in /usr/lib/libqt-mt.so.3.3.3) ==9591== by 0x807806E: DockWidget::updateToolTip(QString const&) (docking.cpp:102) ==9591== by 0x8074193: KMainWidget::updateStatusBar() (kmainwidget.cpp:2064) ==9591== by 0x8071E38: KMainWidget::checkQueue() (kmainwidget.cpp:1305) ==9591== by 0x806F903: KMainWidget::readTransfersEx(KURL const&) (kmainwidget.cpp:599) ==9591== by 0x806F8B7: KMainWidget::readTransfers(bool) (kmainwidget.cpp:575) ==9591== by 0x806CD35: KMainWidget::KMainWidget(bool) (kmainwidget.cpp:208) ==9591== by 0x80925D8: KGetApp::newInstance() (main.cpp:145) ==9591== by 0x1C0863F1: KUniqueApplication::processDelayed() (in /usr/lib/libkdecore.so.4.2.0) ==9591== by 0x1C08689E: KUniqueApplication::qt_invoke(int, QUObject*) (in /usr/lib/libkdecore.so.4.2.0) ==9591== by 0x1C4A550B: QObject::activate_signal(QConnectionList*, QUObject*) (in /usr/lib/libqt-mt.so.3.3.3) ==9591== by 0x1C7E3069: QSignal::signal(QVariant const&) (in /usr/lib/libqt-mt.so.3.3.3) ==9591== by 0x1C4BF6CC: QSignal::activate() (in /usr/lib/libqt-mt.so.3.3.3) ==9591== by 0x1C4C6EB2: QSingleShotTimer::event(QEvent*) (in /usr/lib/libqt-mt.so.3.3.3) ==9591== by 0x1C448BCE: QApplication::internalNotify(QObject*, QEvent*) (in /usr/lib/libqt-mt.so.3.3.3) ==9591== by 0x1C4481CD: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libqt-mt.so.3.3.3) ==9591== by 0x1BFDFF12: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdecore.so.4.2.0) ==9591== by 0x1C438404: QEventLoop::activateTimers() (in /usr/lib/libqt-mt.so.3.3.3) ==9591== by 0x1C3F1C4A: QEventLoop::processEvents(unsigned) (in /usr/lib/libqt-mt.so.3.3.3) ==9591== by 0x1C45AF27: QEventLoop::enterLoop() (in /usr/lib/libqt-mt.so.3.3.3) ==9591== by 0x1C45ADD7: QEventLoop::exec() (in /usr/lib/libqt-mt.so.3.3.3) ==9591== by 0x1C448E20: QApplication::exec() (in /usr/lib/libqt-mt.so.3.3.3) ==9591== by 0x80807F4: main (main.cpp:206) Thus, two functions, namely KMainWidget::setupGUI() and KMainWidget::readTransfers(bool), try to access the dock, which hasn't been created yet. I've made a patch (see the attachment), which fixes this bug by adding a validility test of the kdock object into KMainWidget::updateStatusBar(). Created attachment 7188 [details]
A patch fixing the bug
Please fix this bug ASAP because it makes kget almost unusable.
Thanks Modestas. Provided patch seems to do the trick! *** Bug 81835 has been marked as a duplicate of this bug. *** Thanks for the patch. No more sig 11 here :) In my case kget is crashing directly after starting it (sig 11, crash handler doesn't start, as in bug 81835 (closed/duplicate)), but not if crystal is the active icon theme or it is called with "kget -icon kget" (this is the way kget is started by the k menu entry). And every once a while it crashes with sig 4 instead of 11 (and in this case the kde crash handler is starting) (kget 3.3.1, debian sid) Same problem here: Debian Sid, kget 3.3.1. kget immediatly crashed with signal 11 and without the crash dialog. If I remove ~/.kde/share/config/kgetrc, I get the dialog box asking if I want to integrate kget with konqueror, but it then crashes without the crash dialog. If kget is started by "kget -icon kget", it works. I didn't get a signal 4 crash, but I have only tested for a few minutes. Hope it helps. BTW, kget 3.3.0 works as it should (debian sid, kget_4%3a3.3.0-2_i386.deb), only 3.3.1 crashs. FYI, patch in comment #4 fixes the issue. Patch in #4 fixes it for me too. kget from debian unstable is fixed... Here is the bug report (resolved): http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=280616 CVS commit by coolo: a working patch available since august and no-one is picking it up? What's up with kget? No-one cares? ;( BUG: 84450 M +9 -8 kmainwidget.cpp 1.106 --- kdenetwork/kget/kmainwidget.cpp #1.105:1.106 @@ -112,5 +112,5 @@ KMainWidget::KMainWidget(bool bStartDock : KGetIface( "KGet-Interface" ), KMainWindow(0, "kget mainwindow"), - prefDlg( 0L ) + prefDlg( 0 ), kdock( 0 ) { #ifdef _DEBUG @@ -2058,4 +2058,5 @@ void KMainWidget::updateStatusBar() statusBar()->changeItem(i18n(" %1/s ").arg(KIO::convertSize(totalSpeed)), ID_TOTAL_SPEED); + if (kdock) { tmpstr = i18n(" Transfers: %1 ").arg(myTransferList->childCount()) + i18n(" Files: %1 ").arg(totalFiles)+ @@ -2063,5 +2064,5 @@ void KMainWidget::updateStatusBar() i18n(" Time: %1 %2/s").arg(remTime.toString()).arg(KIO::convertSize(totalSpeed)); kdock->updateToolTip( tmpstr ); - + } #ifdef _DEBUG //sDebugOut << endl; CVS commit by coolo: backport fix CCBUG: 84450 M +3 -2 kmainwidget.cpp 1.105.2.1 --- kdenetwork/kget/kmainwidget.cpp #1.105:1.105.2.1 @@ -112,5 +112,5 @@ KMainWidget::KMainWidget(bool bStartDock : KGetIface( "KGet-Interface" ), KMainWindow(0, "kget mainwindow"), - prefDlg( 0L ) + prefDlg( 0 ), kdock( 0 ) { #ifdef _DEBUG @@ -2058,4 +2058,5 @@ void KMainWidget::updateStatusBar() statusBar()->changeItem(i18n(" %1/s ").arg(KIO::convertSize(totalSpeed)), ID_TOTAL_SPEED); + if (kdock) { tmpstr = i18n(" Transfers: %1 ").arg(myTransferList->childCount()) + i18n(" Files: %1 ").arg(totalFiles)+ @@ -2063,5 +2064,5 @@ void KMainWidget::updateStatusBar() i18n(" Time: %1 %2/s").arg(remTime.toString()).arg(KIO::convertSize(totalSpeed)); kdock->updateToolTip( tmpstr ); - + } #ifdef _DEBUG //sDebugOut << endl; |