mirror of
https://github.com/ethereum/solidity
synced 2023-10-03 13:03:40 +00:00
Switch nightly fuzzer build from ASan (slow) to UBSan (fast)
This commit is contained in:
parent
d033c2f767
commit
3623026505
@ -414,7 +414,6 @@ jobs:
|
||||
name: Regression tests
|
||||
command: |
|
||||
mkdir -p test_results
|
||||
export ASAN_OPTIONS="check_initialization_order=true:detect_stack_use_after_return=true:strict_init_order=true:strict_string_checks=true:detect_invalid_pointer_pairs=2"
|
||||
scripts/regressions.py -o test_results
|
||||
- run: *gitter_notify_failure
|
||||
- run: *gitter_notify_success
|
||||
@ -793,7 +792,7 @@ workflows:
|
||||
jobs:
|
||||
# OSSFUZZ builds and (regression) tests
|
||||
- b_ubu_ossfuzz: *workflow_trigger_on_tags
|
||||
# - t_ubu_ossfuzz: *workflow_ubuntu1904_ossfuzz
|
||||
- t_ubu_ossfuzz: *workflow_ubuntu1904_ossfuzz
|
||||
|
||||
# Code Coverage enabled build and tests
|
||||
- b_ubu_codecov: *workflow_trigger_on_tags
|
||||
|
@ -7,5 +7,5 @@ set(USE_CVC4 OFF CACHE BOOL "Disable CVC4" FORCE)
|
||||
set(OSSFUZZ ON CACHE BOOL "Enable fuzzer build" FORCE)
|
||||
# Use libfuzzer as the fuzzing back-end
|
||||
set(LIB_FUZZING_ENGINE "-fsanitize=fuzzer" CACHE STRING "Use libfuzzer back-end" FORCE)
|
||||
# clang/libfuzzer specific flags for ASan instrumentation
|
||||
set(CMAKE_CXX_FLAGS "-O1 -gline-tables-only -fsanitize=address -fsanitize-address-use-after-scope -fsanitize=fuzzer-no-link -stdlib=libstdc++" CACHE STRING "Custom compilation flags" FORCE)
|
||||
# clang/libfuzzer specific flags for UBSan instrumentation
|
||||
set(CMAKE_CXX_FLAGS "-O1 -gline-tables-only -fsanitize=undefined -fsanitize=fuzzer-no-link -stdlib=libstdc++" CACHE STRING "Custom compilation flags" FORCE)
|
||||
|
@ -31,8 +31,7 @@ class PrintDotsThread(object):
|
||||
time.sleep(self.interval)
|
||||
|
||||
class regressor():
|
||||
_re_sanitizer_log = re.compile(r"""ERROR: (?P<sanitizer>\w+).*""")
|
||||
_error_blacklist = ["AddressSanitizer", "libFuzzer"]
|
||||
_re_sanitizer_log = re.compile(r"""(.*runtime error: (?P<sanitizer>\w+).*|std::exception::what: (?P<description>\w+).*)""")
|
||||
|
||||
def __init__(self, description, args):
|
||||
self._description = description
|
||||
@ -85,16 +84,13 @@ class regressor():
|
||||
bool: Test status.
|
||||
True -> Success
|
||||
False -> Failure
|
||||
int: Number of suppressed memory leaks
|
||||
"""
|
||||
|
||||
## Log may contain non ASCII characters, so we simply stringify them
|
||||
## since they don't matter for regular expression matching
|
||||
rawtext = str(open(logfile, 'rb').read())
|
||||
list = re.findall(self._re_sanitizer_log, rawtext)
|
||||
numSuppressedLeaks = list.count("LeakSanitizer")
|
||||
rv = any(word in list for word in self._error_blacklist)
|
||||
return not rv, numSuppressedLeaks
|
||||
return len(list) == 0
|
||||
|
||||
def run(self):
|
||||
"""
|
||||
|
Loading…
Reference in New Issue
Block a user