[lldb-dev] Process spawning and shutdown

Todd Fiala tfiala at google.com
Tue Sep 16 13:12:03 PDT 2014


> For now, the abstraction I'm creating deals only with local processes.

For MacOSX, the local process uses debugserver for debugging (i.e. it is
always remote w/r/t process startup --- lldb will launch and debugserver
will attach).

Linux is moving this way as well once we (1) get llgs passing the local
test suite with llgs in place of ProcessLinux/ProcessMonitor, and (2) get
llgs supporting the existing set of ProcessLinux/ProcessMonitor cpu
architectures.  It will be on a PlatformLinux switch that defaults to
current TOT behavior until then.  (See http://github.com/tfiala/lldb in the
dev-llgs-local-launch branch for current state).

Not sure that affects anything but wanted to be clear on it.

On Tue, Sep 16, 2014 at 12:26 PM, Zachary Turner <zturner at google.com> wrote:

> Yea, I saw that as well.  For now, the abstraction I'm creating deals only
> with local processes.  However, it has an interface that would in theory
> allow a RemoteProcess to derive from it, so that local and remote processes
> could be managed transparently.
>
> On Tue, Sep 16, 2014 at 12:07 PM, Todd Fiala <tfiala at google.com> wrote:
>
>> Don't forget we also have launching via Platform classes, which can end
>> up kicking off a gdb-remote request to a lldb-platform or gdb-remote stub
>> (llgs/debugserver).
>>
>> Also, ProcessGDBRemote is capable of kicking those off if it's using
>> gdb-remote locally.
>>
>> So, if nothing else, there's the concept of a "launch via another
>> mechanism."
>>
>> On Tue, Sep 16, 2014 at 11:55 AM, Zachary Turner <zturner at google.com>
>> wrote:
>>
>>> The last major piece of the Host layer I'd like to address is process
>>> launching and cleanup.  From looking over the code it seems we have the
>>> following different ways to launch a process:
>>>
>>> MacOSX:
>>>     * Applescript
>>>     * XPC
>>>     * posix_spawn
>>>
>>> Other posix variants:
>>>     * posix_spawn
>>>
>>> Windows:
>>>     * Native windows launcher
>>>
>>>
>>> Among these, there are a couple of different ways to reap processes on
>>> exit and/or "join" on them.  These are:
>>>
>>> MacOSX:
>>>     * Applescript    [ No process reaping or monitoring occurs. ]
>>>     * XPC               [ Uses MacOSX-specific dispatch library for
>>> monitoring ]
>>>     * posix_spawn [ Uses MacOSX-specific dispatch library for
>>> monitoring ]
>>>
>>> Other posix variants:
>>>     * posix_spawn   [ Launches a background thread to monitor for
>>> process exit, join on the thread to join on the process ]
>>>
>>> Windows:
>>>     * Native windows launcher  [ WaitForSingleObject ]
>>>
>>> A few questions:
>>>
>>> 1) Is Join() on a process a useful operation that people would be
>>> interested in seeing implemented for all platforms?
>>>
>>> 2) On Linux at least, if you don't waitpid() on a process you'll end up
>>> with zombies.  It seems this is true on MacOSX as well, because I see
>>> waitpid() in StartMonitoringChildProcess.  Is this not true for the
>>> Applescript launcher?  Why doesn't the Applescript launching code path call
>>> StartMonitoringChildProcess() anywhere?
>>>
>>> 3) Speaking of the Applescript launcher, what is it and what is it used
>>> for?
>>>
>>>
>>> I'll probably have more questions as I wrap my head around this a little
>>> more.  Thanks
>>>
>>> _______________________________________________
>>> lldb-dev mailing list
>>> lldb-dev at cs.uiuc.edu
>>> http://lists.cs.uiuc.edu/mailman/listinfo/lldb-dev
>>>
>>>
>>
>>
>> --
>> Todd Fiala | Software Engineer | tfiala at google.com | 650-943-3180
>>
>
>


-- 
Todd Fiala | Software Engineer | tfiala at google.com | 650-943-3180
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/lldb-dev/attachments/20140916/00c87e9b/attachment.html>


More information about the lldb-dev mailing list