From aec85a53df3dbe3047c6db0f6eb39cb161cd3e6b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tor=20Arne=20Vestb=C3=B8?= Date: Thu, 8 Dec 2016 14:07:25 +0100 Subject: [PATCH] Disable core dumps for selftests that are meant to be crashing Task-number: QTBUG-55155 Change-Id: I26a1461f35f916f3980fcb18cdddf3502e22fc90 Reviewed-by: Timur Pocheptsov --- src/testlib/qtestcase.cpp | 17 +++++++++++++++++ tests/auto/testlib/selftests/tst_selftests.cpp | 4 +++- 2 files changed, 20 insertions(+), 1 deletion(-) diff --git a/src/testlib/qtestcase.cpp b/src/testlib/qtestcase.cpp index f2a962408ea..7b76f1f9707 100644 --- a/src/testlib/qtestcase.cpp +++ b/src/testlib/qtestcase.cpp @@ -99,6 +99,7 @@ #include #include #include +#include #endif #if defined(Q_OS_MACX) @@ -143,6 +144,22 @@ static bool debuggerPresent() #endif } +static void disableCoreDump() +{ + bool ok = false; + const int disableCoreDump = qEnvironmentVariableIntValue("QTEST_DISABLE_CORE_DUMP", &ok); + if (ok && disableCoreDump == 1) { +#if defined(Q_OS_UNIX) + struct rlimit limit; + limit.rlim_cur = 0; + limit.rlim_max = 0; + if (setrlimit(RLIMIT_CORE, &limit) != 0) + qWarning("Failed to disable core dumps: %d", errno); +#endif + } +} +Q_CONSTRUCTOR_FUNCTION(disableCoreDump); + static void stackTrace() { bool ok = false; diff --git a/tests/auto/testlib/selftests/tst_selftests.cpp b/tests/auto/testlib/selftests/tst_selftests.cpp index 08060770315..35b759bcc28 100644 --- a/tests/auto/testlib/selftests/tst_selftests.cpp +++ b/tests/auto/testlib/selftests/tst_selftests.cpp @@ -592,8 +592,10 @@ void tst_Selftests::doRunSubTest(QString const& subdir, QStringList const& logge QProcess proc; QProcessEnvironment environment = processEnvironment(); - if (crashes) + if (crashes) { + environment.insert("QTEST_DISABLE_CORE_DUMP", "1"); environment.insert("QTEST_DISABLE_STACK_DUMP", "1"); + } proc.setProcessEnvironment(environment); const QString path = subdir + QLatin1Char('/') + subdir; proc.start(path, arguments);