``` fn f(-a: @int) { fail; } fn main() { let a = @0; f(a); } ``` a is double-freed because the cleanup revocations don't take effect until after the function is called