ASAN-instrumented build of Skia — Chrome's 2D graphics and image-decoding library. Rebuilt automatically whenever the revision Chrome uses changes.
chrome.lock pins the exact Skia revision a specific Chrome stable version
ships (Skia is pinned directly in Chrome DEPS). The
track-chrome workflow runs every 6 hours: it
resolves the latest Chrome stable, reads the Skia SHA from Chrome DEPS, and
when it has changed it bumps chrome.lock, tags skia-<sha8>, and
triggers build. Each skia-<sha8> tag
becomes a GitHub release.
Each release is published at its skia-<sha8> tag as one zip per
platform (so the full include/ header tree is preserved without name
collisions in GitHub's flat asset namespace). Each zip contains:
lib/libskia.a(Linux) /lib/skia.lib(Windows): the ASAN static Skia library — link it into your own harness. This is the primary artifact for fuzzing. (Skia is shipped static only; no dynamic ASAN lib.)lib/include/: the full Skia public header tree.fuzz/fuzz(Linux only): the Skia multiplexed fuzz driver (ownmain(), replays seed files). Windows omits it: Skia's GN leavesis_clang=falsefor the MSVC-ABI toolchain, so theassert(is_clang)fuzz-driver targets are unavailable there. SanitizerCoverage stays on viafuzzer-no-linkso a downstream libFuzzer / WinAFL harness still gets coverage feedback.
Both platforms link the static ASAN runtime (depot_tools' bundled clang
ships the full static sanitizer runtime). The libraries and the fuzz driver
are self-contained — no clang_rt.asan_dynamic DLL is needed at runtime.
- Linux:
fuzz/fuzzis a ready-to-run ASAN fuzz executable with its ownmain()(replays seeds, not a libFuzzer engine). - Windows (AFL++ / WinAFL): link
lib/skia.libinto a harness exposing a target function, then point WinAFL at that function. The static ASAN lib is self-contained.
These builds provide the ASAN-instrumented library to target. They do not bundle the AFL++ / WinAFL runner itself (a separate DynamoRIO-based toolchain on Windows).