[KDev3.4] BlockingKProcess should be fixed.

dukju ahn dukjuahn at gmail.com
Mon Apr 23 18:09:20 UTC 2007


2007/4/23, Andras Mantia <amantia at kde.org>:
> On Monday 23 April 2007, Andreas Pakulat wrote:
> > Huh? A BKProc executes and external process, why does that trigger
> > kio? Or do I misunderstand something?
>
> Yeah, this is unclear for me as well.
>
> Or do you have the following code:
>
> some_method {
>  KIO call (not via NetAccess)
>  ...
>  BKProcess call
> }
>
> In this case there might be a problem as the KIO call is actually
> performed when the event loop runs again (and this happens in the
> BKProcess call). Such code should be avoided if possible. But doing a
> KIO::NetAccess call followed by a BlockingKProcess call shouldn't cause
> any problem.

Attached file is stacktrace. At stacknumber #33, BKProc::enter_loop()
called. In that event loop, SVNFileInfoProvider:;status() is called, which
calls NetAccess::syncRun().
In short, syncRun()'s enter_loop() is called on the top of the
BKProc::enter_loop().

> Anywa, point us to the real code, so we can see it completely.

That's linenumber 80 at
http://websvn.kde.org/branches/KDE/3.5/kdevelop/vcs/subversion/subversion_fileinfo.cpp?annotate=657106
-------------- next part --------------
#0  SVNFileInfoProvider::status (this=0x280000000d, dirPath=@0x7fff710f65c0) at /root/kdev-svn/kdevelop/vcs/subversion/subversion_fileinfo.cpp:55
#1  0x00002aaaac1ceb15 in VCSFileTreeBranchItem::createTreeViewItem (this=0x1383580, parent=0x13824c0, fileItem=0xd17b20) at /root/kdev-svn/kdevelop/parts/fileview/vcsfiletreewidgetimpl.cpp:156
#2  0x00002b5f3bdc505e in KFileTreeBranch::addItems () from /usr/lib/libkio.so.4
#3  0x00002b5f3bdc54ba in KFileTreeBranch::qt_invoke () from /usr/lib/libkio.so.4
#4  0x00002b5f3d533c26 in QObject::activate_signal () from /usr/lib/libqt-mt.so.3
#5  0x00002b5f3bd085bf in KDirLister::newItems () from /usr/lib/libkio.so.4
#6  0x00002b5f3bd08644 in KDirLister::emitItems () from /usr/lib/libkio.so.4
#7  0x00002b5f3bd4c29d in KDirListerCache::listDir () from /usr/lib/libkio.so.4
#8  0x00002b5f3bd4cb3a in KDirLister::openURL () from /usr/lib/libkio.so.4
#9  0x00002b5f3bdc4cdc in KFileTreeBranch::populate () from /usr/lib/libkio.so.4
#10 0x00002b5f3bdc70e6 in KFileTreeView::slotExpanded () from /usr/lib/libkio.so.4
#11 0x00002b5f3bdc7310 in KFileTreeView::qt_invoke () from /usr/lib/libkio.so.4
#12 0x00002aaaac1c6b75 in FileTreeWidget::qt_invoke (this=0x13a31e0, _id=113, _o=0x7fff710f6ed0) at ./filetreewidget.moc:133
#13 0x00002b5f3d533c26 in QObject::activate_signal () from /usr/lib/libqt-mt.so.3
#14 0x00002b5f3d8b690d in QListView::expanded () from /usr/lib/libqt-mt.so.3
#15 0x00002b5f3d634d90 in QListViewItem::setOpen () from /usr/lib/libqt-mt.so.3
#16 0x00002aaaac1c7b99 in KFileTreeBranch::setOpen (this=0x1383580, setopen=true) at /usr/include/kde/kfiletreebranch.h:121
#17 0x00002aaaac1c67b2 in FileTreeWidget::openDirectory (this=0x13a31e0, dirName=@0x7fff710f7110) at /root/kdev-svn/kdevelop/parts/fileview/filetreewidget.cpp:130
#18 0x00002aaaac1c934a in PartWidget::showProjectFiles (this=0x13a7510) at /root/kdev-svn/kdevelop/parts/fileview/partwidget.cpp:91
#19 0x00002aaaac1c429b in FileViewPart::init (this=0x1109150) at /root/kdev-svn/kdevelop/parts/fileview/fileviewpart.cpp:85
#20 0x00002aaaac1c4349 in FileViewPart::qt_invoke (this=0x1109150, _id=3, _o=0x7fff710f72d0) at ./fileviewpart.moc:90
#21 0x00002b5f3d533c26 in QObject::activate_signal () from /usr/lib/libqt-mt.so.3
#22 0x00002b5f3d8a1108 in QSignal::signal () from /usr/lib/libqt-mt.so.3
#23 0x00002b5f3d552cf7 in QSignal::activate () from /usr/lib/libqt-mt.so.3
#24 0x00002b5f3d559cb6 in QSingleShotTimer::event () from /usr/lib/libqt-mt.so.3
#25 0x00002b5f3d4cf262 in QApplication::internalNotify () from /usr/lib/libqt-mt.so.3
#26 0x00002b5f3d4d100c in QApplication::notify () from /usr/lib/libqt-mt.so.3
#27 0x00002b5f3c89b8be in KApplication::notify () from /usr/lib/libkdecore.so.4
#28 0x00002b5f3a1ddf46 in QApplication::sendEvent (receiver=0x742bc0, event=0x7fff710f77c0) at /usr/share/qt3/include/qapplication.h:520
#29 0x00002b5f3d4c257c in QEventLoop::activateTimers () from /usr/lib/libqt-mt.so.3
#30 0x00002b5f3d476584 in QEventLoop::processEvents () from /usr/lib/libqt-mt.so.3
#31 0x00002b5f3d4e87ee in QEventLoop::enterLoop () from /usr/lib/libqt-mt.so.3
#32 0x00002b5f3d4d0cde in QApplication::enter_loop () from /usr/lib/libqt-mt.so.3
#33 0x00002b5f39e56ee1 in BlockingKProcess::enter_loop (this=0x7fff710f7cd0) at /root/kdev-svn/kdevelop/lib/util/blockingkprocess.cpp:106
#34 0x00002b5f39e573dc in BlockingKProcess::start (this=0x7fff710f7cd0, runmode=NotifyOnExit, comm=Stdout) at /root/kdev-svn/kdevelop/lib/util/blockingkprocess.cpp:61
#35 0x00002b5f43ea92f1 in SetupHelper::getVerboseGccIncludePath (ok=0x7fff710f806f) at /root/kdev-svn/kdevelop/languages/cpp/setuphelper.cpp:62
#36 0x00002b5f43e9a3cb in KDevDriver::setup (this=0x11382b0) at /root/kdev-svn/kdevelop/languages/cpp/kdevdriver.cpp:64
#37 0x00002b5f43e9b5c0 in KDevDriver (this=0x11382b0, cppSupport=0xd7f990, foreground=false) at /root/kdev-svn/kdevelop/languages/cpp/kdevdriver.cpp:15
#38 0x00002b5f43dfd9cc in BackgroundKDevDriver (this=0x11382b0, cppSupport=0xd7f990, bp=0x1138070) at /root/kdev-svn/kdevelop/languages/cpp/backgroundparser.cpp:44
#39 0x00002b5f43df85e2 in BackgroundParser (this=0x1138070, part=0xd7f990, consumed=0xd7fab0) at /root/kdev-svn/kdevelop/languages/cpp/backgroundparser.cpp:258
#40 0x00002b5f43e7e8c7 in CppSupportPart::projectOpened (this=0xd7f990) at /root/kdev-svn/kdevelop/languages/cpp/cppsupportpart.cpp:529
#41 0x00002b5f43e7f633 in CppSupportPart::qt_invoke (this=0xd7f990, _id=9, _o=0x7fff710f87f0) at ./cppsupportpart.moc:355
#42 0x00002b5f3d533d4f in QObject::activate_signal () from /usr/lib/libqt-mt.so.3
#43 0x00002b5f3d5347b6 in QObject::activate_signal () from /usr/lib/libqt-mt.so.3
#44 0x00002b5f39e13685 in KDevCore::projectOpened (this=0x6c0b20) at ./kdevcore.moc:115
#45 0x00002b5f39b3f837 in Core::doEmitProjectOpened (this=0x6c0b20) at /root/kdev-svn/kdevelop/src/core.h:47
#46 0x00002b5f39b3f415 in ProjectManager::slotLoadProject (this=0x6b9320) at /root/kdev-svn/kdevelop/src/projectmanager.cpp:301
#47 0x00002b5f39b3f5dd in ProjectManager::qt_invoke (this=0x6b9320, _id=8, _o=0x7fff710f8a70) at ./projectmanager.moc:119
#48 0x00002b5f3d533c26 in QObject::activate_signal () from /usr/lib/libqt-mt.so.3
#49 0x00002b5f3d8a1108 in QSignal::signal () from /usr/lib/libqt-mt.so.3
#50 0x00002b5f3d552cf7 in QSignal::activate () from /usr/lib/libqt-mt.so.3
#51 0x00002b5f3d559cb6 in QSingleShotTimer::event () from /usr/lib/libqt-mt.so.3
#52 0x00002b5f3d4cf262 in QApplication::internalNotify () from /usr/lib/libqt-mt.so.3
#53 0x00002b5f3d4d100c in QApplication::notify () from /usr/lib/libqt-mt.so.3
#54 0x00002b5f3c89b8be in KApplication::notify () from /usr/lib/libkdecore.so.4
#55 0x00002b5f3a1ddf46 in QApplication::sendEvent (receiver=0x6c0450, event=0x7fff710f8f60) at /usr/share/qt3/include/qapplication.h:520
#56 0x00002b5f3d4c257c in QEventLoop::activateTimers () from /usr/lib/libqt-mt.so.3
#57 0x00002b5f3d476584 in QEventLoop::processEvents () from /usr/lib/libqt-mt.so.3
#58 0x00002b5f3d4e87ee in QEventLoop::enterLoop () from /usr/lib/libqt-mt.so.3
#59 0x00002b5f3d4e85f7 in QEventLoop::exec () from /usr/lib/libqt-mt.so.3
#60 0x00002b5f3d4d0d40 in QApplication::exec () from /usr/lib/libqt-mt.so.3
#61 0x00000000004085cb in main (argc=1, argv=0x7fff710f97d8) at /root/kdev-svn/kdevelop/src/main.cpp:143


More information about the KDevelop-devel mailing list