DUChain architecture changes, port away from SmartRange etc.

Milian Wolff mail at milianw.de
Sun Jul 11 18:47:31 UTC 2010


David Nolden, 10.07.2010:
> My port is nearly finished, and the ported KDevelop is working again.
> Some changes to kate are still missing to make it perfect, but
> language authors can start looking at the code, and trying out now.
> 
> I didn't do a plain at simple "SmartRange -> MovingRange" conversion,
> but I've done much more significant changes. Mainly, I've ripped out
> all the editor dependencies in the core duchain stuff. The functions
> that are left there are mainly convenience functions.
> 
> Now language-plugin authors won't have to care anymore about the
> question whether the file is open in an editor, about
> creating/updating smart-ranges, and all that complicated fragile stuff
> that has cost me man-moths of work to make it somewhat run before the
> 4.0 release.
> 
> Here's how it works:
> - The ranges within the TopDUContext for a file refer to one specific
> file revision, which may be older than the current revision. Those
> ranges/cursors are represented by KDevelop::CursorInRevision or
> KDevelop::RangeInRevision objects.
> - Ranges in the current document revision (for example the current
> cursor in the editor) are generally represented by
> KDevelop::SimpleRange and KDevelop::SimpleCursor.
> - Convenience functions in KDevelop::DocumentChangeTracker,
> KDevelop::DUChainBase, and KDevelop::RevisionReference allow you to
> translate between revisions, thereby transforming a SimpleCursor to a
> CursorInRevision or the opposite way.
> 
> Parsing:
> - When updating the duchain, KDevelop::ParseJob cares about retrieving
> the new document text, and translates all the ranges within the
> TopDUContext from the old revision into the new revision (using the
> foreground lock to access the document).
> - When updating the duchain, you can simply match the existing ranges
> in the duchain against the new ranges, as both are in the same
> revision now.
> - When parsing has finished, KDevelop::CodeHighlighting highlights the
> code in the background, and then sends the highlighting-info to the
> foreground, where the ranges are again translated to the current
> revision, and then highlighted using KTextEditor::MovingRange.
> 
> Required changes to language plugins:
> Mandatory:
> - You have to use the KDevelop::ParseJob functions readContents to get
> the document contents, and translateDUChainToRevision before updating
> the TopDUContext to translate its ranges to the new revision.
> readContents now does more also the "read data from disk" part which
> the language-plugins had to implement by themselves before. The
> code-highlighting API works as before.
> - Then you've got to replace SimpleRange / SimpleCursor with
> RangeInRevision / CursorInRevision within all your parsing and duchain
> handling code, this is a simple mass-replace (unfortunately we don't
> have a plugin to do this yet).
> - Remove all the Smart* code you had, and generally make the stuff
> compile again (some APIs have changed due to removed SmartRange etc.,
> but the port should be straightforward)
> - The whole KDevelop::EditorIntegrator stuff doesn't exist anymore,
> but you won't need it. :-)
> 
> Bonus:
> Some of the abstract builders aren't required anymore, as they do
> nothing significant, and make the code-structure much more
> complicated. At least from the C++ support, I've removed
> AbstractTypeBuilder and AbstractDeclarationBuilder from the builder
> inheritance chain, which makes the parsing architecture simpler to
> understand. However this is not required of course.
> 
> The branches can be found at:
> git at gitorious.org:~zwabel/kdevelop/kdevplatform-zwabel.git
> git at gitorious.org:~zwabel/kdevelop/kdevelop-zwabel.git
> 
> As I already said before, this should become the main development
> line, and we should move it into a central place, so we can start
> working on this code, and do a stable release based on it, at least
> somewhat close to the KDE 4.5 release. IMO this should simply be the
> trunk in our main development repository.
> 
> Greetings, David

first deadlock on kdev startup:
(gdb) thread apply all bt

Thread 12 (Thread 0x7f7f7a61a710 (LWP 31458)):
#0  pthread_cond_timedwait@@GLIBC_2.3.2 () at 
../nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_timedwait.S:211
#1  0x00007f7f8c812c72 in QWaitConditionPrivate::wait (this=<value optimized 
out>, mutex=0x1f62a30, time=200000) at thread/qwaitcondition_unix.cpp:85
#2  QWaitCondition::wait (this=<value optimized out>, mutex=0x1f62a30, 
time=200000) at thread/qwaitcondition_unix.cpp:159
#3  0x00007f7f89088c91 in KDevelop::DUChainPrivate::CleanupThread::run 
(this=0x1f62a10) at 
/home/milian/projects/kde4/kdevplatform/language/duchain/duchain.cpp:284
#4  0x00007f7f8c81214e in QThreadPrivate::start (arg=0x1f62a10) at 
thread/qthread_unix.cpp:266
#5  0x00007f7f8c5809ca in start_thread (arg=<value optimized out>) at 
pthread_create.c:300
#6  0x00007f7f8ac056fd in clone () at 
../sysdeps/unix/sysv/linux/x86_64/clone.S:112
#7  0x0000000000000000 in ?? ()

Thread 11 (Thread 0x7f7f788df710 (LWP 31460)):
#0  0x00007f7f8abfdfe3 in select () at ../sysdeps/unix/syscall-template.S:82
#1  0x00007f7f8c8e0d7d in QProcessManager::run (this=0x7f7f8cc35f40) at 
io/qprocess_unix.cpp:245
#2  0x00007f7f8c81214e in QThreadPrivate::start (arg=0x7f7f8cc35f40) at 
thread/qthread_unix.cpp:266
#3  0x00007f7f8c5809ca in start_thread (arg=<value optimized out>) at 
pthread_create.c:300
#4  0x00007f7f8ac056fd in clone () at 
../sysdeps/unix/sysv/linux/x86_64/clone.S:112
#5  0x0000000000000000 in ?? ()

Thread 10 (Thread 0x7f7f73827710 (LWP 31646)):
#0  pthread_cond_wait@@GLIBC_2.3.2 () at 
../nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S:162
#1  0x00007f7f89d820c4 in QTWTF::TCMalloc_PageHeap::scavengerThread 
(this=0x7f7f8a08c140) at 
../3rdparty/javascriptcore/JavaScriptCore/wtf/FastMalloc.cpp:2359
#2  0x00007f7f89d820f9 in QTWTF::TCMalloc_PageHeap::runScavengerThread 
(context=0x7f7f8a09a214) at 
../3rdparty/javascriptcore/JavaScriptCore/wtf/FastMalloc.cpp:1464
#3  0x00007f7f8c5809ca in start_thread (arg=<value optimized out>) at 
pthread_create.c:300
#4  0x00007f7f8ac056fd in clone () at 
../sysdeps/unix/sysv/linux/x86_64/clone.S:112
#5  0x0000000000000000 in ?? ()

Thread 9 (Thread 0x7f7f7240a710 (LWP 31744)):
#0  0x00007f7f8abf8f83 in *__GI___poll (fds=<value optimized out>, nfds=<value 
optimized out>, timeout=-1) at ../sysdeps/unix/sysv/linux/poll.c:87
#1  0x00007f7f8542b4a9 in ?? () from /lib/libglib-2.0.so.0
#2  0x00007f7f8542b8fc in g_main_context_iteration () from 
/lib/libglib-2.0.so.0
#3  0x00007f7f8c930973 in QEventDispatcherGlib::processEvents (this=0x413cf20, 
flags=<value optimized out>) at kernel/qeventdispatcher_glib.cpp:412
#4  0x00007f7f8c9035b2 in QEventLoop::processEvents (this=<value optimized 
out>, flags=DWARF-2 expression error: DW_OP_reg operations must be used either 
alone or in conjuction with DW_OP_piece.
) at kernel/qeventloop.cpp:149
#5  0x00007f7f8c90398c in QEventLoop::exec (this=0x7f7f72409db0, flags=DWARF-2 
expression error: DW_OP_reg operations must be used either alone or in 
conjuction with DW_OP_piece.
) at kernel/qeventloop.cpp:201
#6  0x00007f7f8c80f1cd in QThread::exec (this=<value optimized out>) at 
thread/qthread.cpp:490
#7  0x00007f7f891b3a91 in KDevelop::CompletionWorkerThread::run 
(this=0x413bd60) at 
/home/milian/projects/kde4/kdevplatform/language/codecompletion/codecompletionmodel.cpp:81
#8  0x00007f7f8c81214e in QThreadPrivate::start (arg=0x413bd60) at 
thread/qthread_unix.cpp:266
---Type <return> to continue, or q <return> to quit---
#9  0x00007f7f8c5809ca in start_thread (arg=<value optimized out>) at 
pthread_create.c:300
#10 0x00007f7f8ac056fd in clone () at 
../sysdeps/unix/sysv/linux/x86_64/clone.S:112
#11 0x0000000000000000 in ?? ()

Thread 8 (Thread 0x7f7f71c09710 (LWP 31745)):
#0  0x00007f7f8abf8f83 in *__GI___poll (fds=<value optimized out>, nfds=<value 
optimized out>, timeout=-1) at ../sysdeps/unix/sysv/linux/poll.c:87
#1  0x00007f7f8542b4a9 in ?? () from /lib/libglib-2.0.so.0
#2  0x00007f7f8542b8fc in g_main_context_iteration () from 
/lib/libglib-2.0.so.0
#3  0x00007f7f8c930973 in QEventDispatcherGlib::processEvents (this=0x40debc0, 
flags=<value optimized out>) at kernel/qeventdispatcher_glib.cpp:412
#4  0x00007f7f8c9035b2 in QEventLoop::processEvents (this=<value optimized 
out>, flags=DWARF-2 expression error: DW_OP_reg operations must be used either 
alone or in conjuction with DW_OP_piece.
) at kernel/qeventloop.cpp:149
#5  0x00007f7f8c90398c in QEventLoop::exec (this=0x7f7f71c08db0, flags=DWARF-2 
expression error: DW_OP_reg operations must be used either alone or in 
conjuction with DW_OP_piece.
) at kernel/qeventloop.cpp:201
#6  0x00007f7f8c80f1cd in QThread::exec (this=<value optimized out>) at 
thread/qthread.cpp:490
#7  0x00007f7f891b3a91 in KDevelop::CompletionWorkerThread::run 
(this=0x418a940) at 
/home/milian/projects/kde4/kdevplatform/language/codecompletion/codecompletionmodel.cpp:81
#8  0x00007f7f8c81214e in QThreadPrivate::start (arg=0x418a940) at 
thread/qthread_unix.cpp:266
#9  0x00007f7f8c5809ca in start_thread (arg=<value optimized out>) at 
pthread_create.c:300
#10 0x00007f7f8ac056fd in clone () at 
../sysdeps/unix/sysv/linux/x86_64/clone.S:112
#11 0x0000000000000000 in ?? ()

Thread 7 (Thread 0x7f7f701a4710 (LWP 31746)):
#0  pthread_cond_timedwait@@GLIBC_2.3.2 () at 
../nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_timedwait.S:211
#1  0x00007f7f8c811715 in thread_sleep (ti=0x7f7f701a3db0) at 
thread/qthread_unix.cpp:416
#2  0x00007f7f8c811880 in QThread::msleep (msecs=<value optimized out>) at 
thread/qthread_unix.cpp:442
#3  0x00007f7f72c3322c in UIBlockTester::UIBlockTesterThread::run 
(this=0x41febe0) at 
/home/milian/projects/kde4/kdevelop/languages/cpp/cpplanguagesupport.cpp:678
#4  0x00007f7f8c81214e in QThreadPrivate::start (arg=0x41febe0) at 
thread/qthread_unix.cpp:266
#5  0x00007f7f8c5809ca in start_thread (arg=<value optimized out>) at 
pthread_create.c:300
#6  0x00007f7f8ac056fd in clone () at 
../sysdeps/unix/sysv/linux/x86_64/clone.S:112
#7  0x0000000000000000 in ?? ()

Thread 6 (Thread 0x7f7f6f14b710 (LWP 31747)):
#0  pthread_cond_wait@@GLIBC_2.3.2 () at 
../nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S:162
#1  0x00007f7f8c811403 in QMutexPrivate::wait (this=0x198fef0, timeout=-1) at 
thread/qmutex_unix.cpp:84
#2  0x00007f7f8c80cdd5 in QMutex::lock (this=0x7f7f905d5698) at 
thread/qmutex.cpp:167
#3  0x00007f7f903b607e in KDevelop::ForegroundLock::relock 
(this=0x7f7f6f1456cf) at 
/home/milian/projects/kde4/kdevplatform/interfaces/foregroundlock.cpp:41
#4  0x00007f7f903b603a in ForegroundLock (this=0x7f7f6f1456cf, lock=true) at 
/home/milian/projects/kde4/kdevplatform/interfaces/foregroundlock.cpp:35
#5  0x00007f7f89068f6c in KDevelop::ParseJob::readContents (this=0x97d1b50) at 
/home/milian/projects/kde4/kdevplatform/language/backgroundparser/parsejob.cpp:275
#6  0x00007f7f72c4d901 in PreprocessJob::readContents (this=0x7faa300) at 
/home/milian/projects/kde4/kdevelop/languages/cpp/preprocessjob.cpp:657
#7  0x00007f7f72c49fc2 in PreprocessJob::run (this=0x7faa300) at 
/home/milian/projects/kde4/kdevelop/languages/cpp/preprocessjob.cpp:209
---Type <return> to continue, or q <return> to quit---
#8  0x00007f7f72c3d62b in CPPParseJob::parseForeground (this=0x97d1b50) at 
/home/milian/projects/kde4/kdevelop/languages/cpp/cppparsejob.cpp:177
#9  0x00007f7f72c4ccdd in PreprocessJob::sourceNeeded (this=0x90fdd30, 
_fileName="language/editor/editorintegrator.h", 
type=rpp::Preprocessor::IncludeGlobal, sourceLine=21, 
    skipCurrentPath=false) at 
/home/milian/projects/kde4/kdevelop/languages/cpp/preprocessjob.cpp:585
#10 0x00007f7f729ec612 in rpp::pp::handle_include (this=0x7f7f6f147830, 
skip_current_path=false, input=..., output=...)
    at /home/milian/projects/kde4/kdevelop/languages/cpp/parser/rpp/pp-
engine.cpp:193
#11 0x00007f7f729ebeb3 in rpp::pp::handle_directive (this=0x7f7f6f147830, 
directive=240905, input=..., output=...)
    at /home/milian/projects/kde4/kdevelop/languages/cpp/parser/rpp/pp-
engine.cpp:131
#12 0x00007f7f729ec915 in rpp::pp::operator() (this=0x7f7f6f147830, input=..., 
output=...) at 
/home/milian/projects/kde4/kdevelop/languages/cpp/parser/rpp/pp-engine.cpp:246
#13 0x00007f7f729eba0d in rpp::pp::processFileInternal (this=0x7f7f6f147830, 
fileName="/home/sources/java/duchain/editorintegrator.h", 
    fileContents="/* This file is part of KDevelop\n    Copyright 2006 Hamish 
Rodda <rodda at kde.org>\n\n   This library is free software; you can 
redistribute it and/or\n   modify it under the terms of the GNU Library 
Gener"... = {...}, result=...) at 
/home/milian/projects/kde4/kdevelop/languages/cpp/parser/rpp/pp-engine.cpp:98
#14 0x00007f7f729eb8be in rpp::pp::processFile (this=0x7f7f6f147830, 
fileName="/home/sources/java/duchain/editorintegrator.h", 
    data="/* This file is part of KDevelop\n    Copyright 2006 Hamish Rodda 
<rodda at kde.org>\n\n   This library is free software; you can redistribute it 
and/or\n   modify it under the terms of the GNU Library Gener"... = {...}) at 
/home/milian/projects/kde4/kdevelop/languages/cpp/parser/rpp/pp-engine.cpp:85
#15 0x00007f7f72c4a376 in PreprocessJob::run (this=0x90fdd30) at 
/home/milian/projects/kde4/kdevelop/languages/cpp/preprocessjob.cpp:237
#16 0x00007f7f72c3d62b in CPPParseJob::parseForeground (this=0x9476370) at 
/home/milian/projects/kde4/kdevelop/languages/cpp/cppparsejob.cpp:177
#17 0x00007f7f72c4ccdd in PreprocessJob::sourceNeeded (this=0x42e75e0, 
_fileName="editorintegrator.h", type=rpp::Preprocessor::IncludeLocal, 
sourceLine=28, skipCurrentPath=false)
    at /home/milian/projects/kde4/kdevelop/languages/cpp/preprocessjob.cpp:585
#18 0x00007f7f729ec612 in rpp::pp::handle_include (this=0x7f7f6f149910, 
skip_current_path=false, input=..., output=...)
    at /home/milian/projects/kde4/kdevelop/languages/cpp/parser/rpp/pp-
engine.cpp:193
#19 0x00007f7f729ebeb3 in rpp::pp::handle_directive (this=0x7f7f6f149910, 
directive=240905, input=..., output=...)
    at /home/milian/projects/kde4/kdevelop/languages/cpp/parser/rpp/pp-
engine.cpp:131
#20 0x00007f7f729ec915 in rpp::pp::operator() (this=0x7f7f6f149910, input=..., 
output=...) at 
/home/milian/projects/kde4/kdevelop/languages/cpp/parser/rpp/pp-engine.cpp:246
#21 0x00007f7f729eba0d in rpp::pp::processFileInternal (this=0x7f7f6f149910, 
fileName="/home/sources/java/duchain/dumpchain.cpp", 
    fileContents="/* This file is part of KDevelop\n    Copyright 2002-2005 
Roberto Raggi <roberto at kdevelop.org>\n    Copyright 2006-2008 Hamish Rodda 
<rodda at kde.org>\n\n   This library is free software; you can redistribu"... = 
{...}, result=...) at 
/home/milian/projects/kde4/kdevelop/languages/cpp/parser/rpp/pp-engine.cpp:98
#22 0x00007f7f729eb8be in rpp::pp::processFile (this=0x7f7f6f149910, 
fileName="/home/sources/java/duchain/dumpchain.cpp", 
    data="/* This file is part of KDevelop\n    Copyright 2002-2005 Roberto 
Raggi <roberto at kdevelop.org>\n    Copyright 2006-2008 Hamish Rodda 
<rodda at kde.org>\n\n   This library is free software; you can redistribu"... = 
{...}) at /home/milian/projects/kde4/kdevelop/languages/cpp/parser/rpp/pp-
engine.cpp:85
#23 0x00007f7f72c4a376 in PreprocessJob::run (this=0x42e75e0) at 
/home/milian/projects/kde4/kdevelop/languages/cpp/preprocessjob.cpp:237
#24 0x00007f7f8f0c81e1 in ThreadWeaver::JobRunHelper::runTheJob 
(this=0x7f7f6f14ad50, th=0x4150350, job=0x42e75e0) at 
../../../threadweaver/Weaver/Job.cpp:106
#25 0x00007f7f8f0c84de in ThreadWeaver::Job::execute (this=0x42e75e0, 
th=0x4150350) at ../../../threadweaver/Weaver/Job.cpp:135
#26 0x00007f7f8f0c98e3 in ThreadWeaver::JobCollectionJobRunner::execute 
(this=0x1f39af0, t=0x4150350) at 
../../../threadweaver/Weaver/JobCollection.cpp:82
#27 0x00007f7f8f0c74cf in ThreadWeaver::ThreadRunHelper::run 
(this=0x7f7f6f14ae00, parent=0x1c5cc90, th=0x4150350) at 
../../../threadweaver/Weaver/Thread.cpp:95
#28 0x00007f7f8f0c7a58 in ThreadWeaver::Thread::run (this=0x4150350) at 
../../../threadweaver/Weaver/Thread.cpp:142
#29 0x00007f7f8c81214e in QThreadPrivate::start (arg=0x4150350) at 
thread/qthread_unix.cpp:266
#30 0x00007f7f8c5809ca in start_thread (arg=<value optimized out>) at 
pthread_create.c:300
---Type <return> to continue, or q <return> to quit---
#31 0x00007f7f8ac056fd in clone () at 
../sysdeps/unix/sysv/linux/x86_64/clone.S:112
#32 0x0000000000000000 in ?? ()

Thread 5 (Thread 0x7f7f6e94a710 (LWP 31748)):
#0  pthread_cond_wait@@GLIBC_2.3.2 () at 
../nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S:162
#1  0x00007f7f8c811403 in QMutexPrivate::wait (this=0x1cc14f0, timeout=-1) at 
thread/qmutex_unix.cpp:84
#2  0x00007f7f8c80cdd5 in QMutex::lock (this=0x1c4b138) at 
thread/qmutex.cpp:167
#3  0x00007f7f8904f2db in QMutexLocker (this=0x7f7f6e942520, m=0x1c4b138) at 
/usr/include/qt4/QtCore/qmutex.h:102
#4  0x00007f7f8905e1c3 in KDevelop::BackgroundParser::trackerForUrl 
(this=0x1c5e200, url=...)
    at 
/home/milian/projects/kde4/kdevplatform/language/backgroundparser/backgroundparser.cpp:614
#5  0x00007f7f89083e82 in KDevelop::DUChain::addDocumentChain (this=0x1f898d0, 
chain=0x97f64f0) at 
/home/milian/projects/kde4/kdevplatform/language/duchain/duchain.cpp:1198
#6  0x00007f7f8908ad07 in KDevelop::DUChainPrivate::loadChain (this=0x1f615b0, 
index=2279, loaded=QSet = {...})
    at 
/home/milian/projects/kde4/kdevplatform/language/duchain/duchain.cpp:591
#7  0x00007f7f8908422b in KDevelop::DUChain::loadChain (this=0x1f898d0, 
index=2279) at 
/home/milian/projects/kde4/kdevplatform/language/duchain/duchain.cpp:1257
#8  0x00007f7f8908815e in KDevelop::DUChain::chainForIndex (this=0x1f898d0, 
index=2279) at 
/home/milian/projects/kde4/kdevplatform/language/duchain/duchain.h:181
#9  0x00007f7f890c7dd5 in KDevelop::IndexedTopDUContext::data 
(this=0x7f7f6e9427b0) at 
/home/milian/projects/kde4/kdevplatform/language/duchain/topducontext.cpp:119
#10 0x00007f7f890c8568 in 
KDevelop::TopDUContextData::updateImportCacheRecursion (baseIndex=2281, 
currentContext=..., visited=...)
    at 
/home/milian/projects/kde4/kdevplatform/language/duchain/topducontext.cpp:604
#11 0x00007f7f890c872e in 
KDevelop::TopDUContextData::updateImportCacheRecursion (baseIndex=2281, 
currentContext=..., visited=...)
    at 
/home/milian/projects/kde4/kdevplatform/language/duchain/topducontext.cpp:619
#12 0x00007f7f890c8a5f in KDevelop::TopDUContext::updateImportsCache 
(this=0x95ce710) at 
/home/milian/projects/kde4/kdevplatform/language/duchain/topducontext.cpp:661
#13 0x00007f7f72c3f8e3 in CPPInternalParseJob::run (this=0x8caa730) at 
/home/milian/projects/kde4/kdevelop/languages/cpp/cppparsejob.cpp:485
#14 0x00007f7f72c3d64c in CPPParseJob::parseForeground (this=0x8c1a2e0) at 
/home/milian/projects/kde4/kdevelop/languages/cpp/cppparsejob.cpp:178
#15 0x00007f7f72c4ccdd in PreprocessJob::sourceNeeded (this=0x93ff830, 
_fileName="classdeclaration.h", type=rpp::Preprocessor::IncludeLocal, 
sourceLine=26, skipCurrentPath=false)
    at /home/milian/projects/kde4/kdevelop/languages/cpp/preprocessjob.cpp:585
#16 0x00007f7f729ec612 in rpp::pp::handle_include (this=0x7f7f6e944750, 
skip_current_path=false, input=..., output=...)
    at /home/milian/projects/kde4/kdevelop/languages/cpp/parser/rpp/pp-
engine.cpp:193
#17 0x00007f7f729ebeb3 in rpp::pp::handle_directive (this=0x7f7f6e944750, 
directive=240905, input=..., output=...)
    at /home/milian/projects/kde4/kdevelop/languages/cpp/parser/rpp/pp-
engine.cpp:131
#18 0x00007f7f729ec915 in rpp::pp::operator() (this=0x7f7f6e944750, input=..., 
output=...) at 
/home/milian/projects/kde4/kdevelop/languages/cpp/parser/rpp/pp-engine.cpp:246
#19 0x00007f7f729eba0d in rpp::pp::processFileInternal (this=0x7f7f6e944750, 
fileName="/home/sources/java/duchain/contextbuilder.h", 
    fileContents="/* This file is part of KDevelop\n    Copyright 2006 Roberto 
Raggi <roberto at kdevelop.org>\n    Copyright 2006-2008 Hamish Rodda 
<rodda at kde.org>\n\n   This library is free software; you can redistribute 
it"... = {...}, result=...) at 
/home/milian/projects/kde4/kdevelop/languages/cpp/parser/rpp/pp-engine.cpp:98
#20 0x00007f7f729eb8be in rpp::pp::processFile (this=0x7f7f6e944750, 
fileName="/home/sources/java/duchain/contextbuilder.h", 
    data="/* This file is part of KDevelop\n    Copyright 2006 Roberto Raggi 
<roberto at kdevelop.org>\n    Copyright 2006-2008 Hamish Rodda 
<rodda at kde.org>\n\n   This library is free software; you can redistribute 
it"... = {...}) at 
/home/milian/projects/kde4/kdevelop/languages/cpp/parser/rpp/pp-engine.cpp:85
#21 0x00007f7f72c4a376 in PreprocessJob::run (this=0x93ff830) at 
/home/milian/projects/kde4/kdevelop/languages/cpp/preprocessjob.cpp:237
---Type <return> to continue, or q <return> to quit---
#22 0x00007f7f72c3d62b in CPPParseJob::parseForeground (this=0x93ff390) at 
/home/milian/projects/kde4/kdevelop/languages/cpp/cppparsejob.cpp:177
#23 0x00007f7f72c4ccdd in PreprocessJob::sourceNeeded (this=0x9317830, 
_fileName="contextbuilder.h", type=rpp::Preprocessor::IncludeLocal, 
sourceLine=21, skipCurrentPath=false)
    at /home/milian/projects/kde4/kdevelop/languages/cpp/preprocessjob.cpp:585
#24 0x00007f7f729ec612 in rpp::pp::handle_include (this=0x7f7f6e946830, 
skip_current_path=false, input=..., output=...)
    at /home/milian/projects/kde4/kdevelop/languages/cpp/parser/rpp/pp-
engine.cpp:193
#25 0x00007f7f729ebeb3 in rpp::pp::handle_directive (this=0x7f7f6e946830, 
directive=240905, input=..., output=...)
    at /home/milian/projects/kde4/kdevelop/languages/cpp/parser/rpp/pp-
engine.cpp:131
#26 0x00007f7f729ec915 in rpp::pp::operator() (this=0x7f7f6e946830, input=..., 
output=...) at 
/home/milian/projects/kde4/kdevelop/languages/cpp/parser/rpp/pp-engine.cpp:246
#27 0x00007f7f729eba0d in rpp::pp::processFileInternal (this=0x7f7f6e946830, 
fileName="/home/sources/java/duchain/typebuilder.h", 
    fileContents="/* This file is part of KDevelop\n    Copyright 2006-2008 
Hamish Rodda <rodda at kde.org>\n\n   This library is free software; you can 
redistribute it and/or\n   modify it under the terms of the GNU Library "... = 
{...}, result=...) at 
/home/milian/projects/kde4/kdevelop/languages/cpp/parser/rpp/pp-engine.cpp:98
#28 0x00007f7f729eb8be in rpp::pp::processFile (this=0x7f7f6e946830, 
fileName="/home/sources/java/duchain/typebuilder.h", 
    data="/* This file is part of KDevelop\n    Copyright 2006-2008 Hamish 
Rodda <rodda at kde.org>\n\n   This library is free software; you can 
redistribute it and/or\n   modify it under the terms of the GNU Library "... = 
{...}) at /home/milian/projects/kde4/kdevelop/languages/cpp/parser/rpp/pp-
engine.cpp:85
#29 0x00007f7f72c4a376 in PreprocessJob::run (this=0x9317830) at 
/home/milian/projects/kde4/kdevelop/languages/cpp/preprocessjob.cpp:237
#30 0x00007f7f72c3d62b in CPPParseJob::parseForeground (this=0x9317420) at 
/home/milian/projects/kde4/kdevelop/languages/cpp/cppparsejob.cpp:177
#31 0x00007f7f72c4ccdd in PreprocessJob::sourceNeeded (this=0x4248220, 
_fileName="typebuilder.h", type=rpp::Preprocessor::IncludeLocal, sourceLine=18, 
skipCurrentPath=false)
    at /home/milian/projects/kde4/kdevelop/languages/cpp/preprocessjob.cpp:585
#32 0x00007f7f729ec612 in rpp::pp::handle_include (this=0x7f7f6e948910, 
skip_current_path=false, input=..., output=...)
    at /home/milian/projects/kde4/kdevelop/languages/cpp/parser/rpp/pp-
engine.cpp:193
#33 0x00007f7f729ebeb3 in rpp::pp::handle_directive (this=0x7f7f6e948910, 
directive=240905, input=..., output=...)
    at /home/milian/projects/kde4/kdevelop/languages/cpp/parser/rpp/pp-
engine.cpp:131
#34 0x00007f7f729ec915 in rpp::pp::operator() (this=0x7f7f6e948910, input=..., 
output=...) at 
/home/milian/projects/kde4/kdevelop/languages/cpp/parser/rpp/pp-engine.cpp:246
#35 0x00007f7f729eba0d in rpp::pp::processFileInternal (this=0x7f7f6e948910, 
fileName="/home/sources/java/duchain/typebuilder.cpp", 
    fileContents="/* This file is part of KDevelop\n    Copyright 2006-2008 
Hamish Rodda <rodda at kde.org>\n\n   This library is free software; you can 
redistribute it and/or\n   modify it under the terms of the GNU Library "... = 
{...}, result=...) at 
/home/milian/projects/kde4/kdevelop/languages/cpp/parser/rpp/pp-engine.cpp:98
#36 0x00007f7f729eb8be in rpp::pp::processFile (this=0x7f7f6e948910, 
fileName="/home/sources/java/duchain/typebuilder.cpp", 
    data="/* This file is part of KDevelop\n    Copyright 2006-2008 Hamish 
Rodda <rodda at kde.org>\n\n   This library is free software; you can 
redistribute it and/or\n   modify it under the terms of the GNU Library "... = 
{...}) at /home/milian/projects/kde4/kdevelop/languages/cpp/parser/rpp/pp-
engine.cpp:85
#37 0x00007f7f72c4a376 in PreprocessJob::run (this=0x4248220) at 
/home/milian/projects/kde4/kdevelop/languages/cpp/preprocessjob.cpp:237
#38 0x00007f7f8f0c81e1 in ThreadWeaver::JobRunHelper::runTheJob 
(this=0x7f7f6e949d50, th=0x42891e0, job=0x4248220) at 
../../../threadweaver/Weaver/Job.cpp:106
#39 0x00007f7f8f0c84de in ThreadWeaver::Job::execute (this=0x4248220, 
th=0x42891e0) at ../../../threadweaver/Weaver/Job.cpp:135
#40 0x00007f7f8f0c98e3 in ThreadWeaver::JobCollectionJobRunner::execute 
(this=0x4247990, t=0x42891e0) at 
../../../threadweaver/Weaver/JobCollection.cpp:82
#41 0x00007f7f8f0c74cf in ThreadWeaver::ThreadRunHelper::run 
(this=0x7f7f6e949e00, parent=0x1c5cc90, th=0x42891e0) at 
../../../threadweaver/Weaver/Thread.cpp:95
#42 0x00007f7f8f0c7a58 in ThreadWeaver::Thread::run (this=0x42891e0) at 
../../../threadweaver/Weaver/Thread.cpp:142
#43 0x00007f7f8c81214e in QThreadPrivate::start (arg=0x42891e0) at 
thread/qthread_unix.cpp:266
#44 0x00007f7f8c5809ca in start_thread (arg=<value optimized out>) at 
pthread_create.c:300
---Type <return> to continue, or q <return> to quit---
#45 0x00007f7f8ac056fd in clone () at 
../sysdeps/unix/sysv/linux/x86_64/clone.S:112
#46 0x0000000000000000 in ?? ()

Thread 4 (Thread 0x7f7f6e149710 (LWP 31749)):
#0  pthread_cond_wait@@GLIBC_2.3.2 () at 
../nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S:162
#1  0x00007f7f8c812d0b in QWaitConditionPrivate::wait (this=<value optimized 
out>, mutex=0x1c87d10, time=18446744073709551615) at 
thread/qwaitcondition_unix.cpp:87
#2  QWaitCondition::wait (this=<value optimized out>, mutex=0x1c87d10, 
time=18446744073709551615) at thread/qwaitcondition_unix.cpp:159
#3  0x00007f7f8f0c5d84 in 
ThreadWeaver::WeaverImpl::blockThreadUntilJobsAreBeingAssigned 
(this=0x1c5cc90, th=0x428cda0) at 
../../../threadweaver/Weaver/WeaverImpl.cpp:365
#4  0x00007f7f8f0c8f8b in ThreadWeaver::WorkingHardState::applyForWork 
(this=0x1c8dbb0, th=0x428cda0) at 
../../../threadweaver/Weaver/WorkingHardState.cpp:71
#5  0x00007f7f8f0c8fa4 in ThreadWeaver::WorkingHardState::applyForWork 
(this=0x1c8dbb0, th=0x428cda0) at 
../../../threadweaver/Weaver/WorkingHardState.cpp:74
#6  0x00007f7f8f0c74ff in ThreadWeaver::ThreadRunHelper::run 
(this=0x7f7f6e148e00, parent=0x1c5cc90, th=0x428cda0) at 
../../../threadweaver/Weaver/Thread.cpp:87
#7  0x00007f7f8f0c7a58 in ThreadWeaver::Thread::run (this=0x428cda0) at 
../../../threadweaver/Weaver/Thread.cpp:142
#8  0x00007f7f8c81214e in QThreadPrivate::start (arg=0x428cda0) at 
thread/qthread_unix.cpp:266
#9  0x00007f7f8c5809ca in start_thread (arg=<value optimized out>) at 
pthread_create.c:300
#10 0x00007f7f8ac056fd in clone () at 
../sysdeps/unix/sysv/linux/x86_64/clone.S:112
#11 0x0000000000000000 in ?? ()

Thread 3 (Thread 0x7f7f790e0710 (LWP 32066)):
#0  pthread_cond_wait@@GLIBC_2.3.2 () at 
../nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S:162
#1  0x00007f7f8c812d0b in QWaitConditionPrivate::wait (this=<value optimized 
out>, mutex=0x56e8f00, time=18446744073709551615) at 
thread/qwaitcondition_unix.cpp:87
#2  QWaitCondition::wait (this=<value optimized out>, mutex=0x56e8f00, 
time=18446744073709551615) at thread/qwaitcondition_unix.cpp:159
#3  0x00007f7f8f0c5d84 in 
ThreadWeaver::WeaverImpl::blockThreadUntilJobsAreBeingAssigned 
(this=0x57bbf90, th=0x5518e20) at 
../../../threadweaver/Weaver/WeaverImpl.cpp:365
#4  0x00007f7f8f0c8f8b in ThreadWeaver::WorkingHardState::applyForWork 
(this=0x571dc50, th=0x5518e20) at 
../../../threadweaver/Weaver/WorkingHardState.cpp:71
#5  0x00007f7f8f0c74ff in ThreadWeaver::ThreadRunHelper::run 
(this=0x7f7f790dfe00, parent=0x57bbf90, th=0x5518e20) at 
../../../threadweaver/Weaver/Thread.cpp:87
#6  0x00007f7f8f0c7a58 in ThreadWeaver::Thread::run (this=0x5518e20) at 
../../../threadweaver/Weaver/Thread.cpp:142
#7  0x00007f7f8c81214e in QThreadPrivate::start (arg=0x5518e20) at 
thread/qthread_unix.cpp:266
#8  0x00007f7f8c5809ca in start_thread (arg=<value optimized out>) at 
pthread_create.c:300
#9  0x00007f7f8ac056fd in clone () at 
../sysdeps/unix/sysv/linux/x86_64/clone.S:112
#10 0x0000000000000000 in ?? ()

Thread 2 (Thread 0x7f7f61cd1710 (LWP 32249)):
#0  0x00007f7f8abf8f83 in *__GI___poll (fds=<value optimized out>, nfds=<value 
optimized out>, timeout=-1) at ../sysdeps/unix/sysv/linux/poll.c:87
#1  0x00007f7f8542b4a9 in ?? () from /lib/libglib-2.0.so.0
#2  0x00007f7f8542b8fc in g_main_context_iteration () from 
/lib/libglib-2.0.so.0
#3  0x00007f7f8c930973 in QEventDispatcherGlib::processEvents (this=0x6c117c0, 
flags=<value optimized out>) at kernel/qeventdispatcher_glib.cpp:412
#4  0x00007f7f8c9035b2 in QEventLoop::processEvents (this=<value optimized 
out>, flags=DWARF-2 expression error: DW_OP_reg operations must be used either 
alone or in conjuction with DW_OP_piece.
) at kernel/qeventloop.cpp:149
#5  0x00007f7f8c90398c in QEventLoop::exec (this=0x7f7f61cd0db0, flags=DWARF-2 
expression error: DW_OP_reg operations must be used either alone or in 
conjuction with DW_OP_piece.
) at kernel/qeventloop.cpp:201
---Type <return> to continue, or q <return> to quit---
#6  0x00007f7f8c80f1cd in QThread::exec (this=<value optimized out>) at 
thread/qthread.cpp:490
#7  0x00007f7f8c8e34d8 in QInotifyFileSystemWatcherEngine::run 
(this=0x6d56790) at io/qfilesystemwatcher_inotify.cpp:248
#8  0x00007f7f8c81214e in QThreadPrivate::start (arg=0x6d56790) at 
thread/qthread_unix.cpp:266
#9  0x00007f7f8c5809ca in start_thread (arg=<value optimized out>) at 
pthread_create.c:300
#10 0x00007f7f8ac056fd in clone () at 
../sysdeps/unix/sysv/linux/x86_64/clone.S:112
#11 0x0000000000000000 in ?? ()

Thread 1 (Thread 0x7f7f90c77760 (LWP 31457)):
#0  0x00007f7f8abc938d in nanosleep () at ../sysdeps/unix/syscall-
template.S:82
#1  0x00007f7f8abfe834 in usleep (useconds=<value optimized out>) at 
../sysdeps/unix/sysv/linux/usleep.c:33
#2  0x00007f7f890f9947 in KDevelop::DUChainLock::lockForRead (this=0x1f615c8, 
timeout=0) at 
/home/milian/projects/kde4/kdevplatform/language/duchain/duchainlock.cpp:133
#3  0x00007f7f890f9e15 in KDevelop::DUChainReadLocker::lock 
(this=0x7fff487239a0) at 
/home/milian/projects/kde4/kdevplatform/language/duchain/duchainlock.cpp:257
#4  0x00007f7f890f9d86 in DUChainReadLocker (this=0x7fff487239a0, 
duChainLock=0x1f615c8, timeout=0) at 
/home/milian/projects/kde4/kdevplatform/language/duchain/duchainlock.cpp:238
#5  0x00007f7f60aba6f2 in ProblemReporterPlugin::updateReady (this=0x669f3c0, 
url=..., topContext=...)
    at 
/home/milian/projects/kde4/kdevplatform/plugins/problemreporter/problemreporterplugin.cpp:137
#6  0x00007f7f60abb070 in ProblemReporterPlugin::qt_metacall (this=0x669f3c0, 
_c=QMetaObject::InvokeMetaMethod, _id=0, _a=0x7fff48723b20)
    at 
/home/milian/projects/.build/kde4/kdevplatform/plugins/problemreporter/problemreporterplugin.moc:81
#7  0x00007f7f8c90d6d6 in QMetaMethod::invoke (this=0x7fff48723dd0, 
object=0x669f3c0, connectionType=<value optimized out>, returnValue=..., 
val0=..., val1=..., val2=..., val3=..., 
    val4=..., val5=..., val6=..., val7=..., val8=..., val9=...) at 
kernel/qmetaobject.cpp:1568
#8  0x00007f7f8c90ede6 in QMetaObject::invokeMethod (obj=0x669f3c0, 
member=<value optimized out>, type=<value optimized out>, ret=..., val0=..., 
val1=..., val2=..., val3=..., 
    val4=..., val5=..., val6=..., val7=..., val8=..., val9=...) at 
kernel/qmetaobject.cpp:1148
#9  0x00007f7f8905f71e in QMetaObject::invokeMethod (obj=0x669f3c0, 
member=0x7f7f891f6849 "updateReady", type=Qt::DirectConnection, val0=..., 
val1=..., val2=..., val3=..., 
    val4=..., val5=..., val6=..., val7=..., val8=..., val9=...) at 
/usr/include/qt4/QtCore/qobjectdefs.h:408
#10 0x00007f7f89060f2c in KDevelop::BackgroundParserPrivate::createParseJob 
(this=0x1c4b0a0, url=..., features=158, 
notifyWhenReady=QList<QPointer<QObject>> = {...})
    at 
/home/milian/projects/kde4/kdevplatform/language/backgroundparser/backgroundparser.cpp:212
#11 0x00007f7f89060215 in 
KDevelop::BackgroundParserPrivate::parseDocumentsInternal (this=0x1c4b0a0)
    at 
/home/milian/projects/kde4/kdevplatform/language/backgroundparser/backgroundparser.cpp:140
#12 0x00007f7f8905d896 in KDevelop::BackgroundParser::parseDocuments 
(this=0x1c5e200) at 
/home/milian/projects/kde4/kdevplatform/language/backgroundparser/backgroundparser.cpp:483
#13 0x00007f7f8905eead in KDevelop::BackgroundParser::qt_metacall 
(this=0x1c5e200, _c=QMetaObject::InvokeMetaMethod, _id=20, _a=0x7fff48724750)
    at 
/home/milian/projects/.build/kde4/kdevplatform/language/backgroundparser.moc:179
#14 0x00007f7f8c91c597 in QMetaObject::activate (sender=0x1c4b0b8, m=<value 
optimized out>, local_signal_index=<value optimized out>, argv=0xffffffffffffffff)
    at kernel/qobject.cpp:3280
#15 0x00007f7f8c916389 in QObject::event (this=0x1c4b0b8, e=0x0) at 
kernel/qobject.cpp:1183
#16 0x00007f7f8ba7184c in QApplicationPrivate::notify_helper (this=0x19b1060, 
receiver=0x1c4b0b8, e=0x7fff48724ef0) at kernel/qapplication.cpp:4358
#17 0x00007f7f8ba772ed in QApplication::notify (this=0x7fff487253f0, 
receiver=0x1c4b0b8, e=0x7fff48724ef0) at kernel/qapplication.cpp:4241
#18 0x00007f7f8d0e56b6 in KApplication::notify (this=0x7fff487253f0, 
receiver=0x1c4b0b8, event=0x7fff48724ef0) at 
../../kdeui/kernel/kapplication.cpp:309
#19 0x0000000000404a7c in KDevelopApplication::notify (this=0x7fff487253f0, 
receiver=0x1c4b0b8, event=0x7fff48724ef0) at 
/home/milian/projects/kde4/kdevelop/app/main.cpp:87
---Type <return> to continue, or q <return> to quit---
#20 0x00007f7f8c90487c in QCoreApplication::notifyInternal 
(this=0x7fff487253f0, receiver=0x1c4b0b8, event=0x7fff48724ef0) at 
kernel/qcoreapplication.cpp:732
#21 0x00007f7f8c933ea2 in QCoreApplication::sendEvent (this=0x19b4da0) at 
../../include/QtCore/../../src/corelib/kernel/qcoreapplication.h:215
#22 QTimerInfoList::activateTimers (this=0x19b4da0) at 
kernel/qeventdispatcher_unix.cpp:602
#23 0x00007f7f8c930c84 in timerSourceDispatch (source=<value optimized out>) 
at kernel/qeventdispatcher_glib.cpp:184
#24 0x00007f7f854278c2 in g_main_context_dispatch () from 
/lib/libglib-2.0.so.0
#25 0x00007f7f8542b748 in ?? () from /lib/libglib-2.0.so.0
#26 0x00007f7f8542b8fc in g_main_context_iteration () from 
/lib/libglib-2.0.so.0
#27 0x00007f7f8c930973 in QEventDispatcherGlib::processEvents (this=0x198df30, 
flags=<value optimized out>) at kernel/qeventdispatcher_glib.cpp:412
#28 0x00007f7f8bb22dee in QGuiEventDispatcherGlib::processEvents 
(this=0x7fff487238a0, flags=<value optimized out>) at 
kernel/qguieventdispatcher_glib.cpp:204
#29 0x00007f7f8c9035b2 in QEventLoop::processEvents (this=<value optimized 
out>, flags=DWARF-2 expression error: DW_OP_reg operations must be used either 
alone or in conjuction with DW_OP_piece.
) at kernel/qeventloop.cpp:149
#30 0x00007f7f8c90398c in QEventLoop::exec (this=0x7fff48725190, flags=DWARF-2 
expression error: DW_OP_reg operations must be used either alone or in 
conjuction with DW_OP_piece.
) at kernel/qeventloop.cpp:201
#31 0x00007f7f8c907a3b in QCoreApplication::exec () at 
kernel/qcoreapplication.cpp:1009
#32 0x000000000040a00b in main (argc=3, argv=0x7fff48726c58) at 
/home/milian/projects/kde4/kdevelop/app/main.cpp:391
(gdb) 

-- 
Milian Wolff
mail at milianw.de
http://milianw.de
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 198 bytes
Desc: This is a digitally signed message part.
URL: <http://mail.kde.org/pipermail/kdevelop-devel/attachments/20100711/9c92f1c7/attachment-0001.sig>


More information about the KDevelop-devel mailing list