Goto Fail

© 2014 James Dempsey

Is there a test to put the code through its paces?
To check correctness of each of its cases?
’Cuz it just might avoid some red faces
To not ship the problem at all

Goto Fail, Go Directly To Fail
Jump over code that you should execute
Goto Fail, Go Directly To Fail
Code left unreachable and destitute

Goto Fail
Whoa, Goto Fail
Whoa, Goto Fail

Some coding style to help you cover your bases
Don’t use conditionals without curly braces
You can afford to add all those white spaces
They cost you nothin’ at all

Goto Fail, Go Directly To Fail
With language features, not the best ones devised
Goto Fail, Go Directly To Fail
Now your security has been compromised

Goto Fail
Whoa, Goto Fail
Whoa, Goto

Goto Fail, Would the bug be gone
If you recompiled with more warnings on?

Goto Fail, It’s so easy to do
When you think all’s good, but it all falls through

Ooh, Goto Fail
Ooh, Epic Fail

Don’t think your own code is some bug-free oasis
It’s prob’ly screwed up in a couple of places
The perfection that each of us chases
Is just a mirage after all

Goto Fail, Go Directly To Fail
We’ve all been there and vow never again
Goto Fail, Go Directly To Fail
But over time we let our guard down and then…

Goto Fail, Sometimes You Goto Fail
Whoa, Goto Fail
Goto Fail, Sometimes You Goto Fail


In February 2014, a SSL/TLS bug in Apple open source code was revealed and commonly called the ‘Goto Fail Bug’. The relevant code and a description of the bug is on Wikipedia.

Goto Fail debuted on March 7, 2014 at CocoaConf Chicago. A YouTube video of an acoustic version of the song was released on March 13, 2014.

( OS X / iOS )

Vocals: James Dempsey
Guitar: Gordie Freedman
Bass: Darren Minifie
Drums: Russell Bond

Music and Lyrics: James Dempsey
Recorded and Produced by Russell Bond at HowlingPoint Studios