[Lldb-commits] [lldb] r250768 - Make sure we restore the process events so they aren't hijacked when using the async attach when attaching to a process by name and with waitfor.

Greg Clayton via lldb-commits lldb-commits at lists.llvm.org
Mon Oct 19 17:14:20 PDT 2015


Author: gclayton
Date: Mon Oct 19 19:14:20 2015
New Revision: 250768

URL: http://llvm.org/viewvc/llvm-project?rev=250768&view=rev
Log:
Make sure we restore the process events so they aren't hijacked when using the async attach when attaching to a process by name and with waitfor.

<rdar://problem/22821480>


Modified:
    lldb/trunk/source/Target/Target.cpp

Modified: lldb/trunk/source/Target/Target.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Target/Target.cpp?rev=250768&r1=250767&r2=250768&view=diff
==============================================================================
--- lldb/trunk/source/Target/Target.cpp (original)
+++ lldb/trunk/source/Target/Target.cpp Mon Oct 19 19:14:20 2015
@@ -3162,19 +3162,26 @@ Target::Attach (ProcessAttachInfo &attac
         error = process_sp->Attach (attach_info);
     }
 
-    if (error.Success () && process_sp && async == false)
+    if (error.Success () && process_sp)
     {
-        state = process_sp->WaitForProcessToStop (nullptr, nullptr, false, attach_info.GetHijackListener ().get (), stream);
-        process_sp->RestoreProcessEvents ();
-
-        if (state != eStateStopped)
+        if (async)
+        {
+            process_sp->RestoreProcessEvents ();
+        }
+        else
         {
-            const char *exit_desc = process_sp->GetExitDescription ();
-            if (exit_desc)
-                error.SetErrorStringWithFormat ("%s", exit_desc);
-            else
-                error.SetErrorString ("process did not stop (no such process or permission problem?)");
-            process_sp->Destroy (false);
+            state = process_sp->WaitForProcessToStop (nullptr, nullptr, false, attach_info.GetHijackListener ().get (), stream);
+            process_sp->RestoreProcessEvents ();
+
+            if (state != eStateStopped)
+            {
+                const char *exit_desc = process_sp->GetExitDescription ();
+                if (exit_desc)
+                    error.SetErrorStringWithFormat ("%s", exit_desc);
+                else
+                    error.SetErrorString ("process did not stop (no such process or permission problem?)");
+                process_sp->Destroy (false);
+            }
         }
     }
     return error;




More information about the lldb-commits mailing list