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>
This commit is contained in:
Mike Klein 2020-04-08 08:11:13 -05:00 committed by Skia Commit-Bot
parent b19ed123bd
commit 97cdd6a4ce
6 changed files with 238 additions and 11 deletions

View File

@ -203,17 +203,21 @@ class DefaultFlavor(object):
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...

View File

@ -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"
},

View File

@ -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"
},

View File

@ -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"
}
]

View File

@ -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"
},

View File

@ -107,6 +107,7 @@ TEST_BUILDERS = [
'-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.