{"id":11913,"date":"2024-01-17T12:39:34","date_gmt":"2024-01-17T17:39:34","guid":{"rendered":"https:\/\/irreal.org\/blog\/?p=11913"},"modified":"2024-01-17T12:39:34","modified_gmt":"2024-01-17T17:39:34","slug":"another-c-failure","status":"publish","type":"post","link":"https:\/\/irreal.org\/blog\/?p=11913","title":{"rendered":"Another C Failure"},"content":{"rendered":"<p>\nAs a sort of coda to <a href=\"https:\/\/irreal.org\/blog\/?p=11911\">yesterday&rsquo;s post<\/a> on the errors in the C code running the Toyota acceleration system, here&rsquo;s another <a href=\"https:\/\/read.engineerscodex.com\/p\/how-one-line-of-code-caused-a-60\">example of a spectacular failure in C code<\/a> that resulted in huge losses for AT&amp;T, caused loss of service for many phone users, and even caused the delay of hundreds of airlines flights.\n<\/p>\n<p>\nWhat&rsquo;s different in this incident was that it happened at AT&amp;T where C was invented and where there were serious testing protocols in place. Nevertheless, a single misplaced <code>break<\/code> in a switch statement caused a cascade of errors that brought down a significant portion of the AT&amp;T switching system. The first level of remediation was to fall back to the previous version of the switching software. That happened relatively quickly (about 9 hours) but it took much longer for the engineers to figure out what happened and where the error was. That took about 2 weeks.\n<\/p>\n<p>\nThe point here is not to feed the anti-C trolls or to stump for Rust, Ada, or any other supposed &ldquo;safe&rdquo; language. Rather, it&rsquo;s to underline the well known fact that even with first class engineers, any large program\u2014regardless of what language it&rsquo;s written in\u2014will inevitably have errors and some of them will be corner cases that are hard to test for.\n<\/p>\n<p>\nThe real surprise here is how few such incidents AT&amp;T experienced. Their testing and review processes really did make a difference but nothing can prevent all errors.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>As a sort of coda to yesterday&rsquo;s post on the errors in the C code running the Toyota acceleration system, here&rsquo;s another example of a spectacular failure in C code that resulted in huge losses for AT&amp;T, caused loss of &hellip; <a href=\"https:\/\/irreal.org\/blog\/?p=11913\">Continue reading <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[5],"tags":[37],"class_list":["post-11913","post","type-post","status-publish","format-standard","hentry","category-general","tag-tech"],"_links":{"self":[{"href":"https:\/\/irreal.org\/blog\/index.php?rest_route=\/wp\/v2\/posts\/11913","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/irreal.org\/blog\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/irreal.org\/blog\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/irreal.org\/blog\/index.php?rest_route=\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/irreal.org\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=11913"}],"version-history":[{"count":1,"href":"https:\/\/irreal.org\/blog\/index.php?rest_route=\/wp\/v2\/posts\/11913\/revisions"}],"predecessor-version":[{"id":11914,"href":"https:\/\/irreal.org\/blog\/index.php?rest_route=\/wp\/v2\/posts\/11913\/revisions\/11914"}],"wp:attachment":[{"href":"https:\/\/irreal.org\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=11913"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/irreal.org\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=11913"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/irreal.org\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=11913"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}