diff options
author | Mike Klein <mtklein@chromium.org> | 2017-10-23 10:09:04 -0400 |
---|---|---|
committer | Skia Commit-Bot <skia-commit-bot@chromium.org> | 2017-10-23 15:32:28 +0000 |
commit | 30578893c5111c32b8e8812957c55508a813a629 (patch) | |
tree | 5102923f19fbb4ee5369940cdb22e41f5702d929 /infra | |
parent | 261b8aa1de8562f79c1a7c515d968787e027a2c8 (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')
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": [ { |