aboutsummaryrefslogtreecommitdiffhomepage
path: root/infra
diff options
context:
space:
mode:
authorGravatar Mike Klein <mtklein@chromium.org>2017-10-23 10:09:04 -0400
committerGravatar Skia Commit-Bot <skia-commit-bot@chromium.org>2017-10-23 15:32:28 +0000
commit30578893c5111c32b8e8812957c55508a813a629 (patch)
tree5102923f19fbb4ee5369940cdb22e41f5702d929 /infra
parent261b8aa1de8562f79c1a7c515d968787e027a2c8 (diff)
add -SafeStack bots
These bots use https://clang.llvm.org/docs/SafeStack.html. This separates the safe (constant size?) parts of the stack like return address and some local variables apart from the unsafe over- and underflow prone array uses. These go on the "unsafe stack". In theory this makes sense on {Linux,Mac}x{Debug,Release}, but let's just start with Linux/Debug. Change-Id: I9f5cbeb7081e7d9ac8e1298ca0d86880a6085cfa Reviewed-on: https://skia-review.googlesource.com/62743 Reviewed-by: Yuqian Li <liyuqian@google.com> Commit-Queue: Mike Klein <mtklein@chromium.org>
Diffstat (limited to 'infra')
-rw-r--r--infra/bots/jobs.json3
-rw-r--r--infra/bots/recipe_modules/flavor/examples/full.expected/Test-Debian9-Clang-GCE-CPU-AVX2-x86_64-Debug-All-SafeStack.json213
-rw-r--r--infra/bots/recipe_modules/flavor/examples/full.py1
-rw-r--r--infra/bots/recipe_modules/flavor/gn_flavor.py2
-rw-r--r--infra/bots/tasks.json171
5 files changed, 390 insertions, 0 deletions
diff --git a/infra/bots/jobs.json b/infra/bots/jobs.json
index 29a216e0a7..b1f541c2d2 100644
--- a/infra/bots/jobs.json
+++ b/infra/bots/jobs.json
@@ -24,6 +24,7 @@
"Build-Debian9-Clang-x86_64-Debug-Coverage",
"Build-Debian9-Clang-x86_64-Debug-MSAN",
"Build-Debian9-Clang-x86_64-Debug-SK_USE_DISCARDABLE_SCALEDIMAGECACHE",
+ "Build-Debian9-Clang-x86_64-Debug-SafeStack",
"Build-Debian9-Clang-x86_64-Debug-UBSAN_float_cast_overflow",
"Build-Debian9-Clang-x86_64-Debug-Vulkan",
"Build-Debian9-Clang-x86_64-Debug-Vulkan_Coverage",
@@ -158,6 +159,7 @@
"Perf-Debian9-Clang-GCE-CPU-AVX2-x86_64-Debug-All-ASAN",
"Perf-Debian9-Clang-GCE-CPU-AVX2-x86_64-Debug-All-MSAN",
"Perf-Debian9-Clang-GCE-CPU-AVX2-x86_64-Debug-All-SK_USE_DISCARDABLE_SCALEDIMAGECACHE",
+ "Perf-Debian9-Clang-GCE-CPU-AVX2-x86_64-Debug-All-SafeStack",
"Perf-Debian9-Clang-GCE-CPU-AVX2-x86_64-Debug-All-UBSAN_float_cast_overflow",
"Perf-Debian9-Clang-GCE-CPU-AVX2-x86_64-Release-All",
"Perf-Debian9-Clang-GCE-CPU-AVX2-x86_64-Release-All-ASAN",
@@ -337,6 +339,7 @@
"Test-Debian9-Clang-GCE-CPU-AVX2-x86_64-Debug-All-MSAN_FAAA",
"Test-Debian9-Clang-GCE-CPU-AVX2-x86_64-Debug-All-MSAN_FDAA",
"Test-Debian9-Clang-GCE-CPU-AVX2-x86_64-Debug-All-SK_USE_DISCARDABLE_SCALEDIMAGECACHE",
+ "Test-Debian9-Clang-GCE-CPU-AVX2-x86_64-Debug-All-SafeStack",
"Test-Debian9-Clang-GCE-CPU-AVX2-x86_64-Debug-All-UBSAN_float_cast_overflow",
"Test-Debian9-Clang-GCE-CPU-AVX2-x86_64-Release-All",
"Test-Debian9-Clang-GCE-CPU-AVX2-x86_64-Release-All-ASAN",
diff --git a/infra/bots/recipe_modules/flavor/examples/full.expected/Test-Debian9-Clang-GCE-CPU-AVX2-x86_64-Debug-All-SafeStack.json b/infra/bots/recipe_modules/flavor/examples/full.expected/Test-Debian9-Clang-GCE-CPU-AVX2-x86_64-Debug-All-SafeStack.json
new file mode 100644
index 0000000000..1cb0421d83
--- /dev/null
+++ b/infra/bots/recipe_modules/flavor/examples/full.expected/Test-Debian9-Clang-GCE-CPU-AVX2-x86_64-Debug-All-SafeStack.json
@@ -0,0 +1,213 @@
+[
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "[START_DIR]/skia/bin/fetch-gn"
+ ],
+ "cwd": "[START_DIR]/skia",
+ "env": {
+ "BUILDTYPE": "Debug",
+ "CHROME_HEADLESS": "1",
+ "PATH": "<PATH>:RECIPE_PACKAGE_REPO[depot_tools]",
+ "SKIA_OUT": "[START_DIR]/out"
+ },
+ "infra_step": true,
+ "name": "fetch-gn"
+ },
+ {
+ "cmd": [
+ "[START_DIR]/skia/bin/gn",
+ "gen",
+ "[START_DIR]/out/Debug",
+ "--args=cc=\"[START_DIR]/clang_linux/bin/clang\" cxx=\"[START_DIR]/clang_linux/bin/clang++\" extra_cflags=[\"-B[START_DIR]/clang_linux/bin\", \"-O1\"] extra_ldflags=[\"-B[START_DIR]/clang_linux/bin\", \"-fuse-ld=lld\"] sanitize=\"safe-stack\""
+ ],
+ "cwd": "[START_DIR]/skia",
+ "env": {
+ "BUILDTYPE": "Debug",
+ "CHROME_HEADLESS": "1",
+ "PATH": "<PATH>:RECIPE_PACKAGE_REPO[depot_tools]",
+ "SKIA_OUT": "[START_DIR]/out"
+ },
+ "name": "gn gen"
+ },
+ {
+ "cmd": [
+ "ninja",
+ "-C",
+ "[START_DIR]/out/Debug"
+ ],
+ "cwd": "[START_DIR]/skia",
+ "env": {
+ "BUILDTYPE": "Debug",
+ "CHROME_HEADLESS": "1",
+ "PATH": "<PATH>:RECIPE_PACKAGE_REPO[depot_tools]",
+ "SKIA_OUT": "[START_DIR]/out"
+ },
+ "name": "ninja"
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "rmtree",
+ "results_dir"
+ ],
+ "infra_step": true,
+ "name": "rmtree results_dir"
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "ensure-directory",
+ "--mode",
+ "0777",
+ "results_dir"
+ ],
+ "infra_step": true,
+ "name": "makedirs results_dir"
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "rmtree",
+ "device_results_dir"
+ ],
+ "infra_step": true,
+ "name": "rmtree device_results_dir"
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "ensure-directory",
+ "--mode",
+ "0777",
+ "device_results_dir"
+ ],
+ "infra_step": true,
+ "name": "makedirs device_results_dir"
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "copy",
+ "[START_DIR]/skia/infra/bots/assets/skp/VERSION",
+ "/path/to/tmp/"
+ ],
+ "infra_step": true,
+ "name": "Get downloaded SKP VERSION"
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "copy",
+ "42",
+ "[START_DIR]/tmp/SKP_VERSION"
+ ],
+ "infra_step": true,
+ "name": "write SKP_VERSION"
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "copy",
+ "[START_DIR]/skia/infra/bots/assets/skimage/VERSION",
+ "/path/to/tmp/"
+ ],
+ "infra_step": true,
+ "name": "Get downloaded skimage VERSION"
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "copy",
+ "42",
+ "[START_DIR]/tmp/SK_IMAGE_VERSION"
+ ],
+ "infra_step": true,
+ "name": "write SK_IMAGE_VERSION"
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "copy",
+ "[START_DIR]/skia/infra/bots/assets/svg/VERSION",
+ "/path/to/tmp/"
+ ],
+ "infra_step": true,
+ "name": "Get downloaded SVG VERSION"
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "copy",
+ "42",
+ "[START_DIR]/tmp/SVG_VERSION"
+ ],
+ "infra_step": true,
+ "name": "write SVG_VERSION"
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "RECIPE_MODULE[skia::flavor]/resources/symbolize_stack_trace.py",
+ "[START_DIR]",
+ "catchsegv",
+ "[START_DIR]/out/Debug/dm",
+ "--some-flag"
+ ],
+ "cwd": "[START_DIR]/skia",
+ "env": {
+ "BUILDTYPE": "Debug",
+ "CHROME_HEADLESS": "1",
+ "PATH": "<PATH>:RECIPE_PACKAGE_REPO[depot_tools]",
+ "SKIA_OUT": "[START_DIR]/out"
+ },
+ "name": "symbolized dm"
+ },
+ {
+ "name": "$result",
+ "recipe_result": null,
+ "status_code": 0
+ }
+] \ No newline at end of file
diff --git a/infra/bots/recipe_modules/flavor/examples/full.py b/infra/bots/recipe_modules/flavor/examples/full.py
index aaa8b4b5d0..133c7f5b69 100644
--- a/infra/bots/recipe_modules/flavor/examples/full.py
+++ b/infra/bots/recipe_modules/flavor/examples/full.py
@@ -97,6 +97,7 @@ TEST_BUILDERS = [
'-Valgrind_AbandonGpuContext_SK_CPU_LIMIT_SSE41'),
'Test-Win10-MSVC-ShuttleA-GPU-GTX660-x86_64-Debug-All',
'Test-iOS-Clang-iPadPro-GPU-GT7800-arm64-Debug-All',
+ 'Test-Debian9-Clang-GCE-CPU-AVX2-x86_64-Debug-All-SafeStack',
]
diff --git a/infra/bots/recipe_modules/flavor/gn_flavor.py b/infra/bots/recipe_modules/flavor/gn_flavor.py
index 54a9b81e09..aca8880a53 100644
--- a/infra/bots/recipe_modules/flavor/gn_flavor.py
+++ b/infra/bots/recipe_modules/flavor/gn_flavor.py
@@ -142,6 +142,8 @@ class GNFlavorUtils(default_flavor.DefaultFlavorUtils):
sanitize = 'float-cast-overflow'
elif 'SAN' in extra_config:
sanitize = extra_config
+ elif 'SafeStack' in extra_config:
+ sanitize = 'safe-stack'
for (k,v) in {
'cc': cc,
diff --git a/infra/bots/tasks.json b/infra/bots/tasks.json
index ba12afb36c..a30143f2e3 100644
--- a/infra/bots/tasks.json
+++ b/infra/bots/tasks.json
@@ -150,6 +150,12 @@
"Build-Debian9-Clang-x86_64-Debug-SK_USE_DISCARDABLE_SCALEDIMAGECACHE"
]
},
+ "Build-Debian9-Clang-x86_64-Debug-SafeStack": {
+ "priority": 0.8,
+ "tasks": [
+ "Build-Debian9-Clang-x86_64-Debug-SafeStack"
+ ]
+ },
"Build-Debian9-Clang-x86_64-Debug-UBSAN_float_cast_overflow": {
"priority": 0.8,
"tasks": [
@@ -968,6 +974,12 @@
"Perf-Debian9-Clang-GCE-CPU-AVX2-x86_64-Debug-All-SK_USE_DISCARDABLE_SCALEDIMAGECACHE"
]
},
+ "Perf-Debian9-Clang-GCE-CPU-AVX2-x86_64-Debug-All-SafeStack": {
+ "priority": 0.8,
+ "tasks": [
+ "Perf-Debian9-Clang-GCE-CPU-AVX2-x86_64-Debug-All-SafeStack"
+ ]
+ },
"Perf-Debian9-Clang-GCE-CPU-AVX2-x86_64-Debug-All-UBSAN_float_cast_overflow": {
"priority": 0.8,
"tasks": [
@@ -2037,6 +2049,12 @@
"Upload-Test-Debian9-Clang-GCE-CPU-AVX2-x86_64-Debug-All-SK_USE_DISCARDABLE_SCALEDIMAGECACHE"
]
},
+ "Test-Debian9-Clang-GCE-CPU-AVX2-x86_64-Debug-All-SafeStack": {
+ "priority": 0.8,
+ "tasks": [
+ "Upload-Test-Debian9-Clang-GCE-CPU-AVX2-x86_64-Debug-All-SafeStack"
+ ]
+ },
"Test-Debian9-Clang-GCE-CPU-AVX2-x86_64-Debug-All-UBSAN_float_cast_overflow": {
"priority": 0.8,
"tasks": [
@@ -3639,6 +3657,36 @@
"isolate": "compile_skia.isolate",
"priority": 0.8
},
+ "Build-Debian9-Clang-x86_64-Debug-SafeStack": {
+ "cipd_packages": [
+ {
+ "name": "skia/bots/clang_linux",
+ "path": "clang_linux",
+ "version": "version:10"
+ }
+ ],
+ "dimensions": [
+ "cpu:x86-64-Haswell_GCE",
+ "gpu:none",
+ "os:Debian-9.1",
+ "pool:Skia"
+ ],
+ "extra_args": [
+ "--workdir",
+ "../../..",
+ "compile",
+ "repository=<(REPO)",
+ "buildername=Build-Debian9-Clang-x86_64-Debug-SafeStack",
+ "swarm_out_dir=${ISOLATED_OUTDIR}",
+ "revision=<(REVISION)",
+ "patch_repo=<(PATCH_REPO)",
+ "patch_storage=<(PATCH_STORAGE)",
+ "patch_issue=<(ISSUE)",
+ "patch_set=<(PATCHSET)"
+ ],
+ "isolate": "compile_skia.isolate",
+ "priority": 0.8
+ },
"Build-Debian9-Clang-x86_64-Debug-UBSAN_float_cast_overflow": {
"cipd_packages": [
{
@@ -7864,6 +7912,54 @@
"max_attempts": 1,
"priority": 0.8
},
+ "Perf-Debian9-Clang-GCE-CPU-AVX2-x86_64-Debug-All-SafeStack": {
+ "cipd_packages": [
+ {
+ "name": "skia/bots/skimage",
+ "path": "skimage",
+ "version": "version:32"
+ },
+ {
+ "name": "skia/bots/skp",
+ "path": "skp",
+ "version": "version:91"
+ },
+ {
+ "name": "skia/bots/svg",
+ "path": "svg",
+ "version": "version:9"
+ }
+ ],
+ "dependencies": [
+ "Build-Debian9-Clang-x86_64-Debug-SafeStack",
+ "Housekeeper-PerCommit-BundleRecipes"
+ ],
+ "dimensions": [
+ "cpu:x86-64-Haswell_GCE",
+ "gpu:none",
+ "os:Debian-9.1",
+ "pool:Skia"
+ ],
+ "execution_timeout_ns": 14400000000000,
+ "expiration_ns": 72000000000000,
+ "extra_args": [
+ "--workdir",
+ "../../..",
+ "perf",
+ "repository=<(REPO)",
+ "buildername=Perf-Debian9-Clang-GCE-CPU-AVX2-x86_64-Debug-All-SafeStack",
+ "swarm_out_dir=${ISOLATED_OUTDIR}",
+ "revision=<(REVISION)",
+ "patch_repo=<(PATCH_REPO)",
+ "patch_storage=<(PATCH_STORAGE)",
+ "patch_issue=<(ISSUE)",
+ "patch_set=<(PATCHSET)"
+ ],
+ "io_timeout_ns": 2400000000000,
+ "isolate": "perf_skia_bundled_unix.isolate",
+ "max_attempts": 1,
+ "priority": 0.8
+ },
"Perf-Debian9-Clang-GCE-CPU-AVX2-x86_64-Debug-All-UBSAN_float_cast_overflow": {
"cipd_packages": [
{
@@ -15605,6 +15701,54 @@
"max_attempts": 1,
"priority": 0.8
},
+ "Test-Debian9-Clang-GCE-CPU-AVX2-x86_64-Debug-All-SafeStack": {
+ "cipd_packages": [
+ {
+ "name": "skia/bots/skimage",
+ "path": "skimage",
+ "version": "version:32"
+ },
+ {
+ "name": "skia/bots/skp",
+ "path": "skp",
+ "version": "version:91"
+ },
+ {
+ "name": "skia/bots/svg",
+ "path": "svg",
+ "version": "version:9"
+ }
+ ],
+ "dependencies": [
+ "Build-Debian9-Clang-x86_64-Debug-SafeStack",
+ "Housekeeper-PerCommit-BundleRecipes"
+ ],
+ "dimensions": [
+ "cpu:x86-64-Haswell_GCE",
+ "gpu:none",
+ "os:Debian-9.1",
+ "pool:Skia"
+ ],
+ "execution_timeout_ns": 14400000000000,
+ "expiration_ns": 72000000000000,
+ "extra_args": [
+ "--workdir",
+ "../../..",
+ "test",
+ "repository=<(REPO)",
+ "buildername=Test-Debian9-Clang-GCE-CPU-AVX2-x86_64-Debug-All-SafeStack",
+ "swarm_out_dir=${ISOLATED_OUTDIR}",
+ "revision=<(REVISION)",
+ "patch_repo=<(PATCH_REPO)",
+ "patch_storage=<(PATCH_STORAGE)",
+ "patch_issue=<(ISSUE)",
+ "patch_set=<(PATCHSET)"
+ ],
+ "io_timeout_ns": 2400000000000,
+ "isolate": "test_skia_bundled_unix.isolate",
+ "max_attempts": 1,
+ "priority": 0.8
+ },
"Test-Debian9-Clang-GCE-CPU-AVX2-x86_64-Debug-All-UBSAN_float_cast_overflow": {
"cipd_packages": [
{
@@ -26551,6 +26695,33 @@
"isolate": "upload_dm_results.isolate",
"priority": 0.8
},
+ "Upload-Test-Debian9-Clang-GCE-CPU-AVX2-x86_64-Debug-All-SafeStack": {
+ "dependencies": [
+ "Test-Debian9-Clang-GCE-CPU-AVX2-x86_64-Debug-All-SafeStack"
+ ],
+ "dimensions": [
+ "cpu:x86-64-Haswell_GCE",
+ "gpu:none",
+ "os:Debian-9.1",
+ "pool:Skia"
+ ],
+ "extra_args": [
+ "--workdir",
+ "../../..",
+ "upload_dm_results",
+ "repository=<(REPO)",
+ "buildername=Test-Debian9-Clang-GCE-CPU-AVX2-x86_64-Debug-All-SafeStack",
+ "swarm_out_dir=${ISOLATED_OUTDIR}",
+ "revision=<(REVISION)",
+ "patch_repo=<(PATCH_REPO)",
+ "patch_storage=<(PATCH_STORAGE)",
+ "patch_issue=<(ISSUE)",
+ "patch_set=<(PATCHSET)",
+ "gs_bucket=skia-infra-gm"
+ ],
+ "isolate": "upload_dm_results.isolate",
+ "priority": 0.8
+ },
"Upload-Test-Debian9-Clang-GCE-CPU-AVX2-x86_64-Debug-Shard_16-Coverage": {
"cipd_packages": [
{