From 359365a06ae6fe9948ca2bb089688ae203690007 Mon Sep 17 00:00:00 2001 From: sin-ack Date: Wed, 6 Apr 2022 11:00:36 +0000 Subject: [PATCH] InspectorServer: Defer removal of InspectableProcess from table This prevents a crash when the inspected process closes the socket (i.e. when the app is exited). This crash was caused by the InspectableProcess removing itself from the global process table within a callback Function that is stored as part of the InspectableProcess. --- Userland/Services/InspectorServer/InspectableProcess.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/Userland/Services/InspectorServer/InspectableProcess.cpp b/Userland/Services/InspectorServer/InspectableProcess.cpp index cf896b0644..1b085db255 100644 --- a/Userland/Services/InspectorServer/InspectableProcess.cpp +++ b/Userland/Services/InspectorServer/InspectableProcess.cpp @@ -6,6 +6,7 @@ #include "InspectableProcess.h" #include +#include namespace InspectorServer { @@ -27,7 +28,7 @@ InspectableProcess::InspectableProcess(pid_t pid, NonnullOwnPtrread({ &c, 1 }); if (m_socket->is_eof()) { - g_processes.remove(m_pid); + Core::deferred_invoke([pid = this->m_pid] { g_processes.remove(pid); }); return; } };