Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

dart-fuzz: divergence between DebugX64 and ReleaseSIMARM #47295

Closed
alexmarkov opened this issue Sep 27, 2021 · 1 comment
Closed

dart-fuzz: divergence between DebugX64 and ReleaseSIMARM #47295

alexmarkov opened this issue Sep 27, 2021 · 1 comment
Assignees
Labels
area-vm Use area-vm for VM related issues, including code coverage, and the AOT and JIT backends. dartfuzz Found with Dart fuzzing (DartFuzz, libFuzzer, etc.) gardening

Comments

@alexmarkov
Copy link
Contributor

SHARD 56 OF 100

**
**** Dart Fuzz Testing Session
**

Fuzz Version      : 1.92
Dart SDK Revision : 
Isolates          : 8
Tests             : 1000
Time              : 2700 seconds
True Divergence   : true
Show Stats        : false
Dart Dev          : /b/s/w/ir

Isolate (/b/s/w/itejouxk47/dart_fuzzHPPWWI) FP NO-FFI FLAT : JIT-ReleaseSIMARM64 - JIT-DEPOPTEVERY-68-ReleaseSIMARM64C: start

Isolate (/b/s/w/itejouxk47/dart_fuzzQEYPTY) NO-FP NO-FFI FLAT : JIT-O3-SLOWPATH-DebugX64C - JIT-DebugSIMARM64: start

Isolate (/b/s/w/itejouxk47/dart_fuzzBRQYKE) NO-FP NO-FFI FLAT : JIT-ReleaseX64C - JIT-noVFP-O3-DET-DebugSIMARM: start

Isolate (/b/s/w/itejouxk47/dart_fuzzBGJFOK) NO-FP NO-FFI FLAT : JIT-DebugSIMARM64 - JIT-DET-ReleaseX64C: start

Isolate (/b/s/w/itejouxk47/dart_fuzzLTRWID) NO-FP NO-FFI FLAT : JIT-SLOWPATH-DebugX64 - JIT-MARKSWEEPEVERY-612-O3-ReleaseSIMARM: start

Isolate (/b/s/w/itejouxk47/dart_fuzzFBYUBT) NO-FP NO-FFI FLAT : JIT-O3-SLOWPATH-DebugSIMARM64 - AOT-O3-SLOWPATH-DebugX64: start

Isolate (/b/s/w/itejouxk47/dart_fuzzQYWQEG) NO-FP NO-FFI FLAT : AOT-SLOWPATH-DebugX64 - JIT-SLOWPATH-DebugSIMARM64: start

Isolate (/b/s/w/itejouxk47/dart_fuzzXATCND) NO-FP NO-FFI NO-FLAT : AOT-O3-DebugX64 - JIT-STACKTRACEEVERY-75-O3-ReleaseIA32: start

Isolate (/b/s/w/itejouxk47/dart_fuzzLTRWID) NO-FP NO-FFI FLAT : JIT-SLOWPATH-DebugX64 - JIT-MARKSWEEPEVERY-612-O3-ReleaseSIMARM: busy @19 601832ms....

Isolate (/b/s/w/itejouxk47/dart_fuzzHPPWWI) FP NO-FFI FLAT : JIT-ReleaseSIMARM64 - JIT-DEPOPTEVERY-68-ReleaseSIMARM64C: busy @7 606092ms....

Isolate (/b/s/w/itejouxk47/dart_fuzzXATCND) NO-FP NO-FFI NO-FLAT : AOT-O3-DebugX64 - JIT-STACKTRACEEVERY-75-O3-ReleaseIA32: busy @8 606177ms....

Isolate (/b/s/w/itejouxk47/dart_fuzzQYWQEG) NO-FP NO-FFI FLAT : AOT-SLOWPATH-DebugX64 - JIT-SLOWPATH-DebugSIMARM64: busy @7 617275ms....

Isolate (/b/s/w/itejouxk47/dart_fuzzBGJFOK) NO-FP NO-FFI FLAT : JIT-DebugSIMARM64 - JIT-DET-ReleaseX64C: busy @11 619909ms....

Isolate (/b/s/w/itejouxk47/dart_fuzzBRQYKE) NO-FP NO-FFI FLAT : JIT-ReleaseX64C - JIT-noVFP-O3-DET-DebugSIMARM: busy @17 633241ms....

Isolate (/b/s/w/itejouxk47/dart_fuzzQEYPTY) NO-FP NO-FFI FLAT : JIT-O3-SLOWPATH-DebugX64C - JIT-DebugSIMARM64: busy @12 660758ms....

Isolate (/b/s/w/itejouxk47/dart_fuzzFBYUBT) NO-FP NO-FFI FLAT : JIT-O3-SLOWPATH-DebugSIMARM64 - AOT-O3-SLOWPATH-DebugX64: busy @7 664295ms....

Isolate (/b/s/w/itejouxk47/dart_fuzzXATCND) NO-FP NO-FFI NO-FLAT : AOT-O3-DebugX64 - JIT-STACKTRACEEVERY-75-O3-ReleaseIA32: busy @16 1233940ms....

Isolate (/b/s/w/itejouxk47/dart_fuzzQYWQEG) NO-FP NO-FFI FLAT : AOT-SLOWPATH-DebugX64 - JIT-SLOWPATH-DebugSIMARM64: busy @14 1238361ms....

Isolate (/b/s/w/itejouxk47/dart_fuzzLTRWID) NO-FP NO-FFI FLAT : JIT-SLOWPATH-DebugX64 - JIT-MARKSWEEPEVERY-612-O3-ReleaseSIMARM: busy @38 1243159ms....

Isolate (/b/s/w/itejouxk47/dart_fuzzBGJFOK) NO-FP NO-FFI FLAT : JIT-DebugSIMARM64 - JIT-DET-ReleaseX64C: busy @22 1246901ms....

Isolate (/b/s/w/itejouxk47/dart_fuzzQEYPTY) NO-FP NO-FFI FLAT : JIT-O3-SLOWPATH-DebugX64C - JIT-DebugSIMARM64: busy @23 1261791ms....

Isolate (/b/s/w/itejouxk47/dart_fuzzBRQYKE) NO-FP NO-FFI FLAT : JIT-ReleaseX64C - JIT-noVFP-O3-DET-DebugSIMARM: busy @34 1264740ms....

Isolate (/b/s/w/itejouxk47/dart_fuzzHPPWWI) FP NO-FFI FLAT : JIT-ReleaseSIMARM64 - JIT-DEPOPTEVERY-68-ReleaseSIMARM64C: busy @15 1287145ms....

Isolate (/b/s/w/itejouxk47/dart_fuzzFBYUBT) NO-FP NO-FFI FLAT : JIT-O3-SLOWPATH-DebugSIMARM64 - AOT-O3-SLOWPATH-DebugX64: busy @14 1309735ms....

Isolate (/b/s/w/itejouxk47/dart_fuzzLTRWID) NO-FP NO-FFI FLAT : JIT-SLOWPATH-DebugX64 - JIT-MARKSWEEPEVERY-612-O3-ReleaseSIMARM: !DIVERGENCE! 1.92:3705013680 (output)

out1:

foo3() throws
Stack Overflow
RangeError (😀7M ):  😀: index should be less than 18: 17
fooE1(var109).foo1_Extension0() throws
Reading static variable 'eXUZ♥0' during its initialization
var39.foo2_Extension1() throws
Expando:L😀N1lW
var39.foo2_Extension2() throws
var145.foo3_Extension0() throws
[[00000000, 00000000, 00000000, 00000000], [00000000, 00000000, 00000000, 00000000], [00000000, 00000000, 00000000, 00000000], [00000000, 00000000, 00000000, 00000000], [00000000, 00000000, 00000000, 00000000], [00000000, 00000000, 00000000, 00000000], [00000000, 00000000, 00000000, 00000000], [00000000, 00000000, 00000000, 00000000], [00000000, 00000000, 00000000, 00000000], [00000000, 00000000, 00000000, 00000000], [00000000, 00000000, 00000000, 00000000], [00000000, 00000000, 00000000, 00000000], [00000000, 00000000, 00000000, 00000000], [00000000, 00000000, 00000000, 00000000], [00000000, 00000000, 00000000, 00000000], [00000000, 00000000, 00000000, 00000000], [00000000, 00000000, 00000000, 00000000], [00000000, 00000000, 00000000, 00000000], [00000000, 00000000, 00000000, 00000000], [00000000, 00000000, 00000000, 00000000], [00000000, 00000000, 00000000, 00000000], [00000000, 00000000, 00000000, 00000000], [00000000, 00000000, 00000000, 00000000], [00000000, 00000000, 00000000, 00000000], [00000000, 00000000, 00000000, 00000000], [00000000, 00000000, 00000000, 00000000], [00000000, 00000000, 00000000, 00000000], [00000000, 00000000, 00000000, 00000000], [00000000, 00000000, 00000000, 00000000]]
RangeError (RuDL): g: index should be less than 22: 23
var51.foo4_Extension0() throws
fooE4(var51).foo4_Extension1() throws
var51.foo4_Extension2() throws
Assertion failed: 29
X0() throws
XE0(X0()).foo0_Extension0 throws
XE0(X0()).foo0_Extension1 throws
X1().foo1_0 throws
Instance of 'CastError'
Instance of 'CastError'
Instance of 'CastError'
Instance of 'CastError'
Instance of 'CastError'
Instance of 'CastError'
Instance of 'CastError'
Instance of 'CastError'
Instance of 'CastError'
Instance of 'CastError'
Instance of 'CastError'
Instance of 'CastError'
Instance of 'CastError'
Instance of 'CastError'
Instance of 'CastError'
Instance of 'CastError'
Instance of 'CastError'
Instance of 'CastError'
Instance of 'CastError'
Instance of 'CastError'
Instance of 'CastError'
Instance of 'CastError'
Instance of 'CastError'
Instance of 'CastError'
Instance of 'CastError'
Instance of 'CastError'
Instance of 'CastError'
Instance of 'CastError'
Instance of 'CastError'
Instance of 'CastError'
Instance of 'CastError'
Instance of 'CastError'
Instance of 'CastError'
Instance of 'CastError'
Instance of 'CastError'
Instance of 'CastError'
Instance of 'CastError'
Instance of 'CastError'
Instance of 'CastError'
Instance of 'CastError'
Instance of 'CastError'
Instance of 'CastError'
Instance of 'CastError'
Instance of 'CastError'
Instance of 'CastError'
Instance of 'CastError'
Instance of 'CastError'
Instance of 'CastError'
Instance of 'CastError'
Instance of 'CastError'
Instance of 'CastError'
Instance of 'CastError'
Instance of 'CastError'
Instance of 'CastError'
Instance of 'CastError'
Instance of 'CastError'
Instance of 'CastError'
Instance of 'CastError'
Instance of 'CastError'
Instance of 'CastError'
Instance of 'CastError'
Instance of 'CastError'
Instance of 'CastError'
Instance of 'CastError'
Instance of 'CastError'
Instance of 'CastError'
Instance of 'CastError'
Instance of 'CastError'
Instance of 'CastError'
Instance of 'CastError'
Instance of 'CastError'
Instance of 'CastError'
Instance of 'CastError'
Instance of 'CastError'
Instance of 'CastError'
Instance of 'CastError'
Instance of 'CastError'
Instance of 'CastError'
Instance of 'CastError'
Instance of 'CastError'
Instance of 'CastError'
Instance of 'CastError'
Instance of 'CastError'
Instance of 'CastError'
Instance of 'CastError'
Instance of 'CastError'
Instance of 'CastError'
Instance of 'CastError'
Instance of 'CastError'
Instance of 'CastError'
Instance of 'CastError'
Instance of 'CastError'
Instance of 'CastError'
Instance of 'CastError'
Instance of 'CastError'
Instance of 'CastError'
Instance of 'CastError'
Instance of 'CastError'
Instance of 'CastError'
Instance of 'CastError'
Instance of 'CastError'
Instance of 'CastError'
Instance of 'CastError'
Instance of 'CastError'
Instance of 'CastError'
Instance of 'CastError'
Instance of 'CastError'
Instance of 'CastError'
Instance of 'CastError'
Instance of 'CastError'
Instance of 'CastError'
Instance of 'CastError'
Instance of 'CastError'
Instance of 'CastError'
Instance of 'CastError'
Instance of 'CastError'
Instance of 'CastError'
Instance of 'CastError'
Instance of 'CastError'
Instance of 'CastError'
Instance of 'CastError'
Instance of 'CastError'
Instance of 'CastError'
Instance of 'CastError'
Instance of 'CastError'
Instance of 'CastError'
Instance of 'CastError'
Instance of 'CastError'
Instance of 'CastError'
Instance of 'CastError'
Instance of 'CastError'
Instance of 'CastError'
Instance of 'CastError'
Instance of 'CastError'
Instance of 'CastError'
Instance of 'CastError'
Instance of 'CastError'
Instance of 'CastError'
Instance of 'CastError'
Instance of 'CastError'
Instance of 'CastError'
Instance of 'CastError'
Instance of 'CastError'
Instance of 'CastError'
Instance of 'CastError'
Instance of 'CastError'
Instance of 'CastError'
Instance of 'CastError'
Instance of 'CastError'
Instance of 'CastError'
Instance of 'CastError'
Instance of 'CastError'
Instance of 'CastError'
Instance of 'CastError'
Instance of 'CastError'
Instance of 'CastError'
Instance of 'CastError'
Instance of 'CastError'
Instance of 'CastError'
Instance of 'CastError'
Instance of 'CastError'
Instance of 'CastError'
Instance of 'CastError'
Instance of 'CastError'
Instance of 'CastError'
Instance of 'CastError'
Instance of 'CastError'
Instance of 'CastError'
Instance of 'CastError'
Instance of 'CastError'
Instance of 'CastError'
Instance of 'CastError'
Instance of 'CastError'
Instance of 'CastError'
Instance of 'CastError'
Instance of 'CastError'
Instance of 'CastError'
Instance of 'CastError'
Instance of 'CastError'
Instance of 'CastError'
Instance of 'CastError'

out2:

foo3() throws
Stack Overflow
RangeError (😀7M ):  😀: index should be less than 18: 17
fooE1(var109).foo1_Extension0() throws
Reading static variable 'eXUZ♥0' during its initialization
var39.foo2_Extension1() throws
Expando:L😀N1lW
var39.foo2_Extension2() throws
var145.foo3_Extension0() throws
[[00000000, 00000000, 00000000, 00000000], [00000000, 00000000, 00000000, 00000000], [00000000, 00000000, 00000000, 00000000], [00000000, 00000000, 00000000, 00000000], [00000000, 00000000, 00000000, 00000000], [00000000, 00000000, 00000000, 00000000], [00000000, 00000000, 00000000, 00000000], [00000000, 00000000, 00000000, 00000000], [00000000, 00000000, 00000000, 00000000], [00000000, 00000000, 00000000, 00000000], [00000000, 00000000, 00000000, 00000000], [00000000, 00000000, 00000000, 00000000], [00000000, 00000000, 00000000, 00000000], [00000000, 00000000, 00000000, 00000000], [00000000, 00000000, 00000000, 00000000], [00000000, 00000000, 00000000, 00000000], [00000000, 00000000, 00000000, 00000000], [00000000, 00000000, 00000000, 00000000], [00000000, 00000000, 00000000, 00000000], [00000000, 00000000, 00000000, 00000000], [00000000, 00000000, 00000000, 00000000], [00000000, 00000000, 00000000, 00000000], [00000000, 00000000, 00000000, 00000000], [00000000, 00000000, 00000000, 00000000], [00000000, 00000000, 00000000, 00000000], [00000000, 00000000, 00000000, 00000000], [00000000, 00000000, 00000000, 00000000], [00000000, 00000000, 00000000, 00000000], [00000000, 00000000, 00000000, 00000000]]
RangeError (RuDL): g: index should be less than 22: 23
var51.foo4_Extension0() throws
fooE4(var51).foo4_Extension1() throws
var51.foo4_Extension2() throws
Assertion failed: 29
X0() throws
XE0(X0()).foo0_Extension0 throws
XE0(X0()).foo0_Extension1 throws
X1().foo1_0 throws
Instance of 'CastError'
Instance of 'CastError'
Instance of 'CastError'
Instance of 'CastError'
Instance of 'CastError'
Instance of 'CastError'
Instance of 'CastError'
Instance of 'CastError'
Instance of 'CastError'
Instance of 'CastError'
Instance of 'CastError'
Instance of 'CastError'
Instance of 'CastError'
Instance of 'CastError'
Instance of 'CastError'
Instance of 'CastError'
Instance of 'CastError'
Instance of 'CastError'
Instance of 'CastError'
Instance of 'CastError'
Instance of 'CastError'
Instance of 'CastError'
Instance of 'CastError'
Instance of 'CastError'
Instance of 'CastError'
Instance of 'CastError'
Instance of 'CastError'
Instance of 'CastError'
Instance of 'CastError'
Instance of 'CastError'
Instance of 'CastError'
Instance of 'CastError'
Instance of 'CastError'
Instance of 'CastError'
Instance of 'CastError'
Instance of 'CastError'
Instance of 'CastError'
Instance of 'CastError'
Instance of 'CastError'
Instance of 'CastError'
Instance of 'CastError'
Instance of 'CastError'
Instance of 'CastError'
Instance of 'CastError'
Instance of 'CastError'
Instance of 'CastError'
Instance of 'CastError'
Instance of 'CastError'
Instance of 'CastError'
Instance of 'CastError'
Instance of 'CastError'
Instance of 'CastError'
Instance of 'CastError'
Instance of 'CastError'
Instance of 'CastError'
Instance of 'CastError'
Instance of 'CastError'
Instance of 'CastError'
Instance of 'CastError'
Instance of 'CastError'
Instance of 'CastError'
Instance of 'CastError'
Instance of 'CastError'
Instance of 'CastError'
Instance of 'CastError'
Instance of 'CastError'
Instance of 'CastError'
Instance of 'CastError'
Instance of 'CastError'
Instance of 'CastError'
Instance of 'CastError'
Instance of 'CastError'
Instance of 'CastError'
Instance of 'CastError'
Instance of 'CastError'
Instance of 'CastError'
Instance of 'CastError'
Instance of 'CastError'
Instance of 'CastError'
Instance of 'CastError'
Instance of 'CastError'
Instance of 'CastError'
Instance of 'CastError'
Instance of 'CastError'
Instance of 'CastError'
Instance of 'CastError'
Instance of 'CastError'
Instance of 'CastError'
Instance of 'CastError'
Instance of 'CastError'
Instance of 'CastError'
Instance of 'CastError'
Instance of 'CastError'
Instance of 'CastError'
Instance of 'CastError'
Instance of 'CastError'
Instance of 'CastError'
Instance of 'CastError'
Instance of 'CastError'
Instance of 'CastError'
Instance of 'CastError'
Instance of 'CastError'
Instance of 'CastError'
Instance of 'CastError'
Instance of 'CastError'
Instance of 'CastError'
Instance of 'CastError'
Instance of 'CastError'
Instance of 'CastError'
Instance of 'CastError'
Instance of 'CastError'
Instance of 'CastError'
Instance of 'CastError'
Instance of 'CastError'
Instance of 'CastError'
Instance of 'CastError'
Instance of 'CastError'
Instance of 'CastError'
Instance of 'CastError'
Instance of 'CastError'
Instance of 'CastError'
Instance of 'CastError'
Instance of 'CastError'
Instance of 'CastError'
Instance of 'CastError'
Instance of 'CastError'
Instance of 'CastError'
Instance of 'CastError'
Instance of 'CastError'
Instance of 'CastError'
Instance of 'CastError'
Instance of 'CastError'
Instance of 'CastError'
Instance of 'CastError'
Instance of 'CastError'
Instance of 'CastError'
Instance of 'CastError'
Instance of 'CastError'
Instance of 'CastError'
Instance of 'CastError'
Instance of 'CastError'
Instance of 'CastError'
Instance of 'CastError'
Instance of 'CastError'
Instance of 'CastError'
Instance of 'CastError'
Instance of 'CastError'
Instance of 'CastError'
Instance of 'CastError'
Instance of 'CastError'
Instance of 'CastError'
Instance of 'CastError'
Instance of 'CastError'
Instance of 'CastError'
Instance of 'CastError'
Instance of 'CastError'
Instance of 'CastError'
Instance of 'CastError'
Instance of 'CastError'
Instance of 'CastError'
Instance of 'CastError'
Instance of 'CastError'
Instance of 'CastError'
Instance of 'CastError'
Instance of 'CastError'
Instance of 'CastError'
Instance of 'CastError'
Instance of 'CastError'
Instance of 'CastError'
Instance of 'CastError'
Instance of 'CastError'
Instance of 'CastError'
Instance of 'CastError'
Instance of 'CastError'
Instance of 'CastError'
Instance of 'CastError'
Instance of 'CastError'
Instance of 'CastError'
Instance of 'CastError'
Instance of 'CastError'
Instance of 'CastError'

-- BEGIN REPRODUCE  --

DART SDK REVISION: 

dart runtime/tools/dartfuzz/dartfuzz.dart --no-fp --no-ffi --flat --seed 3705013680 fuzz.dart

-- RUN 1 --

out/DebugX64/dart --use-slow-path --old_gen_heap_size=128 /b/s/w/itejouxk47/dart_fuzzLTRWID/fuzz.dart

-- RUN 2 --

out/ReleaseSIMARM/dart --gc_every=612 --use_compactor=false --optimization_level=3 --old_gen_heap_size=128 /b/s/w/itejouxk47/dart_fuzzLTRWID/fuzz.dart

-- END REPRODUCE  --

I was able to reproduce the problem at b8533e6.

ReleaseSIMARM prints 12 more

Instance of 'CastError'
@alexmarkov alexmarkov added area-vm Use area-vm for VM related issues, including code coverage, and the AOT and JIT backends. gardening dartfuzz Found with Dart fuzzing (DartFuzz, libFuzzer, etc.) labels Sep 27, 2021
@alexmarkov alexmarkov self-assigned this Sep 27, 2021
@alexmarkov
Copy link
Contributor Author

In this case dart-fuzz generates a program which runs out of stack and throws StackOverflowError. The error is caught and execution continues. However, DebugX64 and ReleaseSIMARM have different stack and frame sizes, and StackOverflowError happens later for ReleaseSIMARM, so ReleaseSIMARM is able to print more before SOE happens and the output is different.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
area-vm Use area-vm for VM related issues, including code coverage, and the AOT and JIT backends. dartfuzz Found with Dart fuzzing (DartFuzz, libFuzzer, etc.) gardening
Projects
None yet
Development

No branches or pull requests

1 participant