[libcxx-commits] [PATCH] D110936: [libcxx][pretty printers] Report not being able to trace test program
David Spickett via Phabricator via libcxx-commits
libcxx-commits at lists.llvm.org
Fri Oct 1 07:37:12 PDT 2021
DavidSpickett created this revision.
DavidSpickett requested review of this revision.
Herald added a project: libc++.
Herald added a subscriber: libcxx-commits.
Herald added a reviewer: libc++.
If you don't have ptrace permissions this test will fail to run
silently, this adds a check for that and anything else that
might do similar things.
The output will now be:
FAILED test program did not run correctly, check gdb warnings
/usr/bin/gdb: warning: Couldn't determine a path for the index cache
directory.
No symbol table is loaded. Use the "file" command.
warning: Error disabling address space randomization: Operation not
permitted
warning: Could not trace the inferior process.
warning: ptrace: Operation not permitted
error: command failed with exit status: 255
We already have a feature to check for a compatible python enabled
gdb, so I think it's reasonable to check for this at test runtime.
Note that this is different to the catch all at the end of the test
script. That would be a case where you can trace but something else
made it stop mid way that wasn't our test breakpoints.
Repository:
rG LLVM Github Monorepo
https://reviews.llvm.org/D110936
Files:
libcxx/test/libcxx/gdb/gdb_pretty_printer_test.py
Index: libcxx/test/libcxx/gdb/gdb_pretty_printer_test.py
===================================================================
--- libcxx/test/libcxx/gdb/gdb_pretty_printer_test.py
+++ libcxx/test/libcxx/gdb/gdb_pretty_printer_test.py
@@ -20,6 +20,14 @@
import sys
test_failures = 0
+# Sometimes the inital run command can fail to trace the process.
+# (e.g. you don't have ptrace permissions)
+# In these cases gdb still sends us an exited event so we cannot
+# see what "run" printed to check for a warning message, since
+# we get taken to our exit handler before we can look.
+# Instead check that at least one test has been run by the time
+# we exit.
+has_run_tests = False
class CheckResult(gdb.Command):
@@ -30,6 +38,8 @@
def invoke(self, arg, from_tty):
try:
+ has_run_tests = True
+
# Stack frame is:
# 0. StopForDebugger
# 1. ComparePrettyPrintToChars or ComparePrettyPrintToRegex
@@ -89,7 +99,12 @@
def exit_handler(event=None):
global test_failures
- if test_failures:
+ global has_run_tests
+
+ if not has_run_tests:
+ print("FAILED test program did not run correctly, check gdb warnings")
+ test_failures = -1
+ elif test_failures:
print("FAILED %d cases" % test_failures)
exit(test_failures)
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D110936.376528.patch
Type: text/x-patch
Size: 1331 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/libcxx-commits/attachments/20211001/47a2aa40/attachment.bin>
More information about the libcxx-commits
mailing list