diff --git a/Libraries/LibDebug/DebugSession.cpp b/Libraries/LibDebug/DebugSession.cpp index f6e82e140ca..194ea09a9c5 100644 --- a/Libraries/LibDebug/DebugSession.cpp +++ b/Libraries/LibDebug/DebugSession.cpp @@ -64,6 +64,11 @@ OwnPtr DebugSession::exec_and_attach(const String& command) { int pid = fork(); + if (pid < 0) { + perror("fork"); + exit(1); + } + if (!pid) { if (ptrace(PT_TRACE_ME, 0, 0, 0) < 0) { perror("PT_TRACE_ME"); @@ -93,16 +98,6 @@ OwnPtr DebugSession::exec_and_attach(const String& command) return nullptr; } - if (waitpid(pid, nullptr, WSTOPPED) != pid) { - perror("waitpid"); - return nullptr; - } - - if (ptrace(PT_CONTINUE, pid, 0, 0) < 0) { - perror("continue"); - return nullptr; - } - // We want to continue until the exit from the 'execve' sycsall. // This ensures that when we start debugging the process // it executes the target image, and not the forked image of the tracing process.