Summary: | Crash in EditorProxy::installPopup while single stepping | ||
---|---|---|---|
Product: | [Applications] kdevelop | Reporter: | Jon Smirl <jonsmirl> |
Component: | general | Assignee: | KDevelop Developers <kdevelop-devel> |
Status: | RESOLVED FIXED | ||
Severity: | crash | ||
Priority: | NOR | ||
Version: | git master | ||
Target Milestone: | --- | ||
Platform: | RedHat Enterprise Linux | ||
OS: | Linux | ||
Latest Commit: | Version Fixed In: | ||
Sentry Crash Report: |
Description
Jon Smirl
2003-06-29 21:47:41 UTC
Confirmed, I (probably) just ran into this one while doing something completely different. Backtrace: [New Thread 16384 (LWP 30940)] [New Thread 32769 (LWP 31125)] [New Thread 49154 (LWP 3883)] 0x4188039c in waitpid () from /lib/libpthread.so.0 #0 0x4188039c in waitpid () from /lib/libpthread.so.0 #1 0x40ddcb70 in KCrash::defaultCrashHandler(int) () from /opt/kde/lib/libkdecore.so.4 #2 0x4187f17c in __pthread_sighandler () from /lib/libpthread.so.0 #3 <signal handler called> #4 0x411a3b67 in QObject::connect(QObject const*, char const*, QObject const*, char const*) () from /opt/qt-3.2.1/lib/libqt-mt.so.3 #5 0x0808d64a in EditorProxy::installPopup(KParts::Part*, QPopupMenu*) ( this=0x8866710, part=0x8c2e7e0, popup=0x82110e0) at editorproxy.cpp:64 #6 0x08075ccf in PartController::integratePart(KParts::Part*, KURL const&, bool) (this=0x8197a90, part=0x8c2e7e0, url=@0xbfffe770, isTextEditor=true) at partcontroller.cpp:445 #7 0x0807543f in PartController::editDocument(KURL const&, int, int) ( this=0x8197a90, inputUrl=@0xbfffe890, lineNum=147, col=-1) at partcontroller.cpp:344 #8 0x08093baf in ProjectSession::recreateViews(KURL&, QDomElement) ( this=0x81d6d98, url=@0xbfffe890, docEl=<incomplete type>) at projectsession.cpp:186 #9 0x080937de in ProjectSession::recreateDocs(QDomElement&) (this=0x81d6d98, el=@0xbfffe970) at projectsession.cpp:146 #10 0x08093370 in ProjectSession::restoreFromFile(QString const&, QDict<KDevPlugin> const&) (this=0x81d6d98, sessionFileName=@0xbfffeac0, projectPlugins=@0xbfffeae0) at projectsession.cpp:101 #11 0x0807c739 in ProjectManager::loadProject(KURL const&) (this=0x81d69d8, url=@0xbfffec10) at projectmanager.cpp:295 #12 0x0807f384 in ProjectManager::qt_invoke(int, QUObject*) (this=0x81d69d8, _id=2, _o=0xbfffebb0) at projectmanager.moc:114 #13 0x411a4f80 in QObject::activate_signal(QConnectionList*, QUObject*) () from /opt/qt-3.2.1/lib/libqt-mt.so.3 #14 0x40b07dd2 in KRecentFilesAction::urlSelected(KURL const&) () from /opt/kde/lib/libkdeui.so.4 #15 0x40affcb0 in KRecentFilesAction::itemSelected(QString const&) () from /opt/kde/lib/libkdeui.so.4 #16 0x40b07f87 in KRecentFilesAction::qt_invoke(int, QUObject*) () from /opt/kde/lib/libkdeui.so.4 #17 0x411a4f80 in QObject::activate_signal(QConnectionList*, QUObject*) () from /opt/qt-3.2.1/lib/libqt-mt.so.3 #18 0x411a5440 in QObject::activate_signal(int, QString) () from /opt/qt-3.2.1/lib/libqt-mt.so.3 #19 0x40b07455 in KSelectAction::activated(QString const&) () from /opt/kde/lib/libkdeui.so.4 #20 0x40b001d5 in KRecentFilesAction::slotActivated() () from /opt/kde/lib/libkdeui.so.4 #21 0x40b08005 in KRecentFilesAction::qt_invoke(int, QUObject*) () from /opt/kde/lib/libkdeui.so.4 #22 0x411a4f80 in QObject::activate_signal(QConnectionList*, QUObject*) () from /opt/qt-3.2.1/lib/libqt-mt.so.3 #23 0x414bc202 in QSignal::signal(QVariant const&) () from /opt/qt-3.2.1/lib/libqt-mt.so.3 #24 0x411bef18 in QSignal::activate() () from /opt/qt-3.2.1/lib/libqt-mt.so.3 #25 0x411c6493 in QSingleShotTimer::event(QEvent*) () from /opt/qt-3.2.1/lib/libqt-mt.so.3 #26 0x4114a1e5 in QApplication::internalNotify(QObject*, QEvent*) () from /opt/qt-3.2.1/lib/libqt-mt.so.3 #27 0x4114989b in QApplication::notify(QObject*, QEvent*) () from /opt/qt-3.2.1/lib/libqt-mt.so.3 #28 0x40d35b2e in KApplication::notify(QObject*, QEvent*) () from /opt/kde/lib/libkdecore.so.4 #29 0x41139c0d in QEventLoop::activateTimers() () from /opt/qt-3.2.1/lib/libqt-mt.so.3 #30 0x410f7254 in QEventLoop::processEvents(unsigned) () from /opt/qt-3.2.1/lib/libqt-mt.so.3 #31 0x4115d3f6 in QEventLoop::enterLoop() () from /opt/qt-3.2.1/lib/libqt-mt.so.3 #32 0x4115d298 in QEventLoop::exec() () from /opt/qt-3.2.1/lib/libqt-mt.so.3 #33 0x4114a431 in QApplication::exec() () from /opt/qt-3.2.1/lib/libqt-mt.so.3 #34 0x08069fbf in main (argc=1, argv=0xbffff534) at main.cpp:128 #35 0x419f3b47 in __libc_start_main () from /lib/libc.so.6 Fixed in CVS by Sascha Cunz. Thanks! :) His explanation: [snip] In fact, it was a problem with the context menu of the editor part. PartController creates a KPopupMenu from the XML-GUI. This one was staticly stored in PartController::contextPopupMenu(). This KPopupMenu seems to be owned by the XML-GUI. This menu gets propagated into each editor on opening. At this point, EditorProxy connects to the menu's aboutToShow. When the Popup is now about to show, EditorProxy cleans it completely. Then it asks all around KDevelop to fill the menu. ( There was a bug in this cleaning, i fixed it: now the menuitems contained in kdevelopui.rc at "rb_popup" are also shown in the editor's context menu ) After a manual change of the XML-GUI via KEditToolBar-Dialog, the KPopupMenu stored in the editors is invalid. So opening the next file causes a try to connect a slot to a deleted object. I changed PartController::contextPopupMenu, so that it does not cache the pointer from XML-GUI anymore. This makes opening new files work again. Now another bug came into front: If one chages a toolbar, the KPopupMenus "installed" into existing editor parts get invalid. I added code to reinstall them after the toolbar has been changed. [snip] |