Debug what destructors are called

This commit is contained in:
Alex 2023-02-14 03:53:09 +02:00
parent 47a10df568
commit 5257ff662f
Signed by untrusted user who does not match committer: enderice2
GPG Key ID: EACC3AD603BAB4DD
11 changed files with 22 additions and 14 deletions

View File

@ -663,14 +663,14 @@ namespace CrashHandler
if (Frame->cs != GDT_USER_CODE && Frame->cs != GDT_USER_DATA) if (Frame->cs != GDT_USER_CODE && Frame->cs != GDT_USER_DATA)
{ {
debug("Exception in kernel mode (ip: %#lx, cr2: %#lx)", Frame->rip, PageFaultAddress); debug("Exception in kernel mode (ip: %#lx (%s), cr2: %#lx)", Frame->rip, KernelSymbolTable ? KernelSymbolTable->GetSymbolFromAddress(Frame->rip) : "No symbol", PageFaultAddress);
if (TaskManager) if (TaskManager)
TaskManager->Panic(); TaskManager->Panic();
Display->CreateBuffer(0, 0, SBIdx); Display->CreateBuffer(0, 0, SBIdx);
} }
else else
{ {
debug("Exception in user mode (ip: %#lx, cr2: %#lx)", Frame->rip, PageFaultAddress); debug("Exception in user mode (ip: %#lx (%s), cr2: %#lx)", Frame->rip, KernelSymbolTable ? KernelSymbolTable->GetSymbolFromAddress(Frame->rip) : "No symbol", PageFaultAddress);
CPUData *data = GetCurrentCPU(); CPUData *data = GetCurrentCPU();
if (!data) if (!data)
{ {
@ -715,7 +715,7 @@ namespace CrashHandler
asmv("mov %%ds, %0" asmv("mov %%ds, %0"
: "=r"(ds)); : "=r"(ds));
EHPrint("\eFF0000FS=%#llx GS=%#llx SS=%#llx CS=%#llx DS=%#llx\n", EHPrint("\eFF2525FS=%#llx GS=%#llx SS=%#llx CS=%#llx DS=%#llx\n",
CPU::x64::rdmsr(CPU::x64::MSR_FS_BASE), CPU::x64::rdmsr(CPU::x64::MSR_GS_BASE), CPU::x64::rdmsr(CPU::x64::MSR_FS_BASE), CPU::x64::rdmsr(CPU::x64::MSR_GS_BASE),
Frame->ss, Frame->cs, ds); Frame->ss, Frame->cs, ds);
EHPrint("R8=%#llx R9=%#llx R10=%#llx R11=%#llx\n", Frame->r8, Frame->r9, Frame->r10, Frame->r11); EHPrint("R8=%#llx R9=%#llx R10=%#llx R11=%#llx\n", Frame->r8, Frame->r9, Frame->r10, Frame->r11);

View File

@ -153,5 +153,6 @@ namespace Disk
Manager::~Manager() Manager::~Manager()
{ {
debug("Destructor called");
} }
} }

View File

@ -202,6 +202,8 @@ namespace Driver
Driver::~Driver() Driver::~Driver()
{ {
debug("Destructor called");
this->UnloadAllDrivers();
} }
#if defined(__amd64__) #if defined(__amd64__)

View File

@ -71,6 +71,7 @@ namespace Power
Power::~Power() Power::~Power()
{ {
debug("Destructor called");
} }
} }

View File

@ -79,5 +79,6 @@ namespace Time
time::~time() time::~time()
{ {
debug("Destructor called");
} }
} }

View File

@ -311,7 +311,11 @@ namespace Video
Display::~Display() Display::~Display()
{ {
for (int i = 0; i < 16; i++) debug("Destructor called");
DeleteBuffer(i); this->ClearBuffer(0);
this->SetBuffer(0);
for (size_t i = 0; i < sizeof(this->Buffers) / sizeof(this->Buffers[0]); i++)
this->DeleteBuffer(i);
} }
} }

View File

@ -621,6 +621,6 @@ namespace VirtualFileSystem
Virtual::~Virtual() Virtual::~Virtual()
{ {
trace("Destroying virtual file system..."); debug("Destructor called");
} }
} }

View File

@ -217,7 +217,7 @@ Exit:
if (ExitCode != 0) if (ExitCode != 0)
{ {
KPrint("Dropping to recovery screen...", ExitCode); KPrint("Dropping to recovery screen...", ExitCode);
TaskManager->Sleep(5000); TaskManager->Sleep(2500);
RecoveryScreen = new Recovery::KernelRecovery; RecoveryScreen = new Recovery::KernelRecovery;
} }
else else

View File

@ -356,17 +356,13 @@ EXTERNC __no_stack_protector __no_instrument_function void BeforeShutdown()
delete NIManager; delete NIManager;
delete DiskManager; delete DiskManager;
if (DriverManager)
DriverManager->UnloadAllDrivers();
delete DriverManager; delete DriverManager;
TaskManager->SignalShutdown(); TaskManager->SignalShutdown();
delete TaskManager; delete TaskManager;
if (RecoveryScreen)
delete RecoveryScreen; delete RecoveryScreen;
delete vfs; delete vfs;
delete TimeManager; delete TimeManager;
delete KernelSymbolTable;
delete Display; delete Display;
// PowerManager should not be called // PowerManager should not be called

View File

@ -34,6 +34,8 @@ namespace NetworkInterfaceManager
NetworkInterface::~NetworkInterface() NetworkInterface::~NetworkInterface()
{ {
debug("Destructor called");
// Stop the network stack // Stop the network stack
this->StopNetworkStack(); this->StopNetworkStack();

View File

@ -33,7 +33,7 @@ namespace Recovery
gui = new GraphicalUserInterface::GUI; gui = new GraphicalUserInterface::GUI;
// TaskManager->CreateThread(proc, (IP)RecoveryThreadWrapper, nullptr, nullptr, auxv); // TaskManager->CreateThread(TaskManager->GetCurrentProcess(), (IP)RecoveryThreadWrapper);
TCB *guiThread = TaskManager->CreateThread(TaskManager->GetCurrentProcess(), (IP)GUIWrapper); TCB *guiThread = TaskManager->CreateThread(TaskManager->GetCurrentProcess(), (IP)GUIWrapper);
guiThread->Rename("GUI Thread"); guiThread->Rename("GUI Thread");
guiThread->SetPriority(Tasking::TaskPriority::Critical); guiThread->SetPriority(Tasking::TaskPriority::Critical);
@ -57,6 +57,7 @@ namespace Recovery
KernelRecovery::~KernelRecovery() KernelRecovery::~KernelRecovery()
{ {
debug("Destructor called");
delete gui; delete gui;
} }
} }