diff options
Diffstat (limited to 'tests/auto/testlib/selftests/crashes')
-rw-r--r-- | tests/auto/testlib/selftests/crashes/CMakeLists.txt | 9 | ||||
-rw-r--r-- | tests/auto/testlib/selftests/crashes/tst_crashes.cpp | 14 |
2 files changed, 16 insertions, 7 deletions
diff --git a/tests/auto/testlib/selftests/crashes/CMakeLists.txt b/tests/auto/testlib/selftests/crashes/CMakeLists.txt index c4ec65fc4e..c11bab90d0 100644 --- a/tests/auto/testlib/selftests/crashes/CMakeLists.txt +++ b/tests/auto/testlib/selftests/crashes/CMakeLists.txt @@ -1,15 +1,14 @@ # Copyright (C) 2022 The Qt Company Ltd. # SPDX-License-Identifier: BSD-3-Clause -# Generated from crashes.pro. - ##################################################################### ## crashes Binary: ##################################################################### qt_internal_add_executable(crashes - NO_INSTALL # special case - OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} # special case + NO_INSTALL + EXCEPTIONS + OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} SOURCES tst_crashes.cpp LIBRARIES @@ -19,6 +18,4 @@ qt_internal_add_executable(crashes ## Scopes: ##################################################################### -# special case begin qt_internal_apply_testlib_coverage_options(crashes) -# special case end diff --git a/tests/auto/testlib/selftests/crashes/tst_crashes.cpp b/tests/auto/testlib/selftests/crashes/tst_crashes.cpp index abac42c723..4ba8a426e6 100644 --- a/tests/auto/testlib/selftests/crashes/tst_crashes.cpp +++ b/tests/auto/testlib/selftests/crashes/tst_crashes.cpp @@ -1,5 +1,5 @@ // Copyright (C) 2016 The Qt Company Ltd. -// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0 +// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only #include <QtCore/QCoreApplication> @@ -7,6 +7,8 @@ #ifdef Q_OS_WIN #include <qt_windows.h> +#else +#include <sys/resource.h> #endif class tst_Crashes: public QObject @@ -22,6 +24,12 @@ void tst_Crashes::crash() #if defined(Q_OS_WIN) //we avoid the error dialogbox to appear on windows SetErrorMode( SEM_NOGPFAULTERRORBOX | SEM_FAILCRITICALERRORS | SEM_NOOPENFILEERRORBOX); +#elif defined(RLIMIT_CORE) + // Unix: set our core dump limit to zero to request no dialogs. + if (struct rlimit rlim; getrlimit(RLIMIT_CORE, &rlim) == 0) { + rlim.rlim_cur = 0; + setrlimit(RLIMIT_CORE, &rlim); + } #endif /* We deliberately dereference an invalid but non-zero address; @@ -30,7 +38,11 @@ void tst_Crashes::crash() rather than SIGSEGV). */ int *i = 0; + +QT_WARNING_PUSH +QT_WARNING_DISABLE_GCC("-Warray-bounds") i[1] = 1; +QT_WARNING_POP } QTEST_MAIN(tst_Crashes) |