[Lldb-commits] [PATCH] 5 minute timeout for tests

Chaoren Lin chaorenl at google.com
Mon Dec 1 16:05:04 PST 2014


>
> "timeout 5m %s %s/dotest.py %s -p %s %s" will kill python after 5
> minutes, but will it also kill any inferiors, and descendants of those?
> And what if you have A > B > C, and B dies, then you kill A's tree?


As far as I can tell with my experimentation, timeout actually handles all
of those cases perfectly.

launching the process in a process group ("job" on windows)


Could we do that portably?

If it's not important then it seems like just running the process in a
> separate thread with a timeout would be sufficient.


I think it's important. Since otherwise you'll finish the test but still
end up with a bunch of processes taking up resources in the background.

On Mon, Dec 1, 2014 at 3:50 PM, Zachary Turner <zturner at google.com> wrote:

> I looked at this some more, and I'm not sure if there's really a good
> solution.  I looked at the source code for psutil, and it also doesn't work
> correctly in case a process in the middle of the chain dies.  I don't think
> TASKKILL /T does either.  Does the original patch work with this case?  "timeout
> 5m %s %s/dotest.py %s -p %s %s" will kill python after 5 minutes, but will
> it also kill any inferiors, and descendants of those?  And what if you have
> A > B > C, and B dies, then you kill A's tree?
>
> If it's actually important to kill the tree then I think the only way to
> really do it correctly is with by launching the process in a process group
> ("job" on windows).  If it's not important then it seems like just running
> the process in a separate thread with a timeout would be sufficient.
>
> On Mon Dec 01 2014 at 3:27:45 PM Zachary Turner <zturner at google.com>
> wrote:
>
>> On Mon Dec 01 2014 at 3:19:09 PM Vince Harron <vharron at google.com> wrote:
>>
>>> Currently when the tests lock up on the build server, the build script
>>> kills the tests and gets *no* test results.  That means that if a bug goes
>>> in that causes a test to hang, we don't get results for *any* tests.
>>>
>>> Killing the individual test causes it to show up as a FAIL (Chaoren
>>> might change this to show result as "TIMEOUT")
>>>
>>
>> I see, this wasn't clear before.  I understood that the bots would
>> already kill individual tests that hanged, and not fail the entire test
>> suite.
>>
>>
>>
>>>
>>> It's not really about what tests are hanging today, it's that some day a
>>> test will hang.  When that happens, do we want to lose all test results as
>>> a result?  Look at the Linux buildbot history.  Many runs have no test
>>> results at all.  Which test caused the lockup?  I have no idea.
>>>
>>> > Both of those options are really undesirable in my opinion.
>>>
>>> We can make the test timeout be an OSX/Linux thing only for now...
>>>
>> How bad would it be to just use psutil?  We could integrate it with the
>> build so that it builds psutil when you build lldb, and deploys it to the
>> same place that lldb's python module goes so that it's automatically in the
>> PYTHONPATH.
>>
>> Eventually we're going to need this on other platforms too, and it
>> benefits everyone if we can share code instead of implementing things
>> differently on each platform.
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/lldb-commits/attachments/20141201/704176b0/attachment.html>


More information about the lldb-commits mailing list