mirror of
https://github.com/crystalidea/qt6windows7.git
synced 2024-11-24 12:30:32 +08:00
47 lines
1.1 KiB
C++
47 lines
1.1 KiB
C++
|
// Copyright (C) 2016 The Qt Company Ltd.
|
||
|
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0
|
||
|
|
||
|
|
||
|
#include <QtCore/QCoreApplication>
|
||
|
#include <QTest>
|
||
|
|
||
|
#ifdef Q_OS_WIN
|
||
|
#include <qt_windows.h>
|
||
|
#else
|
||
|
#include <sys/resource.h>
|
||
|
#endif
|
||
|
|
||
|
class tst_Crashes: public QObject
|
||
|
{
|
||
|
Q_OBJECT
|
||
|
|
||
|
private slots:
|
||
|
void crash();
|
||
|
};
|
||
|
|
||
|
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;
|
||
|
it should be non-zero because a few platforms may have special crash behavior
|
||
|
when dereferencing exactly 0 (e.g. some macs have been observed to generate SIGILL
|
||
|
rather than SIGSEGV).
|
||
|
*/
|
||
|
int *i = 0;
|
||
|
i[1] = 1;
|
||
|
}
|
||
|
|
||
|
QTEST_MAIN(tst_Crashes)
|
||
|
|
||
|
#include "tst_crashes.moc"
|