aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorGravatar mtklein <mtklein@chromium.org>2016-09-01 07:06:54 -0700
committerGravatar Commit bot <commit-bot@chromium.org>2016-09-01 07:06:54 -0700
commit0590fa549d09bd1b6f26c0d5e470f35efe430d65 (patch)
tree4e99cc39d774a7365b2771c7a620f2c4cbc012e5
parentf04f99ef0d4a17d46dc5179872cfe126c1b57f6c (diff)
Build LSAN suppressions into the test binaries.
This way you don't need to set LSAN_SUPPRESSIONS in your environment... sort of foolproof this way. I _think_ the strdup() business from skia:2916 is actually rooted in libfontconfig, so one suppression should cover both old ones. I'll leave the file empty until I clean up mention of it in bot recipes. BUG=skia:2916 GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2295153003 CQ_INCLUDE_TRYBOTS=master.client.skia:Test-Ubuntu-Clang-GCE-CPU-AVX2-x86_64-Debug-ASAN-Trybot Review-Url: https://codereview.chromium.org/2295153003
-rw-r--r--BUILD.gn1
-rw-r--r--gyp/bench.gyp1
-rw-r--r--gyp/dm.gypi3
-rw-r--r--tools/LsanSuppressions.cpp28
-rw-r--r--tools/lsan.supp11
5 files changed, 32 insertions, 12 deletions
diff --git a/BUILD.gn b/BUILD.gn
index c86315ddd5..6cb5516908 100644
--- a/BUILD.gn
+++ b/BUILD.gn
@@ -653,6 +653,7 @@ if (skia_enable_tools) {
"src/images/SkForceLinking.cpp",
"src/utils/SkMultiPictureDocumentReader.cpp", # TODO(halcanary): move to tools?
"tools/CrashHandler.cpp",
+ "tools/LsanSuppressions.cpp",
"tools/ProcStats.cpp",
"tools/Resources.cpp",
"tools/ThermalManager.cpp",
diff --git a/gyp/bench.gyp b/gyp/bench.gyp
index 551af143bf..3d5c329ef5 100644
--- a/gyp/bench.gyp
+++ b/gyp/bench.gyp
@@ -14,6 +14,7 @@
'type': 'executable',
'sources': [
'../gm/gm.cpp',
+ '../tools/LsanSuppressions.cpp',
],
'includes': [
'bench.gypi',
diff --git a/gyp/dm.gypi b/gyp/dm.gypi
index fab2f917ff..bc19ee4ddb 100644
--- a/gyp/dm.gypi
+++ b/gyp/dm.gypi
@@ -46,12 +46,13 @@
'../gm/gm.cpp',
'../src/utils/SkMultiPictureDocumentReader.cpp',
+ '../tools/LsanSuppressions.cpp',
'../tools/debugger/SkDebugCanvas.cpp',
'../tools/debugger/SkDrawCommand.cpp',
'../tools/debugger/SkJsonWriteBuffer.cpp',
'../tools/debugger/SkObjectParser.cpp',
- '../tools/debugger/SkOverdrawMode.h',
'../tools/debugger/SkOverdrawMode.cpp',
+ '../tools/debugger/SkOverdrawMode.h',
],
'conditions': [
[ 'skia_gpu == 1', {
diff --git a/tools/LsanSuppressions.cpp b/tools/LsanSuppressions.cpp
new file mode 100644
index 0000000000..c81184f3b0
--- /dev/null
+++ b/tools/LsanSuppressions.cpp
@@ -0,0 +1,28 @@
+/*
+ * Copyright 2016 Google Inc.
+ *
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#include "SkTypes.h"
+
+#if !defined(__has_feature)
+ #define __has_feature(x) 0
+#endif
+
+#if __has_feature(address_sanitizer)
+
+extern "C" {
+
+ const char* __lsan_default_suppressions();
+ const char* __lsan_default_suppressions() {
+ return "leak:libfontconfig\n" // FontConfig looks like it leaks, but it doesn't.
+ "leak:libGL.so\n" // For NVidia driver.
+ "leak:__strdup\n" // An eternal mystery, skia:2916.
+ ;
+ }
+
+}
+
+#endif
diff --git a/tools/lsan.supp b/tools/lsan.supp
index 8d46f5bd0e..b993fa508f 100644
--- a/tools/lsan.supp
+++ b/tools/lsan.supp
@@ -1,12 +1 @@
# Supressions for LSAN.
-# tools/xsan_build address -C out/Debug
-# ASAN_OPTIONS=detect_leaks=1 LSAN_OPTIONS=suppressions=tools/lsan.supp out/Debug/$FOO
-
-# Fontconfig
-leak:libfontconfig
-
-# Nvidia driver
-leak:libGL.so
-
-# Not clear what this is. skia:2916
-leak:__strdup