OpenTTD Source: CrashLogUnix Class Reference

OpenTTD Source 15.0-RC2

Public Member Functions | Data Fields | Static Public Attributes | Private Member Functions | Private Attributes
CrashLogUnix Class Reference

Unix implementation for the crash logger. More...

Inheritance diagram for CrashLogUnix:

## Public Member Functions
| CrashLogUnix (int signum)
| A crash log is always generated by signal.
Public Member Functions inherited from CrashLog
virtual | ~CrashLog ()=default
| Stub destructor to silence some compilers.
void | FillCrashLog ()
| Fill the crash log buffer with all data of a crash log.
void | PrintCrashLog () const
bool | WriteCrashLog ()
| Write the crash log to a file.
virtual bool | WriteCrashDump ()
| Write the (crash) dump to a file.
bool | WriteSavegame ()
| Write the (crash) savegame to a file.
bool | WriteScreenshot ()
| Write the (crash) screenshot to a file.
void | SendSurvey () const
| Send the survey result, noting it was a crash.
void | MakeCrashLog ()
| Makes the crash log, writes it to a file and then subsequently tries to make a crash dump and crash savegame.

## Data Fields
jmp_buf | internal_fault_jmp_buf {}
| Buffer to track the long jump set setup.
bool | try_execute_active = false
| Whether we are in a TryExecute block.
Data Fields inherited from CrashLog
nlohmann::json | survey
std::string | crashlog_filename
std::string | crashdump_filename
std::string | savegame_filename
std::string | screenshot_filename

## Static Public Attributes
static CrashLogUnix * | current = nullptr
| Points to the current crash log.

## Private Member Functions
void | SurveyCrash (nlohmann::json &survey) const override
| Convert system crash reason to JSON.
void | SurveyStacktrace (nlohmann::json &survey) const override
| Convert stacktrace to JSON.
bool | TryExecute (std::string_view section_name, std::function< bool()> &&func) override
| Execute the func() and return its value.

## Private Attributes
int | signum
| Signal that has been thrown.

## Additional Inherited Members
Static Public Member Functions inherited from CrashLog
static void | InitialiseCrashLog ()
| Initialiser for crash logs; do the appropriate things so crashes are handled by our crash handler instead of returning straight to the OS.
static void | InitThread ()
| Prepare crash log handler for a newly started thread.
static void | SetErrorMessage (const std::string &message)
| Sets a message for the error message handler.
static void | AfterCrashLogCleanup ()
| Try to close the sound/video stuff so it doesn't keep lingering around incorrect video states or so, e.g.
Protected Member Functions inherited from CrashLog
std::string | CreateFileName (std::string_view ext, bool with_dir=true) const
| Create a timestamped filename.

## Detailed Description

Unix implementation for the crash logger.

Definition at line 46 of file crashlog_unix.cpp.

## Constructor & Destructor Documentation

## ◆ CrashLogUnix()

CrashLogUnix::CrashLogUnix | ( | int | signum | ) |
| inline

A crash log is always generated by signal.

Parameters

  signum | the signal that was caused by the crash.

Definition at line 118 of file crashlog_unix.cpp.

## Member Function Documentation

## ◆ SurveyCrash()

void CrashLogUnix::SurveyCrash | ( | nlohmann::json & | survey | ) | const
| inlineoverrideprivatevirtual

Convert system crash reason to JSON.

Parameters

  survey | The JSON object.

Implements CrashLog.

Definition at line 50 of file crashlog_unix.cpp.

References signum.

## ◆ SurveyStacktrace()

void CrashLogUnix::SurveyStacktrace | ( | nlohmann::json & | survey | ) | const
| inlineoverrideprivatevirtual

Convert stacktrace to JSON.

Parameters

  survey | The JSON object.

Implements CrashLog.

Definition at line 56 of file crashlog_unix.cpp.

References lengthof.

## ◆ TryExecute()

bool CrashLogUnix::TryExecute | ( | std::string_view | section_name,
|  | std::function< bool()> && | func
| ) |  |
| inlineoverrideprivatevirtual

Execute the func() and return its value.

If any exception / signal / crash happens, catch it and return false. This function should, in theory, never not return, even in the worst conditions.

Parameters

  section_name | The name of the section to be executed. Printed when a crash happens.
  func | The function to call.

Returns
  true iff the function returned true.

Implements CrashLog.

Definition at line 88 of file crashlog_unix.cpp.

References _signals_to_handle, internal_fault_jmp_buf, signum, and try_execute_active.

## Field Documentation

## ◆ current

CrashLogUnix * CrashLogUnix::current = nullptr
| static

Points to the current crash log.

Definition at line 130 of file crashlog_unix.cpp.

Referenced by HandleCrash(), and HandleInternalCrash().

## ◆ internal_fault_jmp_buf

jmp_buf CrashLogUnix::internal_fault_jmp_buf {}

Buffer to track the long jump set setup.

Definition at line 124 of file crashlog_unix.cpp.

Referenced by TryExecute().

## ◆ signum

int CrashLogUnix::signum
| private

Signal that has been thrown.

Definition at line 48 of file crashlog_unix.cpp.

Referenced by SurveyCrash(), and TryExecute().

## ◆ try_execute_active

bool CrashLogUnix::try_execute_active = false

Whether we are in a TryExecute block.

Definition at line 127 of file crashlog_unix.cpp.

Referenced by TryExecute().

The documentation for this class was generated from the following file:

- src/os/unix/crashlog_unix.cpp