aboutsummaryrefslogtreecommitdiffhomepage
path: root/infra
diff options
context:
space:
mode:
authorGravatar jonathanmetzman <31354670+jonathanmetzman@users.noreply.github.com>2021-03-02 09:20:40 -0800
committerGravatar GitHub <noreply@github.com>2021-03-02 09:20:40 -0800
commitf5901265d100cfbcb91d05cd97dab308a3d300d6 (patch)
tree962771ac9d88ff80dc43f6d07aa866fb9cea2d46 /infra
parent0e8a05d04c4b790f5b35fb037bedea49f2a5d80f (diff)
[TSAN] Support TSAN (#5266)
We aren't planning on suppoting TSAN on ClusterFuzz. But we can support in CIFuzz since Skia wants it.
Diffstat (limited to 'infra')
-rw-r--r--infra/base-images/base-builder/Dockerfile2
-rwxr-xr-xinfra/base-images/base-runner/bad_build_check4
-rwxr-xr-xinfra/helper.py9
3 files changed, 12 insertions, 3 deletions
diff --git a/infra/base-images/base-builder/Dockerfile b/infra/base-images/base-builder/Dockerfile
index fbfb8990..b726812e 100644
--- a/infra/base-images/base-builder/Dockerfile
+++ b/infra/base-images/base-builder/Dockerfile
@@ -131,6 +131,8 @@ ENV SANITIZER_FLAGS_memory "-fsanitize=memory -fsanitize-memory-track-origins"
ENV SANITIZER_FLAGS_dataflow "-fsanitize=dataflow"
+ENV SANITIZER_FLAGS_thread "-fsanitize=thread"
+
# Do not use any sanitizers in the coverage build.
ENV SANITIZER_FLAGS_coverage ""
diff --git a/infra/base-images/base-runner/bad_build_check b/infra/base-images/base-runner/bad_build_check
index 759985c2..01f8fbba 100755
--- a/infra/base-images/base-runner/bad_build_check
+++ b/infra/base-images/base-runner/bad_build_check
@@ -334,6 +334,7 @@ function check_mixed_sanitizers {
local MSAN_CALLS=$(objdump -dC $FUZZER | egrep "${CALL_INSN}__msan" -c)
local UBSAN_CALLS=$(objdump -dC $FUZZER | egrep "${CALL_INSN}__ubsan" -c)
+
if [[ "$SANITIZER" = address ]]; then
check_asan_build $FUZZER $ASAN_CALLS $DFSAN_CALLS $MSAN_CALLS $UBSAN_CALLS
result=$?
@@ -346,6 +347,9 @@ function check_mixed_sanitizers {
elif [[ "$SANITIZER" = undefined ]]; then
check_ubsan_build $FUZZER $ASAN_CALLS $DFSAN_CALLS $MSAN_CALLS $UBSAN_CALLS
result=$?
+ elif [[ "$SANITIZER" = thread ]]; then
+ # TODO(metzman): Implement this.
+ result=0
fi
return $result
diff --git a/infra/helper.py b/infra/helper.py
index 6ac03776..82761210 100755
--- a/infra/helper.py
+++ b/infra/helper.py
@@ -61,6 +61,8 @@ PROJECT_LANGUAGE_REGEX = re.compile(r'\s*language\s*:\s*([^\s]+)')
# Languages from project.yaml that have code coverage support.
LANGUAGES_WITH_COVERAGE_SUPPORT = ['c', 'c++', 'go']
+# pylint: disable=too-many-lines
+
def main(): # pylint: disable=too-many-branches,too-many-return-statements,too-many-statements
"""Get subcommand from program arguments and do it."""
@@ -112,8 +114,9 @@ def main(): # pylint: disable=too-many-branches,too-many-return-statements,too-
_add_engine_args(
check_build_parser,
choices=['libfuzzer', 'afl', 'honggfuzz', 'dataflow', 'none'])
- _add_sanitizer_args(check_build_parser,
- choices=['address', 'memory', 'undefined', 'dataflow'])
+ _add_sanitizer_args(
+ check_build_parser,
+ choices=['address', 'memory', 'undefined', 'dataflow', 'thread'])
_add_environment_args(check_build_parser)
check_build_parser.add_argument('project_name', help='name of the project')
check_build_parser.add_argument('fuzzer_name',
@@ -335,7 +338,7 @@ def _add_engine_args(parser,
def _add_sanitizer_args(parser,
choices=('address', 'memory', 'undefined', 'coverage',
- 'dataflow')):
+ 'dataflow', 'thread')):
"""Add common sanitizer args."""
parser.add_argument(
'--sanitizer',