Rationale:
We were using an OPTIONS environment that no longer
worked (if it ever worked?). We can just pass the
right compiler flags to precompiler2.
Change-Id: Ifb86c377eab4cc11bd2e9dc2996654e707fadc4f
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/114420
Reviewed-by: Felicitas Hetzelt <felih@google.com>
Commit-Queue: Aart Bik <ajcbik@google.com>
Rationale:
AFL provides a list of integer values likely to trigger bugs in the
target program. I added the afl list to the local list of interesting
values.
Change-Id: I4f5a29b395ab3bd16a9389a3c381d73eb1ad8fc4
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/114051
Reviewed-by: Aart Bik <ajcbik@google.com>
Commit-Queue: Felicitas Hetzelt <felih@google.com>
Rationale:
Many cases of the the loop iteration variable being modified within the
loop body, leading to infinite loops and timeouts. This patch tracks
currently active iteration variables and avoids emitting them on the lhs
of an assignment or within a pre/post operation.
Change-Id: I5e7c84f0de72410dc98d115d75b1f09e6631ece2
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/112843
Reviewed-by: Aart Bik <ajcbik@google.com>
Commit-Queue: Felicitas Hetzelt <felih@google.com>
Rationale:
Some programs generated by dartfuzz.dart cause failures when executed
due to the type of a loop variable being inferred as 'num'.
By setting the type of such variables explicitly to 'int' we avoid such cases.
Change-Id: Ibdfd06ece28914ee26fd38f2b3efa20cd93ba9ca
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/112754
Commit-Queue: Felicitas Hetzelt <felih@google.com>
Reviewed-by: Aart Bik <ajcbik@google.com>
Reviewed-by: Ben Konyi <bkonyi@google.com>
Given the uri of a make_a_fuzz run, this script will first
extract the links pointng to each of the individual shards
and then parse the output generated by that shard for
divergences reported by the dartfuzz_test.dart program.
Change-Id: Ieb328737f940bf736c803ec58ac88e54e30e59b1
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/111666
Reviewed-by: Aart Bik <ajcbik@google.com>
Reviewed-by: Ben Konyi <bkonyi@google.com>
Commit-Queue: Felicitas Hetzelt <felih@google.com>
Rationale:
Floating-point operations have some potential for
false divergences (mostly when going through libc
methods that are compiled differently between 32-
and 64-bit. To avoid these, a --no-fp flag has
been added to dartfuzz.dart which can be used
to dartfuzz_test.dart to avoid floating-point
operations when comparing 32-/64-bit execution
modes.
https://github.com/dart-lang/sdk/issues/37335
Change-Id: Ie3c28f2a6e2d257b8e9adbba79d088b3879264ac
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/109891
Reviewed-by: Felicitas Hetzelt <felih@google.com>
Commit-Queue: Aart Bik <ajcbik@google.com>
Rationale:
A divergence can be caused by differences in test
output, timeout or crash. This patch displays the
return code of the test program, so that the latter
two cases can be distinguished.
Change-Id: Id5520a2da41aad191c0878148acfff2c98c110aa
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/109682
Reviewed-by: Aart Bik <ajcbik@google.com>
Commit-Queue: Felicitas Hetzelt <felih@google.com>
Rationale:
Deprecating DBC cluster runs in fuzzer since the
focus will move away from this mode. Our resources
are better spent on running all other modes.
Change-Id: I6938381fa59c5d40928d891b08725fdf7c54cece
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/106921
Reviewed-by: Siva Annamalai <asiva@google.com>
Commit-Queue: Aart Bik <ajcbik@google.com>
Rationale:
This if "hides" the dart_libfuzzer target for
build targets that do not support the fuzzer tool
(e.g. no asan, ia32, etc.). This makes "build all"
possible again, and yields "unknown target 'dart_libfuzzer'"
for unsupported case. Also updates README accordingly
and fixes some formatting.
https://github.com/dart-lang/sdk/issues/36774
Change-Id: I61d85ae00d13a0eda3818d40b992cd81f5ee0357
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/100630
Commit-Queue: Aart Bik <ajcbik@google.com>
Reviewed-by: Alexander Aprelev <aam@google.com>
Rationale:
Using Platform strings and other features is
too subject to divergences between the different
execution modes. Nothing useful is tested here.
Change-Id: Icb96b0a6891d1b45b831fb17fa1d9d2cd7b77b6f
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/98948
Reviewed-by: Aart Bik <ajcbik@google.com>
Commit-Queue: Aart Bik <ajcbik@google.com>
Rationale:
Rather than manually constructing the API tables for DartFuzz,
this introduces a utility to generate API tables based on
the analyzer traversal of common libraries. The utility
recognizes DartTypes that are currently understood by DartFuzz
and constructs the tables organized by return type.
TBD:
DartFuzz's type system is rather simple; as this improves,
more and more methods will be accepted by the utility,
thereby increasing fuzzing coverage of our libraries.
Change-Id: Idcc607a4a592dbbf80bd79cdfec429cb397b7f68
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/98041
Reviewed-by: Siva Annamalai <asiva@google.com>
Commit-Queue: Aart Bik <ajcbik@google.com>
Also further refactors switch selection from naming.
The JIT stress execution modes don't really need
their own visible name (you cannot really control
which stress test to use anyway with --mode), so it's
cleaner to remove the idea of controlling switches
altogether.
Change-Id: I98aa71ce8653013fb45a4c482d7b4c5a02143a55
Reviewed-on: https://dart-review.googlesource.com/c/92386
Reviewed-by: Siva Annamalai <asiva@google.com>
Commit-Queue: Aart Bik <ajcbik@google.com>
Rationale:
The fuzz test constructors were getting a bit convoluted
with mode specific setup. This CL refactors the flag
and mode name setup into the factory method, making
all constructors small again.
Change-Id: I5fd34e089315c89e674c7b28a4f298143fbeaeea
Reviewed-on: https://dart-review.googlesource.com/c/92380
Reviewed-by: Martin Kustermann <kustermann@google.com>
Commit-Queue: Aart Bik <ajcbik@google.com>
Rationale:
Refactor DartFuzz so that long lists of values appear
in separate file, making the actual fuzzing code easier
to read. Also, this prepares generating some of the
lists automaticaly (such a library methods). Note that
*no* version bump is required, since this refactoring
does not change behavior.
Change-Id: Ic58eb7bc1aa63f48ec0d37e3c2399917786086bd
Reviewed-on: https://dart-review.googlesource.com/c/87266
Reviewed-by: Ryan Macnak <rmacnak@google.com>
Commit-Queue: Aart Bik <ajcbik@google.com>
Rationale:
With recent refactoring, we need to give js a tag,
which actually makes the naming more consistent
(even though path for js is computed slightly differently).
Change-Id: I5649f38ae41c9bf133629f8a0602f03be99ac523
Reviewed-on: https://dart-review.googlesource.com/c/86945
Reviewed-by: Ryan Macnak <rmacnak@google.com>
Commit-Queue: Aart Bik <ajcbik@google.com>
Rationale:
The output for output divergences is too lenghty to
report (and should be reproducable anyway). However,
for any other divergence, we want to have a better
clue on what went wrong, since this may indicate
an infrastructure problem that is harder to reproduce.
Change-Id: I20e14a753048406fad6cbd55a270bf6958920915
Reviewed-on: https://dart-review.googlesource.com/c/86000
Reviewed-by: Alexander Thomas <athom@google.com>
Commit-Queue: Aart Bik <ajcbik@google.com>
Rationale:
We get pretty good coverage on unoptimized path for JIT,
but the optimized path depends heavily on whether functions
are called often in the fuzz generated code. This mode
adds coverage of going quicker into the optimized path.
Note:
This mode already exposed an issue with DEBUG JIT.
https://github.com/dart-lang/sdk/issues/35196
Change-Id: Ib32b4ba449cb7b2b777d669ef264742aa44a9ccc
Reviewed-on: https://dart-review.googlesource.com/c/84680
Reviewed-by: Ryan Macnak <rmacnak@google.com>
Commit-Queue: Aart Bik <ajcbik@google.com>
Rationale:
To maximize CPU utilitization during fuzzing runs,
we now use a time-out on all the individual fuzz
testing runs (rather than repeat based). This way,
the "faster" tests will cover more ground, while
the "slower" straggler tests will not break the test
with unnecessary time-outs at cluster level.
Change-Id: I5f0f9646da3fbd8b361a7ea43444b1896a45b57f
Reviewed-on: https://dart-review.googlesource.com/c/84047
Commit-Queue: Aart Bik <ajcbik@google.com>
Reviewed-by: Alexander Thomas <athom@google.com>