25 Sep '13, 7pm
Another Heisenbug debunked! "The Craziest F***ing Bug I've Ever Seen"
To be honest, the fact that a vcall produces a different exception type from an fcall or call feels like a bad design to me for two reasons: removing “self” from a no-arg call against self should not cause it to raise a different exception (and really, all missing-method exceptions should be the same regardless of how they’re produced), and it requires tracking that nonsense all the way through to the built-in method_missing, which makes the call logic more complicated to implement for no good reason. The latter reason is clearly evidenced by the fact that a minute bug in the code can lead to drastically different behavior that’s really tricky to hunt down. If vcall always produced the same error fcall/call produce, these bugs would never happen.