[Lldb-commits] [lldb] r179738 - Fixed a few m_private_run_lock issues when attaching and also fixed the process to not try to restart the process if the process is exited, crashed or detached. Partial patch from Carlo Kok.

Carlo Kok ck at remobjects.com
Thu Apr 18 00:52:22 PDT 2013


Op 18-4-2013 02:42, Greg Clayton schreef:
> Author: gclayton
> Date: Wed Apr 17 19:42:25 2013
> New Revision: 179738
>
> URL: http://llvm.org/viewvc/llvm-project?rev=179738&view=rev
> Log:
> Fixed a few m_private_run_lock issues when attaching and also fixed the process to not try to restart the process if the process is exited, crashed or detached. Partial patch from Carlo Kok.
>
> Modified:
>      lldb/trunk/source/Target/Process.cpp
>
> Modified: lldb/trunk/source/Target/Process.cpp
> URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Target/Process.cpp?rev=179738&r1=179737&r2=179738&view=diff
> ==============================================================================
> --- lldb/trunk/source/Target/Process.cpp (original)
> +++ lldb/trunk/source/Target/Process.cpp Wed Apr 17 19:42:25 2013
> @@ -2955,6 +2955,7 @@ Process::Attach (ProcessAttachInfo &atta

Process::Attach doesn't get called for GDB remote, so this doesn't get 
called for that.

adding this in Process::ConnectRemote makes it work:
...
             if (state == eStateStopped || state == eStateCrashed)
             {
+                if (m_public_run_lock.WriteTryLock())
+                {
+                    m_private_run_lock.WriteLock();
                     // If we attached and actually have a process on 
the other end, then
                     // this ended up being the equivalent of an attach.
                     CompleteAttach ();

                     // This delays passing the stopped event to 
listeners till
                     // CompleteAttach gets a chance to complete...
                     HandlePrivateEvent (event_sp);
                 }
+            }
         }

         if (PrivateStateThreadIsValid ())
             ResumePrivateStateThread ();
         else
             StartPrivateStateThread ();
     }
     return error;
}




More information about the lldb-commits mailing list