[Lldb-commits] [PATCH] D13124: test runner: switch to pure-Python timeout mechanism

Todd Fiala via lldb-commits lldb-commits at lists.llvm.org
Sun Sep 27 22:28:50 PDT 2015


tfiala updated this revision to Diff 35829.
tfiala added a comment.

Tests added.  Ready for review.

The change now has two levels of terminate:

- 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.

- 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.

@zturner, you will want to run the tests in lldb/test/test_runner/test.  Do that with:
cd lldb/test/test_runner/test
python process_control_tests.py

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).

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.

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.


http://reviews.llvm.org/D13124

Files:
  test/dosep.py
  test/test_runner/README.txt
  test/test_runner/lib/lldb_utils.py
  test/test_runner/lib/process_control.py
  test/test_runner/test/inferior.py
  test/test_runner/test/process_control_tests.py

-------------- next part --------------
A non-text attachment was scrubbed...
Name: D13124.35829.patch
Type: text/x-patch
Size: 43675 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/lldb-commits/attachments/20150928/56a02e43/attachment-0001.bin>


More information about the lldb-commits mailing list