sdk icon indicating copy to clipboard operation
sdk copied to clipboard

[vm] vm flag `--reload-every=` in isolation doesn't work

Open dcharkes opened this issue 1 year ago • 0 comments

$ out/DebugX64/dart --reload-every=4 tests/ffi/structs_test.dart
kernel-service: Error: Unhandled exception:
Bad state: No element
#0      Iterable.first (dart:core/iterable.dart:643:7)
#1      MappedIterable.first (dart:_internal/iterable.dart:382:31)
#2      lookupOrBuildNewIncrementalCompiler (file:///usr/local/google/home/dacoharkes/dart-sdk/sdk/pkg/vm/bin/kernel_service.dart:463:45)
#3      _processLoadRequest (file:///usr/local/google/home/dacoharkes/dart-sdk/sdk/pkg/vm/bin/kernel_service.dart:872:22)
#4      _RawReceivePort._handleMessage (dart:isolate-patch/isolate_patch.dart:184:12)

None of the VM tests pass this flag in isolation, it's always set as part of --hot-reload-rollback-test-mode.

Passing the flag together with all the other flags also doesn't work.

$ out/DebugX64/dart --identity_reload --reload_every=4 --reload_every_optimized=false --reload_every_back_off --check_reloaded --reload_force_rollback tests/ffi/structs_test.dart
kernel-service: Error: Unhandled exception:
Bad state: No element
#0      Iterable.first (dart:core/iterable.dart:643:7)
#1      MappedIterable.first (dart:_internal/iterable.dart:382:31)
#2      lookupOrBuildNewIncrementalCompiler (file:///usr/local/google/home/dacoharkes/dart-sdk/sdk/pkg/vm/bin/kernel_service.dart:463:45)
#3      _processLoadRequest (file:///usr/local/google/home/dacoharkes/dart-sdk/sdk/pkg/vm/bin/kernel_service.dart:872:22)
#4      _RawReceivePort._handleMessage (dart:isolate-patch/isolate_patch.dart:184:12)

Running without the --reload-every simply means no reloads:

$ out/DebugX64/dart --identity_reload --reload_every_optimized=false --reload_every_back_off --reload_force_rollback tests/ffi/structs_test.dart

It might be worthwhile making the --reload-every work properly.

Also, maybe we should extend the fuzzer to pass random combinations of VM flags (marking flags which make the VM slower and only pass at most two of those), to ensure we've got some coverage of exotic combinations of VM flags.

(Found while exploring https://github.com/dart-lang/sdk/issues/54871 reproduction options.)

dcharkes avatar Feb 13 '24 11:02 dcharkes