diff options
author | Nikolai Kosjar <nikolai.kosjar@qt.io> | 2018-11-23 11:28:10 +0100 |
---|---|---|
committer | Nikolai Kosjar <nikolai.kosjar@qt.io> | 2018-11-26 09:49:25 +0000 |
commit | a4cf0ad109aa6d7a60cbcce2f4090bdc07d2f68d (patch) | |
tree | 260f8de9718a2489327ca90351f2e0ea8fcd43d5 /src/tools/clangbackend/clangbackendmain.cpp | |
parent | b61d11a446ff50b604f3f0a6e458e04a0b774897 (diff) | |
download | qt-creator-a4cf0ad109aa6d7a60cbcce2f4090bdc07d2f68d.tar.gz |
Clang: Disable printing stack traces by default
Printing the stack strace in the event of a crash is very useful, but in
the worst case it can also result in a deadlock, without any trace being
printed, rendering the clangbackend completely useless.
For example, if a thread allocates memory (lock) and another thread
crashes right then, clang's stack trace printer is invoked, which
(unfortunately) also tries to allocate memory (deadlock). This was
observed with QTCREATORBUG-21559.
The stack trace printer should be fixed in clang. Until then, disable
printing stack traces by default and allow to enable when explicitly
requested (QTC_CLANG_ENABLE_STACKTRACES=1).
Task-number: QTCREATORBUG-21559
Change-Id: I418cea7f3d70bc8a9cae333b3858228650307c6e
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
Reviewed-by: Marco Bubke <marco.bubke@qt.io>
Reviewed-by: Ivan Donchevskii <ivan.donchevskii@qt.io>
Diffstat (limited to 'src/tools/clangbackend/clangbackendmain.cpp')
-rw-r--r-- | src/tools/clangbackend/clangbackendmain.cpp | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/src/tools/clangbackend/clangbackendmain.cpp b/src/tools/clangbackend/clangbackendmain.cpp index d165ebb6dd..efe5970a4d 100644 --- a/src/tools/clangbackend/clangbackendmain.cpp +++ b/src/tools/clangbackend/clangbackendmain.cpp @@ -80,7 +80,9 @@ int main(int argc, char *argv[]) const QString connection = processArguments(application); - clang_enableStackTraces(); + // Printing the stack strace might dead lock as clang's stack printer allocates memory. + if (qEnvironmentVariableIntValue("QTC_CLANG_ENABLE_STACKTRACES")) + clang_enableStackTraces(); ClangCodeModelServer clangCodeModelServer; ConnectionServer<ClangCodeModelServer, ClangCodeModelClientProxy> connectionServer; |