1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-05-20 12:05:07 +00:00

Kernel: Delete non-main threads immediately after finalizing them

Previously we would wait until the whole process died before actually
deleting its threads.
This commit is contained in:
Andreas Kling 2019-08-01 20:01:23 +02:00
parent 55d6efd485
commit 3ad6ae1842

View file

@ -157,15 +157,22 @@ const char* Thread::state_string() const
void Thread::finalize()
{
ASSERT(current == g_finalizer);
dbgprintf("Finalizing Thread %u in %s(%u)\n", tid(), m_process.name().characters(), pid());
set_state(Thread::State::Dead);
if (this == &m_process.main_thread())
if (this == &m_process.main_thread()) {
m_process.finalize();
return;
}
delete this;
}
void Thread::finalize_dying_threads()
{
ASSERT(current == g_finalizer);
Vector<Thread*, 32> dying_threads;
{
InterruptDisabler disabler;