diff --git a/src/core/hle/kernel/kernel.h b/src/core/hle/kernel/kernel.h
index f09fd99b2..2beaaa067 100644
--- a/src/core/hle/kernel/kernel.h
+++ b/src/core/hle/kernel/kernel.h
@@ -228,7 +228,13 @@ private:
     std::unique_ptr<ResourceLimitList> resource_limits;
     std::atomic<u32> next_object_id{0};
 
-    std::unique_ptr<ThreadManager> thread_manager;
+    // Note: keep the member order below in order to perform correct destruction.
+    // Thread manager is destructed before process list in order to Stop threads and clear thread
+    // info from their parent processes first. Timer manager is destructed after process list
+    // because timers are destructed along with process list and they need to clear info from the
+    // timer manager.
+    // TODO (wwylele): refactor the cleanup sequence to make this less complicated and sensitive.
+
     std::unique_ptr<TimerManager> timer_manager;
 
     // TODO(Subv): Start the process ids from 10 for now, as lower PIDs are
@@ -240,6 +246,8 @@ private:
 
     SharedPtr<Process> current_process;
 
+    std::unique_ptr<ThreadManager> thread_manager;
+
     std::unique_ptr<ConfigMem::Handler> config_mem_handler;
     std::unique_ptr<SharedPage::Handler> shared_page_handler;
 };