SHATTERING ILLUSIONS IN LOCK-FREE WORLDS: COMPILER/HARDWARE BEHAVIORS IN OSES AND VMS

Memory access operations in OSes, VMs or traditional applications from different threads and processes can lead to various security issues depending on the compiler/hardware - especially in non-blocking code. Compilers/hardware pretend to provide sequential order execution, and this illusion does hold for single-threaded code. However, they are not aware of which memory locations are shared and developers oftentimes make the wrong assumptions about memory models. It can be subtle to protect these memory sections from aggressive read/write re-ordering and various optimizations depending on the compiler on x86, x86-64 or the loosely ordered IA64, ARM CPUs as well as GPUs - and it can easily lead to "losing the illusion" of sequential consistency.

I will discuss common issues depending on the hardware and compiler used, mostly related to loosely ordered hardware and the C/C++11 memory models, but will also compare how they hold in higher level languages. Developers will better understand how these issues can be mitigated and researchers will be able to find them more easily.

Presented by