Catching Real-time Safety Violations
David Rowland
When you’re executing code with real-time requirements (or even performance critical code) you should avoid unbounded calls like locks and system calls (including memory management). Unfortunately neither the C++ standard nor most libraries make any guarantees about how real-time safe various function calls are. Sometimes we can infer this but it’s difficult and error prone.
This talk aims to look at the different strategies we can take to mitigate, or at least minimise, real-time safety violations by calling into unbounded code. It will first look at external tools and how these can be deployed to check running code. Next, code transformations and interposing via the use of libraries will be investigated. Finally there will be a look into some new, currently experimental tools that aim to simplify this process with the flick of a compiler switch.
Across this talk, the performance impacts of various techniques will be discussed as well as how you might deal with multiple threads where only some are considered real-time contexts. This talk aims to give you the tools required to ensure the real-time safety guarantees of your code base.
David Rowland
Dave Rowland is the CTO at Audio Squadron (owning brands such as Tracktion and Prism Sound), working primarily on the digital audio workstation Waveform, and the engine it runs on. David focuses on the architecture and real-time elements of the software.
In academia, David has taught on several modules at the University of the West of England on programming for audio. David has a passion for modern C++ standards and their use to improve code safety and brevity, has spoken at Meeting C++, C++ on Sea, C++ Online and is a regular speaker at the Audio Developer Conference and related monthly meetup. Past presentations: https://github.com/drowaudio/presentations/