[Lldb-commits] [PATCH] Make CommandObjectProcess check process state before calling WaitForProcessToStop

jingham at apple.com jingham at apple.com
Wed Oct 9 09:45:03 PDT 2013


Yes, that looks fine.

Jim

On Oct 9, 2013, at 8:25 AM, Malea, Daniel <daniel.malea at intel.com> wrote:

> Hi Jim, how does this look?
> 
> I noticed the need to add a flag to WaitForProcessToStop that makes it not
> wait for an event in certain scenarios (when called from
> CommandObjectProcessLaunch). The same function when used from other places
> needs to wait for an event based on my testing..
> 
> 
> This is the last thing that needs to be committed before I can push the
> initial version of the terminal ui we've been hacking on here :)
> 
> 
> Cheers,
> Dan
> 
> On 2013-10-04 10:15 AM, "Malea, Daniel" <daniel.malea at intel.com> wrote:
> 
>> Yes, originally I had the state-checking logic in WaitForProcessToStop()
>> and noticed some regressions, but I didn't investigate them too much...I
>> will take another look.
>> 
>> Thanks,
>> Dan
>> 
>> -----Original Message-----
>> From: jingham at apple.com [mailto:jingham at apple.com]
>> Sent: Thursday, October 3, 2013 7:09 PM
>> To: Malea, Daniel
>> Cc: lldb-commits at cs.uiuc.edu
>> Subject: Re: [Lldb-commits] [PATCH] Make CommandObjectProcess check
>> process state before calling WaitForProcessToStop
>> 
>> Shouldn't this be done in WaitForProcessToStop?
>> 
>> Jim
>> 
>> On Oct 3, 2013, at 3:34 PM, Malea, Daniel <daniel.malea at intel.com> wrote:
>> 
>>> Hi all,
>>> 
>>> I noticed a race condition where a process is launched and hits a
>>> breakpoint while CommandObjectProcessLaunch is still in DoExecute. The
>>> effect I'm seeing is that if Process::WaitForProcessToStop() is called
>>> on a stopped process, LLDB hangs.
>>> 
>>> This patch fixes the issue by checking the process state before calling
>>> WaitForProcessToStop from CommandObjectProcessLaunch. I think there
>>> might still be a race condition in between getting the state and
>>> checking if StateIsStoppedState, but I'm not sure what process mutex to
>>> acquire in the command object while checking the state, or if that
>>> approach is any better..
>>> 
>>> Comments welcome!
>>> 
>>> Thanks,
>>> Dan
>>> 
>>> <command_object_process_check_state.patch>_______________________________
>>> ________________
>>> lldb-commits mailing list
>>> lldb-commits at cs.uiuc.edu
>>> http://lists.cs.uiuc.edu/mailman/listinfo/lldb-commits
>> 
>> 
>> _______________________________________________
>> lldb-commits mailing list
>> lldb-commits at cs.uiuc.edu
>> http://lists.cs.uiuc.edu/mailman/listinfo/lldb-commits
> 
> <wait_for_process_to_stop_nohang.patch>




More information about the lldb-commits mailing list