Strict Aliasing, TBAA and TypeSanitizer
本文首先介绍了 C++ 中的 strict aliasing rule,然后深入分析编译器是如何利用 strict aliasing rule 对程序进行分析优化的,之后介绍了检测 strict aliasing violation 的动态分析工具 TypeSanitizer,最后介绍如何在编程时避免写出 strict aliasing violation 的代码。
本文首先介绍了 C++ 中的 strict aliasing rule,然后深入分析编译器是如何利用 strict aliasing rule 对程序进行分析优化的,之后介绍了检测 strict aliasing violation 的动态分析工具 TypeSanitizer,最后介绍如何在编程时避免写出 strict aliasing violation 的代码。
本文深入剖析 ThreadSanitizer(V2) 检测 Data Race 背后的算法原理。
本文以 ASan 为例分析 sanitizer runtime 是如何获取和保存 stack trace 的。
本文分析了 sanitizer 是如何做到替换 malloc, free, memcpy 这些库函数的实现的。即 sanitizer 中的 interceptor 机制。
本文分析了 sanitizer runtime 是如何做到在程序启动之前进行初始化的。
本文深入剖析 GWP-ASan 这一概率性内存错误检测工具的原理。
本文描述了如何实现一个简单的 sanitizer 。
本文是对 A Tree Clock Data Structure for Causal Orderings in Concurrent Executions (ASPLOS’22) 这篇论文的学习笔记。
个人感觉这篇文章非常精妙,提出了 tree clock 这种数据结构来替代目前 Data Race 检测算法中广泛使用的数据结构 vector clock,极大的改善了计算 happen-before 关系时的时间复杂度。
根据 AddressSanitizer, ThreadSanitizer, and MemorySanitizer: Dynamic Testing Tools for C++ (GTAC'2013) ,TSan V2 使用的 fast happens-before 算法,类似于 FastTrack(PLDI'09) 中提出的算法。
本文是对 FastTrack: efficient and precise dynamic race detection (PLDI'09) 这篇论文的学习笔记。
本文是论文《Exploiting Superword Level Parallelism with Multimedia Instruction Sets》 的阅读笔记。论文提出一种称作 SLP 的向量化技术,作者是 Samuel Larsen 和 Saman Amarasinghe ,发表在 PLDI'2000。