Radar · Solidity · Archive · Week 37 · Sep 7 – 13, 2026
Spill Slot Collision Across Mutual Recursion Bug
Worth knowingcompiler
- What changed
- The stack‑to‑memory mover now correctly handles spill slots when mutual recursion is involved, preventing accidental slot collisions.
- Production impact
- The source does not say.
- Try it
- Deploy a pair of mutually recursive functions that use local variables and observe that no slot collision occurs.
- Source
- github.com/argotorg/solidity/releases/tag/v0.8.37
Understand it, then run it
Mutual recursion is when two or more functions call each other. When a function is compiled, the compiler puts temporary values in memory slots. If two recursive functions are active at the same time, the compiler had to give them different slots. Before Solidity 0.8.37 the slot‑allocation logic could give the same slot to two active functions, so one function would overwrite the other’s data. The new release fixes that logic so each active function gets its own slot and the data stays intact.
Written by gpt-oss-20b from the linked source · claims checked against the sources · archive, not individually reviewed