<div dir="ltr">Will test this out tomorrow</div><br><div class="gmail_quote"><div dir="ltr">On Sun, Sep 27, 2015 at 10:28 PM Todd Fiala <<a href="mailto:todd.fiala@gmail.com">todd.fiala@gmail.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">tfiala updated this revision to Diff 35829.<br>
tfiala added a comment.<br>
<br>
Tests added.  Ready for review.<br>
<br>
The change now has two levels of terminate:<br>
<br>
- soft terminate, which uses a signal or process control mechanism to tell the process to end.  It optionally can use a mechanism that triggers a core dump / crashlog / minidump if supported by the underlying platform.  RIght now, only Linux of the Posix-y platforms requests the core (via SIGQUIT).  I will plumb through an option for that later (as mentioned in prior comments in this review).  But I'm now at max time I can spend on this right now and this'll need to do.  There is also a timeout on how long the process driver will allow the soft timeout to take to wrap up.  This is relevant for core dumps that might have a huge amount of memory to dump to disk.  It defaults to 10 seconds, but can be overridden by an environment variable, LLDB_TEST_SOFT_TERMINATE_TIMEOUT.  That env var will be converted to a float from whatever text is in it.  It represents the number of seconds within which any soft terminate option must wrap up.  If a process is actively blocking/ignoring that termination signal, then this represents the total time that will be "wasted" waiting to figure this out.<br>
<br>
- hard terminate: after the soft terminate attempt is made, plus the soft terminate timeout, then if the process is still not eliminated, the hard terminate mechanism will be used.  On Posix-y systems, this is a SIGKILL.<br>
<br>
@zturner, you will want to run the tests in lldb/test/test_runner/test.  Do that with:<br>
cd lldb/test/test_runner/test<br>
python process_control_tests.py<br>
<br>
In some cases where docs were clear, I did the bit that seemed to make sense on the Windows side.  In others, I left it for you to fill in.  Feel free to skip some/any tests that don't make sense if, for example, you only end up wanting to support one level of killing on Windows.  (We can probably work in a "has soft terminate mechanism" query into the process_control.ProcessHelper class, which has per-platform derived classes, if we want to go that way).<br>
<br>
Also note I will start migrating test infrastructure bits into the lldb/test/test_runner/lib directory over time.  The two new files from this change are going in there.<br>
<br>
I'd like to get this in sooner than later as it resolves numerous hangs on OS X where we don't have a timeout guard.  I've tried it on Linux (4, 8 and 24 core machines) as well as OS X (8 core MBPs), and have run the process_control_tests on them without issue.<br>
<br>
<br>
<a href="http://reviews.llvm.org/D13124" rel="noreferrer" target="_blank">http://reviews.llvm.org/D13124</a><br>
<br>
Files:<br>
  test/dosep.py<br>
  test/test_runner/README.txt<br>
  test/test_runner/lib/lldb_utils.py<br>
  test/test_runner/lib/process_control.py<br>
  test/test_runner/test/inferior.py<br>
  test/test_runner/test/process_control_tests.py<br>
<br>
</blockquote></div>