The most famous class. A reentrancy bug lets an attacker re-enter the contract before state updates from the first call settle, draining funds. The 2016 DAO hack (~$50M, 3.6M ETH) was a reentrancy, and it split Ethereum into Ethereum and Ethereum Classic.
Re-entering before the balance updates
The vault sends ETH before it zeroes the balance. The attacker’s contract receives the ETH and calls withdraw() again, and every re-entry still reads the old balance. Zeroing the balance before the call (checks-effects-interactions) closes the loop.