Performance is the same thing as correctness only in hard real time.
A better analogy might be stable sort versus unstable. If you need a stable sort, and unstable one is wrong.
(Not sure if that counts as an abstraction leak, though! It's just the semantics. Unstable sort doesn't leak that it is unstable; that's its behavior. If a sort is just documented as putting items in order, an actual implementation does leak information about whether or not it is stable.)
A better analogy might be stable sort versus unstable. If you need a stable sort, and unstable one is wrong.
(Not sure if that counts as an abstraction leak, though! It's just the semantics. Unstable sort doesn't leak that it is unstable; that's its behavior. If a sort is just documented as putting items in order, an actual implementation does leak information about whether or not it is stable.)