Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(153)

Unified Diff: tools/run-tests.py

Issue 1411733008: [Swarming] Set up sanitizer environment in v8 test runner. (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Created 5 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: tools/run-tests.py
diff --git a/tools/run-tests.py b/tools/run-tests.py
index 5cfc6a3f9909a3699ecf4ba74fe37bd62e5ca3c3..7e3587989bb70e56454257c3487487fa6739ab22 100755
--- a/tools/run-tests.py
+++ b/tools/run-tests.py
@@ -198,6 +198,9 @@ def BuildOptions():
result.add_option("--asan",
help="Regard test expectations for ASAN",
default=False, action="store_true")
+ result.add_option("--cfi-vptr",
+ help="Run tests with UBSAN cfi_vptr option.",
+ default=False, action="store_true")
result.add_option("--buildbot",
help="Adapt to path structure used on buildbots",
default=False, action="store_true")
@@ -352,6 +355,41 @@ def BuildbotToV8Mode(config):
mode = config[:-4] if config.endswith('_x64') else config
return mode.lower()
+def SetupEnvironment(options):
+ """Setup additional environment variables."""
+ symbolizer = 'external_symbolizer_path=%s' % (
+ os.path.join(
+ BASE_DIR, 'third_party', 'llvm-build', 'Release+Asserts', 'bin',
+ 'llvm-symbolizer',
+ )
+ )
+
+ if options.asan:
+ os.environ['ASAN_OPTIONS'] = symbolizer
+
+ if options.cfi_vptr:
+ os.environ['UBSAN_OPTIONS'] = ":".join([
+ 'print_stacktrace=1',
+ 'print_summary=1',
+ 'symbolize=1',
+ symbolizer,
+ ])
+
+ if options.msan:
+ os.environ['MSAN_OPTIONS'] = symbolizer
+
+ if options.tsan:
+ suppressions_file = os.path.join(
+ BASE_DIR, 'tools', 'sanitizers', 'tsan_suppressions.txt')
+ os.environ['TSAN_OPTIONS'] = " ".join([
+ symbolizer,
+ 'suppressions=%s' % suppressions_file,
+ 'exit_code=0',
+ 'report_thread_leaks=0',
+ 'history_size=7',
+ 'report_destroy_locked=0',
+ ])
+
def ProcessOptions(options):
global ALL_VARIANTS
global EXHAUSTIVE_VARIANTS
@@ -416,11 +454,6 @@ def ProcessOptions(options):
if options.tsan:
VARIANTS = ["default"]
- suppressions_file = os.path.join(os.path.dirname(os.path.abspath(__file__)),
- 'sanitizers', 'tsan_suppressions.txt')
- tsan_options = '%s suppressions=%s' % (
- os.environ.get('TSAN_OPTIONS', ''), suppressions_file)
- os.environ['TSAN_OPTIONS'] = tsan_options
if options.j == 0:
options.j = multiprocessing.cpu_count()
@@ -530,6 +563,7 @@ def Main():
if not ProcessOptions(options):
parser.print_help()
return 1
+ SetupEnvironment(options)
exit_code = 0
if not options.no_presubmit:
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698