Ether is sent with .transfer() or .send(), which forward only 2300 gas. Recipients that are smart-contract wallets (multisigs, account-abstraction, proxies) often need more gas in their receive hook, so payments to them revert — breaking withdrawals for a growing class of users.
// payable(user).transfer(amount); // user is a Gnosis Safe whose receive() costs > 2300 gas // -> the transfer reverts, the user can never withdraw.
(bool ok, ) = payable(to).call{value: amount}("");
require(ok, "transfer failed"); // forwards all remaining gas + reentrancy guard
Largest recorded losses in the same failure class — related, not the same bug:
The SaferICO scanner runs 201 detectors over your Solidity source, SAFE-0143 among them. Paste an address or the source itself — a small per-scan fee, shown before you sign, or unlimited on any plan.