narrow use of fast_unwind_on_malloc=0
Looks like our bots took anywhere from a 2x to 25x slowdown hit
from using this flag. Let's keep it only where we think we need
it, Test-...-ASAN_Vulkan bots.
Change-Id: Ied7c0a744fafa307f4ad0e7f82c62445b2cc1e61
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/282297
Reviewed-by: Ben Wagner <bungeman@google.com>
Commit-Queue: Mike Klein <mtklein@google.com>
diff --git a/infra/bots/recipe_modules/flavor/default.py b/infra/bots/recipe_modules/flavor/default.py
index a8dfa21..4fa9863 100644
--- a/infra/bots/recipe_modules/flavor/default.py
+++ b/infra/bots/recipe_modules/flavor/default.py
@@ -203,17 +203,21 @@
cmd = [procdump, '-accepteula', '-mp', '-e', '1', '-x', dumps_dir] + cmd
if 'ASAN' in extra_tokens:
- # Note: if you see "<unknown module>" in stacktraces for xSAN warnings,
- # try adding "fast_unwind_on_malloc=0" to xSAN_OPTIONS.
os = self.m.vars.builder_cfg.get('os', '')
if 'Mac' in os or 'Win' in os:
# Mac and Win don't support detect_leaks.
- env['ASAN_OPTIONS'] = 'symbolize=1 fast_unwind_on_malloc=0'
+ env['ASAN_OPTIONS'] = 'symbolize=1'
else:
- env['ASAN_OPTIONS'] = 'symbolize=1 fast_unwind_on_malloc=0 detect_leaks=1'
- env[ 'LSAN_OPTIONS'] = 'symbolize=1 fast_unwind_on_malloc=0 print_suppressions=1'
+ env['ASAN_OPTIONS'] = 'symbolize=1 detect_leaks=1'
+ env[ 'LSAN_OPTIONS'] = 'symbolize=1 print_suppressions=1'
env['UBSAN_OPTIONS'] = 'symbolize=1 print_stacktrace=1'
+ # If you see <unknown module> in stacktraces, try fast_unwind_on_malloc=0.
+ # This may cause a 2-25x slowdown, so use it only when you really need it.
+ if name == 'dm' and 'Vulkan' in extra_tokens:
+ env['ASAN_OPTIONS'] += ' fast_unwind_on_malloc=0'
+ env['LSAN_OPTIONS'] += ' fast_unwind_on_malloc=0'
+
if 'TSAN' in extra_tokens:
# We don't care about malloc(), fprintf, etc. used in signal handlers.
# If we're in a signal handler, we're already crashing...
diff --git a/infra/bots/recipe_modules/flavor/examples/full.expected/Perf-Debian10-Clang-GCE-CPU-AVX2-x86_64-Release-All-ASAN.json b/infra/bots/recipe_modules/flavor/examples/full.expected/Perf-Debian10-Clang-GCE-CPU-AVX2-x86_64-Release-All-ASAN.json
index 7a2775e..4ae4d3c 100644
--- a/infra/bots/recipe_modules/flavor/examples/full.expected/Perf-Debian10-Clang-GCE-CPU-AVX2-x86_64-Release-All-ASAN.json
+++ b/infra/bots/recipe_modules/flavor/examples/full.expected/Perf-Debian10-Clang-GCE-CPU-AVX2-x86_64-Release-All-ASAN.json
@@ -204,10 +204,10 @@
],
"cwd": "[START_DIR]/skia",
"env": {
- "ASAN_OPTIONS": "symbolize=1 fast_unwind_on_malloc=0 detect_leaks=1",
+ "ASAN_OPTIONS": "symbolize=1 detect_leaks=1",
"CHROME_HEADLESS": "1",
"LD_LIBRARY_PATH": "[START_DIR]/clang_linux/lib",
- "LSAN_OPTIONS": "symbolize=1 fast_unwind_on_malloc=0 print_suppressions=1",
+ "LSAN_OPTIONS": "symbolize=1 print_suppressions=1",
"PATH": "<PATH>:RECIPE_REPO[depot_tools]:[START_DIR]/clang_linux/bin",
"UBSAN_OPTIONS": "symbolize=1 print_stacktrace=1"
},
diff --git a/infra/bots/recipe_modules/flavor/examples/full.expected/Perf-Win2019-Clang-GCE-CPU-AVX2-x86_64-Debug-All-ASAN.json b/infra/bots/recipe_modules/flavor/examples/full.expected/Perf-Win2019-Clang-GCE-CPU-AVX2-x86_64-Debug-All-ASAN.json
index 1bd0886..4619007 100644
--- a/infra/bots/recipe_modules/flavor/examples/full.expected/Perf-Win2019-Clang-GCE-CPU-AVX2-x86_64-Debug-All-ASAN.json
+++ b/infra/bots/recipe_modules/flavor/examples/full.expected/Perf-Win2019-Clang-GCE-CPU-AVX2-x86_64-Debug-All-ASAN.json
@@ -204,10 +204,10 @@
"--some-flag"
],
"env": {
- "ASAN_OPTIONS": "symbolize=1 fast_unwind_on_malloc=0",
+ "ASAN_OPTIONS": "symbolize=1",
"CHROME_HEADLESS": "1",
"LD_LIBRARY_PATH": "[START_DIR]\\clang_linux/lib",
- "LSAN_OPTIONS": "symbolize=1 fast_unwind_on_malloc=0 print_suppressions=1",
+ "LSAN_OPTIONS": "symbolize=1 print_suppressions=1",
"PATH": "<PATH>;RECIPE_REPO[depot_tools];[START_DIR]\\clang_linux/bin",
"UBSAN_OPTIONS": "symbolize=1 print_stacktrace=1"
},
diff --git a/infra/bots/recipe_modules/flavor/examples/full.expected/Test-Debian10-Clang-NUC7i5BNK-GPU-IntelIris640-x86_64-Debug-All-ASAN_Vulkan.json b/infra/bots/recipe_modules/flavor/examples/full.expected/Test-Debian10-Clang-NUC7i5BNK-GPU-IntelIris640-x86_64-Debug-All-ASAN_Vulkan.json
new file mode 100644
index 0000000..2607886
--- /dev/null
+++ b/infra/bots/recipe_modules/flavor/examples/full.expected/Test-Debian10-Clang-NUC7i5BNK-GPU-IntelIris640-x86_64-Debug-All-ASAN_Vulkan.json
@@ -0,0 +1,222 @@
+[
+ {
+ "cmd": [
+ "vpython",
+ "-u",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "copy",
+ "file.txt",
+ "/path/to/tmp/"
+ ],
+ "infra_step": true,
+ "name": "read file.txt",
+ "~followup_annotations": [
+ "@@@STEP_LOG_END@file.txt@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "vpython",
+ "-u",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "remove",
+ "file.txt"
+ ],
+ "infra_step": true,
+ "name": "remove file.txt"
+ },
+ {
+ "cmd": [
+ "vpython",
+ "-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": [
+ "vpython",
+ "-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": [
+ "vpython",
+ "-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": [
+ "vpython",
+ "-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": [
+ "vpython",
+ "-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 skp VERSION",
+ "~followup_annotations": [
+ "@@@STEP_LOG_LINE@VERSION@42@@@",
+ "@@@STEP_LOG_END@VERSION@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "vpython",
+ "-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",
+ "~followup_annotations": [
+ "@@@STEP_LOG_LINE@SKP_VERSION@42@@@",
+ "@@@STEP_LOG_END@SKP_VERSION@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "vpython",
+ "-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 skimage VERSION",
+ "~followup_annotations": [
+ "@@@STEP_LOG_LINE@VERSION@42@@@",
+ "@@@STEP_LOG_END@VERSION@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "vpython",
+ "-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",
+ "~followup_annotations": [
+ "@@@STEP_LOG_LINE@SK_IMAGE_VERSION@42@@@",
+ "@@@STEP_LOG_END@SK_IMAGE_VERSION@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "vpython",
+ "-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 svg VERSION",
+ "~followup_annotations": [
+ "@@@STEP_LOG_LINE@VERSION@42@@@",
+ "@@@STEP_LOG_END@VERSION@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "vpython",
+ "-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",
+ "~followup_annotations": [
+ "@@@STEP_LOG_LINE@SVG_VERSION@42@@@",
+ "@@@STEP_LOG_END@SVG_VERSION@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "RECIPE_MODULE[skia::flavor]/resources/symbolize_stack_trace.py",
+ "[START_DIR]",
+ "[START_DIR]/build/dm",
+ "--some-flag"
+ ],
+ "cwd": "[START_DIR]/skia",
+ "env": {
+ "ASAN_OPTIONS": "symbolize=1 detect_leaks=1 fast_unwind_on_malloc=0",
+ "CHROME_HEADLESS": "1",
+ "LD_LIBRARY_PATH": "[START_DIR]/mesa_intel_driver_linux:[START_DIR]/linux_vulkan_sdk/lib:[START_DIR]/clang_linux/lib",
+ "LIBGL_DRIVERS_PATH": "[START_DIR]/mesa_intel_driver_linux",
+ "LSAN_OPTIONS": "symbolize=1 print_suppressions=1 fast_unwind_on_malloc=0",
+ "PATH": "<PATH>:RECIPE_REPO[depot_tools]:[START_DIR]/linux_vulkan_sdk/bin:[START_DIR]/clang_linux/bin",
+ "UBSAN_OPTIONS": "symbolize=1 print_stacktrace=1",
+ "VK_ICD_FILENAMES": "[START_DIR]/mesa_intel_driver_linux/intel_icd.x86_64.json",
+ "VULKAN_SDK": "[START_DIR]/linux_vulkan_sdk"
+ },
+ "name": "symbolized dm"
+ },
+ {
+ "name": "$result"
+ }
+]
\ No newline at end of file
diff --git a/infra/bots/recipe_modules/flavor/examples/full.expected/Test-Mac10.13-Clang-MacBookPro11.5-CPU-AVX2-x86_64-Debug-All-ASAN.json b/infra/bots/recipe_modules/flavor/examples/full.expected/Test-Mac10.13-Clang-MacBookPro11.5-CPU-AVX2-x86_64-Debug-All-ASAN.json
index 8647a429..09c58b4 100644
--- a/infra/bots/recipe_modules/flavor/examples/full.expected/Test-Mac10.13-Clang-MacBookPro11.5-CPU-AVX2-x86_64-Debug-All-ASAN.json
+++ b/infra/bots/recipe_modules/flavor/examples/full.expected/Test-Mac10.13-Clang-MacBookPro11.5-CPU-AVX2-x86_64-Debug-All-ASAN.json
@@ -199,10 +199,10 @@
"--some-flag"
],
"env": {
- "ASAN_OPTIONS": "symbolize=1 fast_unwind_on_malloc=0",
+ "ASAN_OPTIONS": "symbolize=1",
"CHROME_HEADLESS": "1",
"LD_LIBRARY_PATH": "[START_DIR]/clang_linux/lib",
- "LSAN_OPTIONS": "symbolize=1 fast_unwind_on_malloc=0 print_suppressions=1",
+ "LSAN_OPTIONS": "symbolize=1 print_suppressions=1",
"PATH": "<PATH>:RECIPE_REPO[depot_tools]:[START_DIR]/clang_linux/bin",
"UBSAN_OPTIONS": "symbolize=1 print_stacktrace=1"
},
diff --git a/infra/bots/recipe_modules/flavor/examples/full.py b/infra/bots/recipe_modules/flavor/examples/full.py
index c6785c3..1b9864c 100644
--- a/infra/bots/recipe_modules/flavor/examples/full.py
+++ b/infra/bots/recipe_modules/flavor/examples/full.py
@@ -107,6 +107,7 @@
'-Valgrind_AbandonGpuContext_SK_CPU_LIMIT_SSE41'),
'Test-Win10-Clang-Golo-GPU-QuadroP400-x86_64-Release-All-Vulkan_ProcDump',
'Test-Win10-MSVC-LenovoYogaC630-GPU-Adreno630-arm64-Debug-All-ANGLE',
+ 'Test-Debian10-Clang-NUC7i5BNK-GPU-IntelIris640-x86_64-Debug-All-ASAN_Vulkan',
]
# Default properties used for TEST_BUILDERS.