aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAndrew Yourtchenko <ayourtch@gmail.com>2018-03-28 15:32:10 +0200
committerChris Luke <chris_luke@comcast.com>2018-03-31 12:49:40 +0000
commit57612ebcf3b5414c6a2f6153a3338803ac94d759 (patch)
tree6384440de64f99f2ff00a2d3de62fbc7e7fbf98a
parent074f698be5c2e6afc9df776b56a366bc3f404d95 (diff)
make test: print a warning in case a core_pattern contains a filter program
The default config on Ubuntu 16.04.4 desktop results in truncated cores when running make test which coredumps. Uninstalling the filter program (apport) makes the corefiles normal size. Print a warning about that fact, so the others potentially affected didn't have to wonder. Change-Id: Iba4b0a2765a25100d6e24fd7f4de0e0339efd835 Signed-off-by: Andrew Yourtchenko <ayourtch@gmail.com>
-rw-r--r--test/hook.py2
-rw-r--r--test/run_tests.py2
-rw-r--r--test/util.py15
3 files changed, 19 insertions, 0 deletions
diff --git a/test/hook.py b/test/hook.py
index f4bafa16f19..0e94dcde135 100644
--- a/test/hook.py
+++ b/test/hook.py
@@ -5,6 +5,7 @@ import traceback
from log import RED, single_line_delim, double_line_delim
from debug import spawn_gdb
from subprocess import check_output, CalledProcessError
+from util import check_core_path
class Hook(object):
@@ -70,6 +71,7 @@ class PollHook(Hook):
else:
self.logger.error("Core file present, debug with: gdb %s %s" %
(self.testcase.vpp_bin, core_path))
+ check_core_path(self.logger, core_path)
self.logger.error("Running `file %s':" % core_path)
try:
info = check_output(["file", core_path])
diff --git a/test/run_tests.py b/test/run_tests.py
index 158494acd9e..3476ef04668 100644
--- a/test/run_tests.py
+++ b/test/run_tests.py
@@ -13,6 +13,7 @@ from debug import spawn_gdb
from log import global_logger
from discover_tests import discover_tests
from subprocess import check_output, CalledProcessError
+from util import check_core_path
# timeout which controls how long the child has to finish after seeing
# a core dump in test temporary directory. If this is exceeded, parent assumes
@@ -136,6 +137,7 @@ def run_forked(suite):
if os.path.isfile(core_path):
global_logger.error("Core-file exists in test temporary "
"directory: %s!" % core_path)
+ check_core_path(global_logger, core_path)
global_logger.debug("Running `file %s':" % core_path)
try:
info = check_output(["file", core_path])
diff --git a/test/util.py b/test/util.py
index 7d973bde237..65e25f77f0c 100644
--- a/test/util.py
+++ b/test/util.py
@@ -70,6 +70,21 @@ def ip6_normalize(ip6):
socket.inet_pton(socket.AF_INET6, ip6))
+def check_core_path(logger, core_path):
+ with open("/proc/sys/kernel/core_pattern", "r") as f:
+ corefmt = f.read()
+ if corefmt.startswith("|"):
+ logger.error(
+ "WARNING: redirecting the core dump through a"
+ " filter may result in truncated dumps.")
+ logger.error(
+ " You may want to check the filter settings"
+ " or uninstall it and edit the"
+ " /proc/sys/kernel/core_pattern accordingly.")
+ logger.error(
+ " current core pattern is: %s" % corefmt)
+
+
class NumericConstant(object):
__metaclass__ = ABCMeta