The test will cause a crash inside TSAN - most likely due to a overflow
in TSAN's shadow stack (which has a fixed size). These out-of-bound
writes will corrupt memory causing the failures.
The reduction of thist test:
main() {
final regexp = RegExp(('a*' * 200) + '\u0100*\\w');
regexp.firstMatch('a');
}
will cause a crash when running under TSAN:
% out/ReleaseTSANX64/dart test.dart
zsh: segmentation fault out/ReleaseTSANX64/dart
inside TSAN. It happens in the RegExp frontend which - due to recursive
nature - has very large stack.
TEST=Fixes one false-positive that makes "iso-stress" builder red.
Change-Id: Icabe5b35f8724ef042325e1dfe821d9aba5ea28e
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/221460
Reviewed-by: Slava Egorov <vegorov@google.com>
Commit-Queue: Martin Kustermann <kustermann@google.com>
This directory contains code to produce a large isolate stress test. It has the following helper files:
generate_stress_test_list.dart: Will recursively walk test suite
directories, tries to run tests and see whether they could be included as part
of the stress test.
Only tests that are passing, run reasonably quick and don't use features that prevent running them inside isolates will be considered.
=> The filtered tests that are considered will be written into
stress_test_list.json.
The resulting stress_test_list.json file was hand-edited afterwards to remove
certain tests that have passed the simple automated filter but cannot be used
as part of the stress test.
generate_stress_test.dart: Can be used to consume stress_test_list.json and
build the stress test files.
stress_test_list.json: Contains two lists of tests (one for NNBD and one for
non-NNBD) that can be used to generate a stress test.
To ensure the list doesn't get out-of-date we have two tests on regular bots
that will try to compile the stress test to kernel, thereby ensuring that the
files at least exist and compile, see
runtime/tests/vm/{dart,dart_2}/isolates/concurrency_stress_sanity_test.dart.