forked from qt-creator/qt-creator
Clang: Disable crash recovery in libclang
...because
1. We already run in a separate process.
2. It's not entirely clear in which state we end up after a crash,
except for:
3. A "crashed" translation unit won't be freed, even when calling
clang_disposeTranslationUnit().
This avoids undefined behavior within clangbackend and accumulated
leaking memory in the long run. On the other side, crashes within
libclang will crash clangbackend now, too.
Change-Id: I0789c52db08ace2f7e181e3b7bdfc9f595f75e8d
Reviewed-by: Ivan Donchevskii <ivan.donchevskii@qt.io>
This commit is contained in:
@@ -53,6 +53,7 @@ ClangCodeModelConnectionClient::ClangCodeModelConnectionClient(
|
|||||||
|
|
||||||
Utils::Environment environment;
|
Utils::Environment environment;
|
||||||
environment.set(QStringLiteral("LIBCLANG_NOTHREADS"), QString());
|
environment.set(QStringLiteral("LIBCLANG_NOTHREADS"), QString());
|
||||||
|
environment.set(QStringLiteral("LIBCLANG_DISABLE_CRASH_RECOVERY"), QString());
|
||||||
m_processCreator.setEnvironment(environment);
|
m_processCreator.setEnvironment(environment);
|
||||||
|
|
||||||
stdErrPrefixer().setPrefix("clangbackend.stderr: ");
|
stdErrPrefixer().setPrefix("clangbackend.stderr: ");
|
||||||
|
|||||||
@@ -82,7 +82,6 @@ int main(int argc, char *argv[])
|
|||||||
|
|
||||||
const QString connection = processArguments(application);
|
const QString connection = processArguments(application);
|
||||||
|
|
||||||
clang_toggleCrashRecovery(true);
|
|
||||||
clang_enableStackTraces();
|
clang_enableStackTraces();
|
||||||
|
|
||||||
ClangCodeModelServer clangCodeModelServer;
|
ClangCodeModelServer clangCodeModelServer;
|
||||||
|
|||||||
Reference in New Issue
Block a user