Dude, where’s my ram? An adventure in finding a ram thief in starlark land
summary
Synthetic repo with Python and C++ adds two malicious aspects: a memory‑intensive aspect that builds a single 17 MB dependency string and a CPU‑heavy action that allocates during build. Tools tried: bazel info, bazel dump, aquery (Skyframe state), Java heap histograms and Eclipse Memory Analyzer, and Bazel profile (Chrome trace). Heap dump reveals a 17 MB string coming from a configured aspect in a Skyframe executor but Bazel dump and the profiler undercount it; the constructed test reproduces crashes and shows restarts and a memory‑sensitive plateau. Recommended: collect repeated profiles in CI and diff successful vs failing runs.
AI-written summary · about
