| Summary: | KDevelop crashes when trying to parse CMake project with targets that depends on each other | ||
|---|---|---|---|
| Product: | [Applications] kdevelop | Reporter: | Oleksandr Senkovych <bjsenya> |
| Component: | Build tools: CMake | Assignee: | kdevelop-bugs-null |
| Status: | RESOLVED WORKSFORME | ||
| Severity: | crash | CC: | aleixpol, amantia, kfunk, savoiu, vayerx |
| Priority: | HI | Keywords: | regression, release_blocker |
| Version First Reported In: | git master | ||
| Target Milestone: | --- | ||
| Platform: | unspecified | ||
| OS: | Linux | ||
| Latest Commit: | Version Fixed/Implemented In: | ||
| Sentry Crash Report: | |||
| Attachments: | New crash information added by DrKonqi | ||
|
Description
Oleksandr Senkovych
2014-02-03 11:43:35 UTC
Andras had the same problem. That needs to be fixed before release. *** Bug 330755 has been marked as a duplicate of this bug. *** Hack to make this work for the moment:
diff --git a/projectmanagers/cmake/cmakecommitchangesjob.cpp b/projectmanagers/cmake/cmakecommitchangesjob.cpp
index e7b9d4e..82abd2c 100644
--- a/projectmanagers/cmake/cmakecommitchangesjob.cpp
+++ b/projectmanagers/cmake/cmakecommitchangesjob.cpp
@@ -135,8 +135,8 @@ void processDependencies(ProcessedTarget &target, const QString& dep, const CMak
target.includes += depData["INTERFACE_INCLUDE_DIRECTORIES"];
target.defines += depData["INTERFACE_COMPILE_DEFINITIONS"];
- foreach(const QString& d, depData["INTERFACE_LINK_LIBRARIES"])
- processDependencies(target, d, data);
+// foreach(const QString& d, depData["INTERFACE_LINK_LIBRARIES"])
+// processDependencies(target, d, data);
}
Raising importance, this makes KDevelop completely useless for some projects.
A simple QSet recursion guard should be added to ensure we do not recurse into already handled dependencies to fix this. How hard can it be™ Created attachment 86018 [details]
New crash information added by DrKonqi
kdevelop (4.6.0) on KDE Platform 4.11.5 using Qt 4.8.5
- What I was doing when the application crashed:
I was just closing KDevelop after opening it and creating a dummy "hello world" c++ cmake project.
-- Backtrace (Reduced):
#7 0xa637430d in CMakeImportJob::initialize() () from /usr/lib/kde4/kdevcmakemanager.so
#8 0xa6374691 in QtConcurrent::VoidStoredMemberFunctionPointerCall0<void, CMakeImportJob>::runFunctor() () from /usr/lib/kde4/kdevcmakemanager.so
#9 0xa6374719 in QtConcurrent::RunFunctionTask<void>::run() () from /usr/lib/kde4/kdevcmakemanager.so
#10 0xb6432170 in QThreadPoolThread::run() () from /lib/libQtCore.so.4
#11 0xb643f380 in QThreadPrivate::start(void*) () from /lib/libQtCore.so.4
This now works for me in current master / kdevelop 4.7 with the example provided above. Can someone still reproduce it with a recent checkout? |