[foozzie] Use separate crash state for simulated crashes

The error simulation works and crashes during the smoke test are
detected. But now this masks real crashes (https://crbug.com/1153200),
therefore this change subsumes smoke-test crashes with
--simulate-errors under a separate crash state.

Now Clusterfuzz will detect the case "unexpected crash" as fixed, but
create a new bug for "simulated crash". Which we will keep open
forever.

No-Try: true
Bug: chromium:1152412
Change-Id: I511af167d33430d9b89692151cb8abaf3a90c715
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2563270
Reviewed-by: Clemens Backes <clemensb@chromium.org>
Commit-Queue: Clemens Backes <clemensb@chromium.org>
Auto-Submit: Michael Achenbach <machenbach@chromium.org>
Cr-Commit-Position: refs/heads/master@{#71452}
This commit is contained in:
Michael Achenbach 2020-11-27 13:35:26 +01:00 committed by Commit Bot
parent 6039cda616
commit 4f2f106206

View File

@ -243,6 +243,10 @@ class ExecutionConfig(object):
def flags(self):
return self.command.flags
@property
def is_error_simulation(self):
return '--simulate-errors' in self.flags
def parse_args():
first_config_arguments = ExecutionArgumentsConfig('first')
@ -396,11 +400,13 @@ def run_comparisons(suppress, execution_configs, test_case, timeout,
baseline_config = execution_configs[0]
baseline_output = run_test_case(baseline_config)
has_crashed = baseline_output.HasCrashed()
simulated = baseline_config.is_error_simulation
# Iterate over the remaining configurations, run and compare.
for comparison_config in execution_configs[1:]:
comparison_output = run_test_case(comparison_config)
has_crashed = has_crashed or comparison_output.HasCrashed()
simulated = simulated or comparison_config.is_error_simulation
difference, source = suppress.diff(baseline_output, comparison_output)
if difference:
@ -421,10 +427,11 @@ def run_comparisons(suppress, execution_configs, test_case, timeout,
# detected. This is only for the statistics during experiments.
raise PassException('# V8 correctness - C-R-A-S-H')
else:
# Subsume unexpected crashes (e.g. during sanity checks) with one failure
# state.
# Subsume simulated and unexpected crashes (e.g. during sanity checks)
# with one failure state.
crash_state = 'simulated crash' if simulated else 'unexpected crash'
raise FailException(FAILURE_HEADER_TEMPLATE % dict(
configs='', source_key='', suppression='unexpected crash'))
configs='', source_key='', suppression=crash_state))
def main():