diff --git a/kernel/kernel/Scheduler.cpp b/kernel/kernel/Scheduler.cpp index e3a546d8..1d439a80 100644 --- a/kernel/kernel/Scheduler.cpp +++ b/kernel/kernel/Scheduler.cpp @@ -271,16 +271,20 @@ namespace Kernel DISABLE_INTERRUPTS(); load_temp_stack(); + PageTable::kernel().load(); - Process* process = &m_current_thread->thread->process(); - + ASSERT(m_current_thread); + Thread* thread = m_current_thread->thread; + Process* process = &thread->process(); remove_threads(m_blocking_threads, it->thread->process().pid() == process->pid()); remove_threads(m_sleeping_threads, it->thread->process().pid() == process->pid()); remove_threads(m_active_threads, it != m_current_thread && it->thread->process().pid() == process->pid()); - delete m_current_thread->thread; - delete process; remove_and_advance_current_thread(); + + delete thread; + delete process; + execute_current_thread(); ASSERT_NOT_REACHED();