diff --git a/Kernel/Process.cpp b/Kernel/Process.cpp index 7191cd06116..7f59b5bd83b 100644 --- a/Kernel/Process.cpp +++ b/Kernel/Process.cpp @@ -164,6 +164,11 @@ ErrorOr> Process::try_create_user_process(RefPtr& // NOTE: All user processes have a leaked ref on them. It's balanced by Thread::WaitBlockerSet::finalize(). process->ref(); + { + SpinlockLocker lock(g_scheduler_lock); + new_main_thread->set_state(Thread::State::Runnable); + } + return process; } diff --git a/Kernel/Syscalls/execve.cpp b/Kernel/Syscalls/execve.cpp index 6696e9b1497..14c04ee7986 100644 --- a/Kernel/Syscalls/execve.cpp +++ b/Kernel/Syscalls/execve.cpp @@ -627,10 +627,6 @@ ErrorOr Process::do_exec(NonnullRefPtr main_program_d PerformanceManager::add_process_exec_event(*this); } - { - SpinlockLocker lock(g_scheduler_lock); - new_main_thread->set_state(Thread::State::Runnable); - } u32 lock_count_to_restore; [[maybe_unused]] auto rc = big_lock().force_unlock_if_locked(lock_count_to_restore); VERIFY_INTERRUPTS_DISABLED();