When the compiler lies: breaking memory safety in safe Go