paperbot · PL 论文追踪

全部论文 待读 收藏

P2 Efficient Transaction-Based Deterministic Replay for Multi-threaded Programs

面向多线程程序的高效基于事务的确定性重放
ASE 2019 34th IEEE/ACM International Conference on Automated Software Engineering (ASE)2019匹配度 1/10 · 论文研究多线程程序的确定性重放(事务级日志记录),属于并发调试与动态分析方向,与用户关注的静态分析、LLM/Agent 结合、浮点程序分析或贝叶斯程序分析均无直接关联。引用 7 inbox
Ernest Pobee, Xiupei Mei, W.K. Chan
crossref: 2026-09-12

AI 速览

一句话:提出 TPLAY,将线程事件划分为事务,在事务级记录共享内存访问交错,显著减小日志并提高重放成功率。

多线程程序的确定性重放常面临记录日志过大、重放条件受限的问题。本文提出基于事务的 TPLAY 技术:把每个线程的事件序列切分为称为事务的连续块,利用程序执行期间事务间通常很少或没有原子性违例这一观察,在事务粒度记录共享内存位置上的线程访问交错;当某事务报告原子性违例时,TPLAY 会生成一对人工交错以支持重放。作者在 PARSEC 基准套件的 Splash2x 扩展上进行实验。结果表明,与既有工作相比,TPLAY 的日志大小缩小约 13 倍,并取得更高的重放概率。

问题
多线程程序确定性重放中记录日志大、且只能在特定条件下成功重放。
方法
将每线程事件序列划分为事务,在事务级记录共享内存访问交错,并在原子性违例时生成人工交错。
评估
在 PARSEC 的 Splash2x 扩展上实验,日志大小改善 13 倍且重放概率高于既有方法。
原文摘要(Abstract)

Existing deterministic replay techniques propose strategies which attempt to reduce record log sizes and achieve successful replay. However, these techniques still generate large logs and achieve replay only under certain conditions. We propose a solution based on the division of the sequence of events of each thread into sequential blocks called transactions. Our insight is that there are usually few to no atomicity violations among transactions reported during a program execution. We present TPLAY, a novel deterministic replay technique which records thread access interleavings on shared memory locations at the transactional level. TPLAY also generates an artificial pair of interleavings when an atomicity violation is reported on a transaction. We present an experiment using the Splash2x extension of the PARSEC benchmark suite. Experimental results indicate that TPLAY experiences a 13-fold improvement in record log sizes and achieves a higher replay probability in comparison to existing work.

链接与引用

DOI 原文 ·

BibTeX
@inproceedings{paperbot5239,
  title = {Efficient Transaction-Based Deterministic Replay for Multi-threaded Programs},
  author = {Ernest Pobee and Xiupei Mei and W.K. Chan},
  booktitle = {ASE},
  year = {2019},
  doi = {10.1109/ase.2019.00076}
}