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);