Browse Source

LibDebug: Fix crash when debugging short lived programs

Sahan Fernando 4 years ago
parent
commit
66f9a2d9ec
1 changed files with 5 additions and 10 deletions
  1. 5 10
      Libraries/LibDebug/DebugSession.cpp

+ 5 - 10
Libraries/LibDebug/DebugSession.cpp

@@ -64,6 +64,11 @@ OwnPtr<DebugSession> 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> 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.