Goto文
1990年1月15日に起きた、AT&Tの長距離電話網の停止 (crash) は、break文による脱出先の勘違いによるものであった。en:List of software bugs#Telecommunicationsも参照。
そもそもソフトウェアの制御パステストを十分に実施していなかったせいで不具合が発見されなかったことが障害につながったのだが、適切な名前のラベルを用意し、ループ脱出にgotoを使っていれば避けられたバグでもあった。
アップルのSSL/TLS実装で発見された脆弱性CVE-2014-1266には、goto failという通称がある。goto文の誤った記述により、本来必要な署名検証処理が実行されずに処理成功として扱ってしまうというものであった。
ただし、このバグを正確に表現すると以下のような原因の複合であり、gotoは「たまたまそこにあった文がgotoだった」と捉えるのが普通のプログラマの感覚である。すなわち、
if文の帰結節に、ブロック(「複文」)だけでなく、「式文」などの単なる「文」も書ける、というALGOLやC言語の構文
そのために、インデントによる見た目と、真の構造が一致していない、というミスリード状態に気が付きにくいこと
そのために、1個目のgoto文により、一見では到達不能コードに見える2個目のgoto文が、到達可能だったこと
そのために別の、セキュリティ的に絶対に実行されなければならないコードが、到達不能コードになっていたこと
2個目のgoto文は、到達不能コードだと思うのならば、放置せずに削除しなければならなかったこと
一方で、2個目のgoto文は実際には到達不能コードではなかったので、第三者には、その部分を見ただけでは、削除して良いのか判断不可能だったこと