This site is being rebuilt and some pages are out of date. For current details, write to [email protected]. This notice goes away when the rebuild is done.

No analytics unless you allow it, no tracking. This site keeps in your browser the language you pick, the theme, its colour, which site you chose, the currency on the pricing page and that you closed this notice; signing in adds session cookies. The legal page has the details.

Sign in

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