1 Real-time and safety-critical software
This chapter covers
- The unique challenges of software that must be both correct and timely
- Why C++ dominates safety-critical development
- Why memory safety should matter to all C++ developers
- The C++ safety paradox
- Building memory-safe C++ and the tools you'll need
On 19 July 2024, a content update to CrowdStrike's Falcon sensor crashed approximately 8.5 million Windows devices worldwide, which Microsoft put at less than one percent of all Windows machines (Microsoft, "Helping our customers through the CrowdStrike outage," 2024: https://blogs.microsoft.com/blog/2024/07/20/helping-our-customers-through-the-crowdstrike-outage/). Hospitals cancelled surgeries. Airlines grounded flights. Emergency services lost their dispatch systems. CrowdStrike's root cause analysis named the mechanism precisely: an interprocess communication (IPC) template type declared 21 input parameter fields. The integration code supplied 20. With no runtime bounds check, the content interpreter reached for a 21st entry that was never there, and the system crashed (CrowdStrike, "External Technical Root Cause Analysis: Channel File 291," 2024: https://www.crowdstrike.com/wp-content/uploads/2024/08/Channel-File-291-Incident-Root-Cause-Analysis-08.06.2024.pdf).