Qt
Internal/Contributor docs for the Qt SDK. Note: These are NOT official API docs; those are found at https://doc.qt.io/
Loading...
Searching...
No Matches
qtestcrashhandler_unix.cpp File Reference

(6489c41234806704c5e84a013959a28e1ee7aed4)

#include <QtTest/private/qtestcrashhandler_p.h>
#include <QtCore/qbytearray.h>
#include <QtCore/qstring.h>
#include <QtCore/private/qcore_unix_p.h>
#include <QtTest/qtestcase.h>
#include <QtTest/private/qtestlog_p.h>
#include <charconv>
#include <string_view>
#include <stdio.h>
#include <stdlib.h>
#include <errno.h>
#include <signal.h>
#include <time.h>
#include <sys/mman.h>
#include <sys/uio.h>
#include <sys/wait.h>
#include <unistd.h>
#include <sys/resource.h>
Include dependency graph for qtestcrashhandler_unix.cpp:

Go to the source code of this file.

Namespaces

namespace  QTest
 [15]
namespace  QTest::CrashHandler

Macros

#define _PATH_DEFPATH   "/usr/bin:/bin"
#define SIGSTKSZ   0 /* we have code to set the minimum */
#define SA_RESETHAND   0
#define OUR_SIGNALS(F)
#define CASE_LABEL(S)
#define ENUMERATE_SIGNALS(S)

Typedefs

using ucontext_t = void
using OldActionsArray = std::array<struct sigaction, fatalSignals.size()>

Functions

static const char * signalName (int signum) noexcept
template<typename... Args>
static ssize_t writeToStderr (Args &&... args)
static void QTest::CrashHandler::actionHandler (int signum, siginfo_t *info, void *)
bool QTest::CrashHandler::alreadyDebugging ()
static bool QTest::CrashHandler::hasSystemCrashReporter ()
void QTest::CrashHandler::maybeDisableCoreDump ()
void QTest::CrashHandler::prepareStackTrace ()
void QTest::CrashHandler::printTestRunTime ()
static quintptr QTest::CrashHandler::getProgramCounter (void *ucontext)
void QTest::CrashHandler::generateStackTrace (quintptr ip)
void QTest::CrashHandler::blockUnixSignals ()
static std::string_view QTest::CrashHandler::unixSignalCodeToName (int signo, int code) noexcept
template<typename T>
static std::enable_if_t< sizeof(std::declval< T >().si_pid)+sizeof(std::declval< T >().si_uid) >=1 > QTest::CrashHandler::printSentSignalInfo (T *info)
static void QTest::CrashHandler::printSentSignalInfo (...)
template<typename T>
static std::enable_if_t< sizeof(std::declval< T >().si_addr) >=1 > QTest::CrashHandler::printCrashingSignalInfo (T *info, quintptr pc)
static void QTest::CrashHandler::printCrashingSignalInfo (...)
static void QTest::CrashHandler::regularHandler (int signum)
static auto QTest::CrashHandler::alternateStackSize () noexcept

Variables

static constexpr std::array fatalSignals
static constexpr std::array crashingSignals
static Q_CONSTINIT OldActionsArray QTest::CrashHandler::oldActions {}
static bool QTest::CrashHandler::pauseOnCrash = false
static DebuggerProgram QTest::CrashHandler::debugger = None

Macro Definition Documentation

◆ _PATH_DEFPATH

#define _PATH_DEFPATH   "/usr/bin:/bin"

Definition at line 69 of file qtestcrashhandler_unix.cpp.

◆ CASE_LABEL

#define CASE_LABEL ( S)
Value:
case SIG ## S: return QT_STRINGIFY(S);
#define S(x, n)
#define QT_STRINGIFY(x)

Definition at line 94 of file qtestcrashhandler_unix.cpp.

◆ ENUMERATE_SIGNALS

#define ENUMERATE_SIGNALS ( S)
Value:
SIG ## S,

Definition at line 95 of file qtestcrashhandler_unix.cpp.

◆ OUR_SIGNALS

#define OUR_SIGNALS ( F)
Value:
F(HUP) \
F(INT) \
F(QUIT) \
F(ABRT) \
F(ILL) \
F(BUS) \
F(FPE) \
F(SEGV) \
F(PIPE) \
F(TERM) \
#define F(x, y, z)

Definition at line 82 of file qtestcrashhandler_unix.cpp.

◆ SA_RESETHAND

#define SA_RESETHAND   0

Definition at line 75 of file qtestcrashhandler_unix.cpp.

◆ SIGSTKSZ

#define SIGSTKSZ   0 /* we have code to set the minimum */

Definition at line 72 of file qtestcrashhandler_unix.cpp.

Typedef Documentation

◆ OldActionsArray

typedef std::array< struct sigaction, fatalSignals.size()> OldActionsArray = std::array<struct sigaction, fatalSignals.size()>

Definition at line 125 of file qtestcrashhandler_unix.cpp.

◆ ucontext_t

using ucontext_t = void

Definition at line 43 of file qtestcrashhandler_unix.cpp.

Function Documentation

◆ signalName()

const char * signalName ( int signum)
staticnoexcept

Definition at line 96 of file qtestcrashhandler_unix.cpp.

Referenced by org.qtproject.qt.android.QtQuickView::connectSignalListener(), org.qtproject.qt.android.QtQuickViewContent::connectSignalListener(), and org.qtproject.qt.android.QtSignalListener< T >::onSignalEmitted().

Here is the caller graph for this function:

◆ writeToStderr()

template<typename... Args>
ssize_t writeToStderr ( Args &&... args)
static

Definition at line 127 of file qtestcrashhandler_unix.cpp.

Variable Documentation

◆ crashingSignals

constexpr std::array crashingSignals
staticconstexpr
Initial value:
= {
SIGILL, SIGBUS, SIGFPE, SIGSEGV
}

Definition at line 116 of file qtestcrashhandler_unix.cpp.

◆ fatalSignals

constexpr std::array fatalSignals
staticconstexpr
Initial value:
= {
}

Definition at line 110 of file qtestcrashhandler_unix.cpp.