Bug 341900 - Crash when .cache/kdevduchain is removed while KDevelop is running
Summary: Crash when .cache/kdevduchain is removed while KDevelop is running
Status: RESOLVED INTENTIONAL
Alias: None
Product: kdevplatform
Classification: Developer tools
Component: language (show other bugs)
Version: git master
Platform: Compiled Sources Linux
: NOR crash
Target Milestone: ---
Assignee: kdevelop-bugs-null
URL:
Keywords:
: 344348 (view as bug list)
Depends on:
Blocks:
 
Reported: 2014-12-14 23:10 UTC by Nicolai Hähnle
Modified: 2015-10-11 12:47 UTC (History)
2 users (show)

See Also:
Latest Commit:
Version Fixed In:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Nicolai Hähnle 2014-12-14 23:10:11 UTC
The summary pretty much says it all: When you delete the .cache/kdevduchain directory while KDevelop is running, KDevelop will eventually die with one of a variety of assertions, see a sample below.

This happens most of the time, but not always. When I deleted the directory rather soon after launch, KDevelop was able to continue.

Obviously this bug is easy to avoid, but hey - it's called a cache, so I should be able to delete it ;)

Reproducible: Sometimes




Here are the last few lines of debug output and one associated backtrace:

kdevplatform.language: starting cleanup
cannot re-open repository file for storing

Program received signal SIGABRT, Aborted.
[Switching to Thread 0x7fffc89f6700 (LWP 26446)]
0x00007ffff4032d27 in __GI_raise (sig=sig@entry=6) at ../nptl/sysdeps/unix/sysv/linux/raise.c:56
56      ../nptl/sysdeps/unix/sysv/linux/raise.c: Datei oder Verzeichnis nicht gefunden.
(gdb) bt
#0  0x00007ffff4032d27 in __GI_raise (sig=sig@entry=6) at ../nptl/sysdeps/unix/sysv/linux/raise.c:56
#1  0x00007ffff4034418 in __GI_abort () at abort.c:89
#2  0x00007ffff475bd38 in qt_message_fatal (context=..., message=...) at global/qlogging.cpp:1340
#3  QMessageLogger::fatal (this=<optimized out>, msg=<optimized out>) at global/qlogging.cpp:669
#4  0x00007fffef55f8b0 in KDevelop::ItemRepository<KDevelop::IdentifierPrivate<false>, KDevelop::IdentifierItemRequest, true, true, 0u, 1048576u>::store (this=0x27ad430)
    at /home/haehnle/software/kdevelop/kdevplatform/serialization/itemrepository.h:1885
#5  0x00007fffeefce9be in KDevelop::ItemRepositoryRegistry::store (this=0x2754780) at /home/haehnle/software/kdevelop/kdevplatform/serialization/itemrepositoryregistry.cpp:325
#6  0x00007fffef4d7433 in KDevelop::DUChainPrivate::doMoreCleanup (this=0x7fffefd3f380 <KDevelop::(anonymous namespace)::Q_QGS_sdDUChainPrivate::innerFunction()::holder>, retries=1, 
    needLockRepository=true) at /home/haehnle/software/kdevelop/kdevplatform/language/duchain/duchain.cpp:849
#7  0x00007fffef4d3ef1 in KDevelop::DUChainPrivate::CleanupThread::run (this=0x35d71b0) at /home/haehnle/software/kdevelop/kdevplatform/language/duchain/duchain.cpp:288
#8  0x00007ffff476d2ee in QThreadPrivate::start (arg=0x35d71b0) at thread/qthread_unix.cpp:345
#9  0x00007fffed5590a5 in start_thread (arg=0x7fffc89f6700) at pthread_create.c:309
#10 0x00007ffff40f677d in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:111

Here's another backtrace:
#0  0x00007ffff4032d27 in __GI_raise (sig=sig@entry=6) at ../nptl/sysdeps/unix/sysv/linux/raise.c:56
#1  0x00007ffff4034418 in __GI_abort () at abort.c:89
#2  0x00007ffff475bd38 in qt_message_fatal (context=..., message=...) at global/qlogging.cpp:1340
#3  QMessageLogger::fatal (this=this@entry=0x7fffacd99550, msg=msg@entry=0x7ffff4a56fe8 "ASSERT: \"%s\" in file %s, line %d") at global/qlogging.cpp:669
#4  0x00007ffff47569a4 in qt_assert (assertion=<optimized out>, file=<optimized out>, line=<optimized out>) at global/qglobal.cpp:2124
#5  0x00007fffef5245eb in KDevelop::TopDUContextDynamicData::loadData (this=0x7fffa848cdd0) at /home/haehnle/software/kdevelop/kdevplatform/language/duchain/topducontextdynamicdata.cpp:541
#6  0x00007fffef527f5d in KDevelop::TopDUContextDynamicData::DUChainItemStorage<QExplicitlySharedDataPointer<KDevelop::Problem> >::allocateItemIndex (this=0x7fffa848ce20, item=..., 
    temporary=false) at /home/haehnle/software/kdevelop/kdevplatform/language/duchain/topducontextdynamicdata.cpp:325
#7  0x00007fffef525c70 in KDevelop::TopDUContextDynamicData::allocateProblemIndex (this=0x7fffa848cdd0, problem=...)
    at /home/haehnle/software/kdevelop/kdevplatform/language/duchain/topducontextdynamicdata.cpp:779
#8  0x00007fffef5b4200 in KDevelop::LocalIndexedProblem::LocalIndexedProblem (this=0x7fffacd99720, problem=..., top=0x7fffa8a195a0)
    at /home/haehnle/software/kdevelop/kdevplatform/language/duchain/problem.cpp:56
#9  0x00007fffef5154a1 in KDevelop::TopDUContext::addProblem (this=0x7fffa8a195a0, problem=...) at /home/haehnle/software/kdevelop/kdevplatform/language/duchain/topducontext.cpp:953
#10 0x00007fffd05cb7d2 in CPPInternalParseJob::run (this=0x7fff9d0d2740, pointer=..., thread=0x0) at /home/haehnle/software/kdevelop/kdevelop/languages/cpp/cppparsejob.cpp:825
Comment 1 Kevin Funk 2015-08-25 07:29:58 UTC
I think this is a WONTFIX.

"it's called a cache, so I should be able to delete it ;)" -- Indeed, but only when the application is *not* running.
Comment 2 Kevin Funk 2015-08-25 08:08:35 UTC
*** Bug 344348 has been marked as a duplicate of this bug. ***
Comment 3 Sven Brauch 2015-10-11 12:47:32 UTC
Well, don't do that. I'll close this as WONTFIX.