这是indexloc提供的服务,不要输入任何密码
Skip to content

Model-based deterministic phase-safety fuzzer for the Flutter Engine (SPEC → DetHarness → ModelFuzzer → Shrinker → Diff-fuzz)

Notifications You must be signed in to change notification settings

yunseoLee0343/flutter-engine-fuzzer

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 

Repository files navigation

Flutter Engine Phase-Safety Fuzzer

Model-based deterministic fuzzer that reads Flutter Engine source, formalizes its rendering pipeline as a state machine,
and explores interleavings and event combinations across UI/Raster/IO threads.
Detects phase re-entry, scheduling, and frame pipeline violations automatically under a reproducible harness.
Includes Shrinker, Diff-fuzz, and Coverage metrics for regression-proof engine validation.


Index

  1. Why We Built This
  2. Key Features
  3. Architecture

Why We Built This

Flutter Engine runs a multi-threaded rendering pipeline (UI / Raster / IO) with asynchronous scheduling.
Tiny shifts in timing or overlapping events can trigger subtle, hard-to-reproduce bugs — for example,
flutter/flutter#104798,
where an unexpected scheduling overlap between frame submission and layout invalidation caused inconsistent rendering.

Traditional parameter fuzzing cannot reveal these phase-level violations,
because they depend on interleavings and event ordering, not value ranges.
We built a deterministic, model-based fuzzer that systematically explores this interaction space
verifying the engine’s phase safety, scheduling invariants, and frame pipeline correctness directly from source code.


Key Features

  • Source-based state model from engine internals (SchedulerBinding, PipelineOwner, Rasterizer)
  • Deterministic harness: fake clock, per-thread queue control, replayable events
  • Model-based fuzzing: explore valid phase transitions systematically
  • Multi-layer oracles: phase guards, consistency, performance checks
  • Diff-fuzz & Shrinker: detect regressions and auto-minimize reproductions

Architecture

/engine-model   → SPEC.md / SPEC.json (state machine & invariants)
/harness        → det_harness.dart (time/thread/input control)
/fuzzer         → model_fuzzer.dart, shrinker.py, diff_runner.dart
/oracles        → phase_guard.dart, consistency_checks.dart
/coverage       → coverage_counters.dart, CoverageReport.md

About

Model-based deterministic phase-safety fuzzer for the Flutter Engine (SPEC → DetHarness → ModelFuzzer → Shrinker → Diff-fuzz)

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published