From a4cf0ad109aa6d7a60cbcce2f4090bdc07d2f68d Mon Sep 17 00:00:00 2001 From: Nikolai Kosjar Date: Fri, 23 Nov 2018 11:28:10 +0100 Subject: 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 Reviewed-by: Marco Bubke Reviewed-by: Ivan Donchevskii --- src/tools/clangbackend/clangbackendmain.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) (limited to 'src/tools/clangbackend/clangbackendmain.cpp') 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 connectionServer; -- cgit v1.2.1