[PATCH] [clang-tidy] ensure run-clang-tidy reports children killed by signals
Ian Campbell via cfe-commits
cfe-commits at lists.llvm.org
Thu Feb 11 02:22:53 PST 2021
If a clang-tidy child process exits with a signal then run-clang-tidy will exit
with an error but there is no hint why in the output, since the clang-tidy
doesn't log anything and may not even have had the opportunity to do so
depending on the signal used.
`subprocess.CompletedProcess.returncode` is the negative signal number in this
case.
I hit this in a CI system where the parallelism used exceeded the RAM assigned
to the container causing the OOM killer to SIGKILL clang-tidy processes.
Cc: Alexander Kornienko <alexfh at google.com>
---
Please Cc me, I'm not subscribed to cfe-commits
---
clang-tools-extra/clang-tidy/tool/run-clang-tidy.py | 3 +++
1 file changed, 3 insertions(+)
diff --git a/clang-tools-extra/clang-tidy/tool/run-clang-tidy.py b/clang-tools-extra/clang-tidy/tool/run-clang-tidy.py
index 313ecd2f9571..8b2a5bf60d13 100755
--- a/clang-tools-extra/clang-tidy/tool/run-clang-tidy.py
+++ b/clang-tools-extra/clang-tidy/tool/run-clang-tidy.py
@@ -170,6 +170,9 @@ def run_tidy(args, tmpdir, build_path, queue, lock, failed_files):
proc = subprocess.Popen(invocation, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
output, err = proc.communicate()
if proc.returncode != 0:
+ if proc.returncode < 0:
+ msg = "%s: terminated by signal %d\n" % (name, -proc.returncode)
+ err += msg.encode('utf-8')
failed_files.append(name)
with lock:
sys.stdout.write(' '.join(invocation) + '\n' + output.decode('utf-8'))
--
2.29.2
More information about the cfe-commits
mailing list