feat: add process crash popups
This commit is contained in:
@@ -0,0 +1,48 @@
|
||||
/*
|
||||
* CrashReportSyscall.hpp
|
||||
* SYS_CRASH_REPORT
|
||||
* Copyright (c) 2026 Daniel Hammer
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
#include <cstdint>
|
||||
#include "Syscall.hpp"
|
||||
#include "../CrashReport.hpp"
|
||||
|
||||
namespace Montauk {
|
||||
|
||||
static int64_t Sys_CrashReport(CrashReportInfo* out) {
|
||||
if (!out) return 0;
|
||||
if (CrashReport::g_reportCount == 0) return 0;
|
||||
|
||||
int oldestIdx = (CrashReport::g_reportHead - CrashReport::g_reportCount + CrashReport::MaxReports) % CrashReport::MaxReports;
|
||||
auto* rep = &CrashReport::g_reports[oldestIdx];
|
||||
|
||||
out->pid = rep->pid;
|
||||
for (int i = 0; i < 64 && rep->processName[i]; i++) out->processName[i] = rep->processName[i];
|
||||
out->processName[63] = '\0';
|
||||
out->exceptionVector = rep->exceptionVector;
|
||||
for (int i = 0; i < 32 && rep->exceptionName[i]; i++) out->exceptionName[i] = rep->exceptionName[i];
|
||||
out->exceptionName[31] = '\0';
|
||||
out->faultingAddress = rep->faultingAddress;
|
||||
out->instructionPointer = rep->instructionPointer;
|
||||
out->stackPointer = rep->stackPointer;
|
||||
out->codeSegment = rep->codeSegment;
|
||||
out->flags = rep->flags;
|
||||
out->stackSegment = rep->stackSegment;
|
||||
out->pfPresent = rep->pfPresent;
|
||||
out->pfWrite = rep->pfWrite;
|
||||
out->pfUser = rep->pfUser;
|
||||
out->pfReservedWrite = rep->pfReservedWrite;
|
||||
out->pfInstructionFetch = rep->pfInstructionFetch;
|
||||
out->pfProtectionKey = rep->pfProtectionKey;
|
||||
out->pfShadowStack = rep->pfShadowStack;
|
||||
out->pfSGX = rep->pfSGX;
|
||||
out->timestampTick = rep->timestampTick;
|
||||
rep->valid = false;
|
||||
CrashReport::g_reportCount--;
|
||||
|
||||
return CrashReport::g_reportCount + 1;
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user