mirror of
https://github.com/darlinghq/darling-libcxx.git
synced 2024-11-23 11:59:52 +00:00
[AIX][lit] Don't depend on psutil on AIX
Summary: On AIX psutil can run into problems with permissions to read the process tree, which causes problems for python timeout tests which need to kill off a test and it's children. This patch adds a workaround by invoking shell via subprocess and using a platform specific option to ps to list all the descendant processes so we can kill them. We add some checks so lit can tell whether timeout tests are supported with out exposing whether we are utilizing the psutil implementation or the alternative. Reviewers: hubert.reinterpretcast, andusy, davide, delcypher Reviewed By: delcypher Subscribers: davide, delcypher, christof, lldb-commits, libcxx-commits, llvm-commits Tags: #lldb, #libc, #llvm Differential Revision: https://reviews.llvm.org/D64251 git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@366912 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
6bdf0af168
commit
f8c785b6cb
@ -253,24 +253,27 @@ def killProcessAndChildren(pid):
|
||||
TODO: Reimplement this without using psutil so we can
|
||||
remove our dependency on it.
|
||||
"""
|
||||
import psutil
|
||||
try:
|
||||
psutilProc = psutil.Process(pid)
|
||||
# Handle the different psutil API versions
|
||||
if platform.system() == 'AIX':
|
||||
subprocess.call('kill -kill $(ps -o pid= -L{})'.format(pid), shell=True)
|
||||
else:
|
||||
import psutil
|
||||
try:
|
||||
# psutil >= 2.x
|
||||
children_iterator = psutilProc.children(recursive=True)
|
||||
except AttributeError:
|
||||
# psutil 1.x
|
||||
children_iterator = psutilProc.get_children(recursive=True)
|
||||
for child in children_iterator:
|
||||
psutilProc = psutil.Process(pid)
|
||||
# Handle the different psutil API versions
|
||||
try:
|
||||
child.kill()
|
||||
except psutil.NoSuchProcess:
|
||||
pass
|
||||
psutilProc.kill()
|
||||
except psutil.NoSuchProcess:
|
||||
pass
|
||||
# psutil >= 2.x
|
||||
children_iterator = psutilProc.children(recursive=True)
|
||||
except AttributeError:
|
||||
# psutil 1.x
|
||||
children_iterator = psutilProc.get_children(recursive=True)
|
||||
for child in children_iterator:
|
||||
try:
|
||||
child.kill()
|
||||
except psutil.NoSuchProcess:
|
||||
pass
|
||||
psutilProc.kill()
|
||||
except psutil.NoSuchProcess:
|
||||
pass
|
||||
|
||||
|
||||
def executeCommandVerbose(cmd, *args, **kwargs):
|
||||
|
Loading…
Reference in New Issue
Block a user