首页 > 最新文献

Proceedings of the 39th ACM SIGPLAN Conference on Programming Language Design and Implementation最新文献

英文 中文
PMAF: an algebraic framework for static analysis of probabilistic programs PMAF:一个用于概率程序静态分析的代数框架
Di Wang, Jan Hoffmann, T. Reps
Automatically establishing that a probabilistic program satisfies some property ϕ is a challenging problem. While a sampling-based approach—which involves running the program repeatedly—can suggest that ϕ holds, to establish that the program satisfies ϕ, analysis techniques must be used. Despite recent successes, probabilistic static analyses are still more difficult to design and implement than their deterministic counterparts. This paper presents a framework, called PMAF, for designing, implementing, and proving the correctness of static analyses of probabilistic programs with challenging features such as recursion, unstructured control-flow, divergence, nondeterminism, and continuous distributions. PMAF introduces pre-Markov algebras to factor out common parts of different analyses. To perform interprocedural analysis and to create procedure summaries, PMAF extends ideas from non-probabilistic interprocedural dataflow analysis to the probabilistic setting. One novelty is that PMAF is based on a semantics formulated in terms of a control-flow hyper-graph for each procedure, rather than a standard control-flow graph. To evaluate its effectiveness, PMAF has been used to reformulate and implement existing intraprocedural analyses for Bayesian-inference and the Markov decision problem, by creating corresponding interprocedural analyses. Additionally, PMAF has been used to implement a new interprocedural linear expectation-invariant analysis. Experiments with benchmark programs for the three analyses demonstrate that the approach is practical.
自动建立一个概率程序满足某些属性φ是一个具有挑战性的问题。虽然基于采样的方法-包括重复运行程序-可以表明φ保持,但要确定程序满足φ,必须使用分析技术。尽管最近取得了成功,但概率静态分析的设计和实现仍然比确定性分析更难。本文提出了一个名为PMAF的框架,用于设计、实现和证明具有递归、非结构化控制流、散度、不确定性和连续分布等挑战性特征的概率程序的静态分析的正确性。PMAF引入了预马尔可夫代数来提出不同分析的共同部分。为了执行过程间分析和创建过程摘要,PMAF将非概率过程间数据流分析的思想扩展到概率设置。一个新颖之处在于,PMAF基于一种语义,这种语义是根据每个过程的控制流超图而不是标准控制流图来表述的。为了评估其有效性,PMAF被用于通过创建相应的过程间分析来重新制定和实现现有的贝叶斯推理和马尔可夫决策问题的过程内分析。此外,PMAF还被用于实现一种新的过程间线性期望不变分析。对这三种分析的基准程序进行了实验,结果表明该方法是实用的。
{"title":"PMAF: an algebraic framework for static analysis of probabilistic programs","authors":"Di Wang, Jan Hoffmann, T. Reps","doi":"10.1145/3192366.3192408","DOIUrl":"https://doi.org/10.1145/3192366.3192408","url":null,"abstract":"Automatically establishing that a probabilistic program satisfies some property ϕ is a challenging problem. While a sampling-based approach—which involves running the program repeatedly—can suggest that ϕ holds, to establish that the program satisfies ϕ, analysis techniques must be used. Despite recent successes, probabilistic static analyses are still more difficult to design and implement than their deterministic counterparts. This paper presents a framework, called PMAF, for designing, implementing, and proving the correctness of static analyses of probabilistic programs with challenging features such as recursion, unstructured control-flow, divergence, nondeterminism, and continuous distributions. PMAF introduces pre-Markov algebras to factor out common parts of different analyses. To perform interprocedural analysis and to create procedure summaries, PMAF extends ideas from non-probabilistic interprocedural dataflow analysis to the probabilistic setting. One novelty is that PMAF is based on a semantics formulated in terms of a control-flow hyper-graph for each procedure, rather than a standard control-flow graph. To evaluate its effectiveness, PMAF has been used to reformulate and implement existing intraprocedural analyses for Bayesian-inference and the Markov decision problem, by creating corresponding interprocedural analyses. Additionally, PMAF has been used to implement a new interprocedural linear expectation-invariant analysis. Experiments with benchmark programs for the three analyses demonstrate that the approach is practical.","PeriodicalId":20583,"journal":{"name":"Proceedings of the 39th ACM SIGPLAN Conference on Programming Language Design and Implementation","volume":"34 1","pages":""},"PeriodicalIF":0.0,"publicationDate":"2018-04-15","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"73257417","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 36
Static serializability analysis for causal consistency 因果一致性的静态序列化性分析
Lucas Brutschy, Dimitar Dimitrov, Peter Müller, Martin T. Vechev
Many distributed databases provide only weak consistency guarantees to reduce synchronization overhead and remain available under network partitions. However, this leads to behaviors not possible under stronger guarantees. Such behaviors can easily defy programmer intuition and lead to errors that are notoriously hard to detect. In this paper, we propose a static analysis for detecting non-serializable behaviors of applications running on top of causally-consistent databases. Our technique is based on a novel, local serializability criterion and combines a generalization of graph-based techniques from the database literature with another, complementary analysis technique that encodes our serializability criterion into first-order logic formulas to be checked by an SMT solver. This analysis is more expensive yet more precise and produces concrete counter-examples. We implemented our methods and evaluated them on a number of applications from two different domains: cloud-backed mobile applications and clients of a distributed database. Our experiments demonstrate that our analysis is able to detect harmful serializability violations while producing only a small number of false alarms.
许多分布式数据库只提供弱一致性保证,以减少同步开销并在网络分区下保持可用。然而,这会导致在更强的保证下不可能发生的行为。这样的行为很容易违背程序员的直觉,导致难以察觉的错误。在本文中,我们提出了一种静态分析,用于检测运行在因果一致数据库之上的应用程序的不可序列化行为。我们的技术基于一种新颖的局部可序列化性标准,并将数据库文献中基于图的技术的概括与另一种互补的分析技术相结合,该分析技术将我们的可序列化性标准编码为一阶逻辑公式,由SMT求解器进行检查。这种分析更昂贵,但更精确,并产生了具体的反例。我们实现了我们的方法,并在两个不同领域的许多应用程序上进行了评估:云支持的移动应用程序和分布式数据库的客户端。我们的实验表明,我们的分析能够检测到有害的串行性违规,同时只产生少量的假警报。
{"title":"Static serializability analysis for causal consistency","authors":"Lucas Brutschy, Dimitar Dimitrov, Peter Müller, Martin T. Vechev","doi":"10.1145/3192366.3192415","DOIUrl":"https://doi.org/10.1145/3192366.3192415","url":null,"abstract":"Many distributed databases provide only weak consistency guarantees to reduce synchronization overhead and remain available under network partitions. However, this leads to behaviors not possible under stronger guarantees. Such behaviors can easily defy programmer intuition and lead to errors that are notoriously hard to detect. In this paper, we propose a static analysis for detecting non-serializable behaviors of applications running on top of causally-consistent databases. Our technique is based on a novel, local serializability criterion and combines a generalization of graph-based techniques from the database literature with another, complementary analysis technique that encodes our serializability criterion into first-order logic formulas to be checked by an SMT solver. This analysis is more expensive yet more precise and produces concrete counter-examples. We implemented our methods and evaluated them on a number of applications from two different domains: cloud-backed mobile applications and clients of a distributed database. Our experiments demonstrate that our analysis is able to detect harmful serializability violations while producing only a small number of false alarms.","PeriodicalId":20583,"journal":{"name":"Proceedings of the 39th ACM SIGPLAN Conference on Programming Language Design and Implementation","volume":"40 1","pages":""},"PeriodicalIF":0.0,"publicationDate":"2018-04-15","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"75237694","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 27
CUBA: interprocedural Context-UnBounded Analysis of concurrent programs 并发程序的程序间上下文无界分析
Peizun Liu, T. Wahl
A classical result by Ramalingam about synchronization-sensitive interprocedural program analysis implies that reachability for concurrent threads running recursive procedures is undecidable. A technique proposed by Qadeer and Rehof, to bound the number of context switches allowed between the threads, leads to an incomplete solution that is, however, believed to catch “most bugs” in practice. The question whether the technique can also prove the absence of bugs at least in some cases has remained largely open. In this paper we introduce a broad verification methodology for resource-parameterized programs that observes how changes to the resource parameter affect the behavior of the program. Applied to the context-unbounded analysis problem (CUBA), the methodology results in partial verification techniques for procedural concurrent programs. Our solutions may not terminate, but are able to both refute and prove context-unbounded safety for concurrent recursive threads. We demonstrate the effectiveness of our method using a variety of examples, the safe of which cannot be proved safe by earlier, context-bounded methods.
Ramalingam关于同步敏感的过程间程序分析的经典结果表明,运行递归过程的并发线程的可达性是不可确定的。Qadeer和Rehof提出的一种技术,限制线程之间允许的上下文切换的数量,导致了一个不完整的解决方案,然而,在实践中被认为抓住了“大多数错误”。该技术是否也能证明至少在某些情况下没有漏洞,这个问题在很大程度上仍然悬而未决。在本文中,我们为资源参数化程序介绍了一种广泛的验证方法,该方法观察资源参数的变化如何影响程序的行为。将该方法应用于上下文无界分析问题(CUBA),得到了过程并发程序的部分验证技术。我们的解决方案可能不会终止,但能够反驳并证明并发递归线程的上下文无界安全性。我们用各种各样的例子来证明我们的方法的有效性,这些例子的安全性不能被早期的上下文约束的方法证明是安全的。
{"title":"CUBA: interprocedural Context-UnBounded Analysis of concurrent programs","authors":"Peizun Liu, T. Wahl","doi":"10.1145/3192366.3192419","DOIUrl":"https://doi.org/10.1145/3192366.3192419","url":null,"abstract":"A classical result by Ramalingam about synchronization-sensitive interprocedural program analysis implies that reachability for concurrent threads running recursive procedures is undecidable. A technique proposed by Qadeer and Rehof, to bound the number of context switches allowed between the threads, leads to an incomplete solution that is, however, believed to catch “most bugs” in practice. The question whether the technique can also prove the absence of bugs at least in some cases has remained largely open. In this paper we introduce a broad verification methodology for resource-parameterized programs that observes how changes to the resource parameter affect the behavior of the program. Applied to the context-unbounded analysis problem (CUBA), the methodology results in partial verification techniques for procedural concurrent programs. Our solutions may not terminate, but are able to both refute and prove context-unbounded safety for concurrent recursive threads. We demonstrate the effectiveness of our method using a variety of examples, the safe of which cannot be proved safe by earlier, context-bounded methods.","PeriodicalId":20583,"journal":{"name":"Proceedings of the 39th ACM SIGPLAN Conference on Programming Language Design and Implementation","volume":"388 1","pages":""},"PeriodicalIF":0.0,"publicationDate":"2018-04-13","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"79526957","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 5
iReplayer: in-situ and identical record-and-replay for multithreaded applications iReplayer:多线程应用程序的原位和相同的记录和重播
Hongyu Liu, Sam Silvestro, Wei Wang, Chen Tian, Tongping Liu
Reproducing executions of multithreaded programs is very challenging due to many intrinsic and external non-deterministic factors. Existing RnR systems achieve significant progress in terms of performance overhead, but none targets the in-situ setting, in which replay occurs within the same process as the recording process. Also, most existing work cannot achieve identical replay, which may prevent the reproduction of some errors. This paper presents iReplayer, which aims to identically replay multithreaded programs in the original process (under the "in-situ" setting). The novel in-situ and identical replay of iReplayer makes it more likely to reproduce errors, and allows it to directly employ debugging mechanisms (e.g. watchpoints) to aid failure diagnosis. Currently, iReplayer only incurs 3% performance overhead on average, which allows it to be always enabled in the production environment. iReplayer enables a range of possibilities, and this paper presents three examples: two automatic tools for detecting buffer overflows and use-after-free bugs, and one interactive debugging tool that is integrated with GDB.
由于许多内部和外部的不确定性因素,重新执行多线程程序非常具有挑战性。现有的RnR系统在性能开销方面取得了重大进展,但没有一个针对原位设置,在原位设置中,重播发生在与记录过程相同的过程中。此外,大多数现有工作不能实现相同的重放,这可能会防止一些错误的再现。本文介绍了iReplayer,它旨在在原始进程中(在“原位”设置下)相同地重播多线程程序。iReplayer新颖的原位和相同的重放使其更有可能重现错误,并允许它直接使用调试机制(例如观察点)来帮助故障诊断。目前,iReplayer平均只产生3%的性能开销,这使得它可以在生产环境中始终启用。iReplayer提供了一系列的可能性,本文给出了三个例子:两个用于检测缓冲区溢出和use-after-free错误的自动工具,以及一个与GDB集成的交互式调试工具。
{"title":"iReplayer: in-situ and identical record-and-replay for multithreaded applications","authors":"Hongyu Liu, Sam Silvestro, Wei Wang, Chen Tian, Tongping Liu","doi":"10.1145/3192366.3192380","DOIUrl":"https://doi.org/10.1145/3192366.3192380","url":null,"abstract":"Reproducing executions of multithreaded programs is very challenging due to many intrinsic and external non-deterministic factors. Existing RnR systems achieve significant progress in terms of performance overhead, but none targets the in-situ setting, in which replay occurs within the same process as the recording process. Also, most existing work cannot achieve identical replay, which may prevent the reproduction of some errors. This paper presents iReplayer, which aims to identically replay multithreaded programs in the original process (under the \"in-situ\" setting). The novel in-situ and identical replay of iReplayer makes it more likely to reproduce errors, and allows it to directly employ debugging mechanisms (e.g. watchpoints) to aid failure diagnosis. Currently, iReplayer only incurs 3% performance overhead on average, which allows it to be always enabled in the production environment. iReplayer enables a range of possibilities, and this paper presents three examples: two automatic tools for detecting buffer overflows and use-after-free bugs, and one interactive debugging tool that is integrated with GDB.","PeriodicalId":20583,"journal":{"name":"Proceedings of the 39th ACM SIGPLAN Conference on Programming Language Design and Implementation","volume":"55 1","pages":""},"PeriodicalIF":0.0,"publicationDate":"2018-04-04","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"86809499","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 25
A general path-based representation for predicting program properties 用于预测程序属性的一般基于路径的表示
Uri Alon, Meital Zilberstein, Omer Levy, Eran Yahav
Predicting program properties such as names or expression types has a wide range of applications. It can ease the task of programming, and increase programmer productivity. A major challenge when learning from programs is how to represent programs in a way that facilitates effective learning. We present a general path-based representation for learning from programs. Our representation is purely syntactic and extracted automatically. The main idea is to represent a program using paths in its abstract syntax tree (AST). This allows a learning model to leverage the structured nature of code rather than treating it as a flat sequence of tokens. We show that this representation is general and can: (i) cover different prediction tasks, (ii) drive different learning algorithms (for both generative and discriminative models), and (iii) work across different programming languages. We evaluate our approach on the tasks of predicting variable names, method names, and full types. We use our representation to drive both CRF-based and word2vec-based learning, for programs of four languages: JavaScript, Java, Python and C#. Our evaluation shows that our approach obtains better results than task-specific handcrafted representations across different tasks and programming languages.
预测程序属性(如名称或表达式类型)具有广泛的应用。它可以简化编程任务,并提高程序员的工作效率。从程序中学习的一个主要挑战是如何以一种促进有效学习的方式表示程序。我们提出了一种通用的基于路径的表示,用于从程序中学习。我们的表示是纯语法的,是自动提取的。其主要思想是使用抽象语法树(AST)中的路径来表示程序。这允许学习模型利用代码的结构化特性,而不是将其视为一个平面的令牌序列。我们表明这种表示是通用的,并且可以:(i)涵盖不同的预测任务,(ii)驱动不同的学习算法(用于生成和判别模型),以及(iii)跨不同的编程语言工作。我们在预测变量名、方法名和完整类型的任务上评估我们的方法。我们使用我们的表示来驱动基于crf和基于word2vec的学习,用于四种语言的程序:JavaScript, Java, Python和c#。我们的评估表明,我们的方法比跨不同任务和编程语言的特定于任务的手工表示获得更好的结果。
{"title":"A general path-based representation for predicting program properties","authors":"Uri Alon, Meital Zilberstein, Omer Levy, Eran Yahav","doi":"10.1145/3192366.3192412","DOIUrl":"https://doi.org/10.1145/3192366.3192412","url":null,"abstract":"Predicting program properties such as names or expression types has a wide range of applications. It can ease the task of programming, and increase programmer productivity. A major challenge when learning from programs is how to represent programs in a way that facilitates effective learning. We present a general path-based representation for learning from programs. Our representation is purely syntactic and extracted automatically. The main idea is to represent a program using paths in its abstract syntax tree (AST). This allows a learning model to leverage the structured nature of code rather than treating it as a flat sequence of tokens. We show that this representation is general and can: (i) cover different prediction tasks, (ii) drive different learning algorithms (for both generative and discriminative models), and (iii) work across different programming languages. We evaluate our approach on the tasks of predicting variable names, method names, and full types. We use our representation to drive both CRF-based and word2vec-based learning, for programs of four languages: JavaScript, Java, Python and C#. Our evaluation shows that our approach obtains better results than task-specific handcrafted representations across different tasks and programming languages.","PeriodicalId":20583,"journal":{"name":"Proceedings of the 39th ACM SIGPLAN Conference on Programming Language Design and Implementation","volume":"54 1","pages":""},"PeriodicalIF":0.0,"publicationDate":"2018-03-26","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"89262926","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 191
Search, align, and repair: data-driven feedback generation for introductory programming exercises 搜索、对齐和修复:用于介绍性编程练习的数据驱动反馈生成
Ke Wang, Rishabh Singh, Z. Su
This paper introduces the “Search, Align, and Repair” data-driven program repair framework to automate feedback generation for introductory programming exercises. Distinct from existing techniques, our goal is to develop an efficient, fully automated, and problem-agnostic technique for large or MOOC-scale introductory programming courses. We leverage the large amount of available student submissions in such settings and develop new algorithms for identifying similar programs, aligning correct and incorrect programs, and repairing incorrect programs by finding minimal fixes. We have implemented our technique in the Sarfgen system and evaluated it on thousands of real student attempts from the Microsoft-DEV204.1x edX course and the Microsoft CodeHunt platform. Our results show that Sarfgen can, within two seconds on average, generate concise, useful feedback for 89.7% of the incorrect student submissions. It has been integrated with the Microsoft-DEV204.1X edX class and deployed for production use.
本文介绍了“搜索、对齐和修复”数据驱动的程序修复框架,用于自动生成介绍性编程练习的反馈。与现有技术不同,我们的目标是为大型或mooc规模的入门编程课程开发一种高效、全自动和问题不可知的技术。我们利用大量可用的学生提交在这样的设置和开发新的算法来识别类似的程序,对齐正确和不正确的程序,并通过寻找最小的修复修复不正确的程序。我们已经在Sarfgen系统中实现了我们的技术,并对来自Microsoft- dev204.1 x edX课程和Microsoft CodeHunt平台的数千次真实学生尝试进行了评估。我们的结果表明,Sarfgen平均可以在两秒钟内为89.7%的错误学生提交生成简洁、有用的反馈。它已经与Microsoft-DEV204.1X edX类集成,并部署到生产环境中。
{"title":"Search, align, and repair: data-driven feedback generation for introductory programming exercises","authors":"Ke Wang, Rishabh Singh, Z. Su","doi":"10.1145/3192366.3192384","DOIUrl":"https://doi.org/10.1145/3192366.3192384","url":null,"abstract":"This paper introduces the “Search, Align, and Repair” data-driven program repair framework to automate feedback generation for introductory programming exercises. Distinct from existing techniques, our goal is to develop an efficient, fully automated, and problem-agnostic technique for large or MOOC-scale introductory programming courses. We leverage the large amount of available student submissions in such settings and develop new algorithms for identifying similar programs, aligning correct and incorrect programs, and repairing incorrect programs by finding minimal fixes. We have implemented our technique in the Sarfgen system and evaluated it on thousands of real student attempts from the Microsoft-DEV204.1x edX course and the Microsoft CodeHunt platform. Our results show that Sarfgen can, within two seconds on average, generate concise, useful feedback for 89.7% of the incorrect student submissions. It has been integrated with the Microsoft-DEV204.1X edX class and deployed for production use.","PeriodicalId":20583,"journal":{"name":"Proceedings of the 39th ACM SIGPLAN Conference on Programming Language Design and Implementation","volume":"6 1","pages":""},"PeriodicalIF":0.0,"publicationDate":"2017-11-20","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"85969243","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 81
Active learning of points-to specifications 主动学习从点到规范
O. Bastani, Rahul Sharma, A. Aiken, Percy Liang
When analyzing programs, large libraries pose significant challenges to static points-to analysis. A popular solution is to have a human analyst provide points-to specifications that summarize relevant behaviors of library code, which can substantially improve precision and handle missing code such as native code. We propose Atlas, a tool that automatically infers points-to specifications. Atlas synthesizes unit tests that exercise the library code, and then infers points-to specifications based on observations from these executions. Atlas automatically infers specifications for the Java standard library, and produces better results for a client static information flow analysis on a benchmark of 46 Android apps compared to using existing handwritten specifications.
在分析程序时,大型库对静态点对分析提出了重大挑战。一种流行的解决方案是让人工分析人员提供指向规范,总结库代码的相关行为,这可以大大提高精度并处理缺失的代码,如本机代码。我们提出Atlas,一个自动推断指向规范的工具。Atlas综合了执行库代码的单元测试,然后根据对这些执行的观察推断出指向规范。Atlas自动推断Java标准库的规范,与使用现有的手写规范相比,在46个Android应用程序的基准测试中,为客户端静态信息流分析提供了更好的结果。
{"title":"Active learning of points-to specifications","authors":"O. Bastani, Rahul Sharma, A. Aiken, Percy Liang","doi":"10.1145/3192366.3192383","DOIUrl":"https://doi.org/10.1145/3192366.3192383","url":null,"abstract":"When analyzing programs, large libraries pose significant challenges to static points-to analysis. A popular solution is to have a human analyst provide points-to specifications that summarize relevant behaviors of library code, which can substantially improve precision and handle missing code such as native code. We propose Atlas, a tool that automatically infers points-to specifications. Atlas synthesizes unit tests that exercise the library code, and then infers points-to specifications based on observations from these executions. Atlas automatically infers specifications for the Java standard library, and produces better results for a client static information flow analysis on a benchmark of 46 Android apps compared to using existing handwritten specifications.","PeriodicalId":20583,"journal":{"name":"Proceedings of the 39th ACM SIGPLAN Conference on Programming Language Design and Implementation","volume":"31 1","pages":""},"PeriodicalIF":0.0,"publicationDate":"2017-11-09","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"81900246","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 24
The semantics of transactions and weak memory in x86, Power, ARM, and C++ x86、Power、ARM和c++中事务和弱内存的语义
Nathan Chong, Tyler Sorensen, John Wickerson
Weak memory models provide a complex, system-centric semantics for concurrent programs, while transactional memory (TM) provides a simpler, programmer-centric semantics. Both have been studied in detail, but their combined semantics is not well understood. This is problematic because such widely-used architectures and languages as x86, Power, and C++ all support TM, and all have weak memory models. Our work aims to clarify the interplay between weak memory and TM by extending existing axiomatic weak memory models (x86, Power, ARMv8, and C++) with new rules for TM. Our formal models are backed by automated tooling that enables (1) the synthesis of tests for validating our models against existing implementations and (2) the model-checking of TM-related transformations, such as lock elision and compiling C++ transactions to hardware. A key finding is that a proposed TM extension to ARMv8 currently being considered within ARM Research is incompatible with lock elision without sacrificing portability or performance.
弱内存模型为并发程序提供了复杂的、以系统为中心的语义,而事务内存(TM)提供了更简单的、以程序员为中心的语义。两者都被详细研究过,但是它们的综合语义还没有被很好地理解。这是有问题的,因为诸如x86、Power和c++等广泛使用的体系结构和语言都支持TM,并且都具有较弱的内存模型。我们的工作旨在通过用新的TM规则扩展现有的公理弱内存模型(x86、Power、ARMv8和c++)来阐明弱内存和TM之间的相互作用。我们的正式模型由自动化工具支持,它支持(1)针对现有实现验证我们的模型的综合测试,以及(2)tm相关转换的模型检查,例如锁省略和编译c++事务到硬件。一个重要的发现是,ARM研究院目前正在考虑的ARMv8的TM扩展与锁省略不兼容,但不会牺牲可移植性或性能。
{"title":"The semantics of transactions and weak memory in x86, Power, ARM, and C++","authors":"Nathan Chong, Tyler Sorensen, John Wickerson","doi":"10.1145/3192366.3192373","DOIUrl":"https://doi.org/10.1145/3192366.3192373","url":null,"abstract":"Weak memory models provide a complex, system-centric semantics for concurrent programs, while transactional memory (TM) provides a simpler, programmer-centric semantics. Both have been studied in detail, but their combined semantics is not well understood. This is problematic because such widely-used architectures and languages as x86, Power, and C++ all support TM, and all have weak memory models. Our work aims to clarify the interplay between weak memory and TM by extending existing axiomatic weak memory models (x86, Power, ARMv8, and C++) with new rules for TM. Our formal models are backed by automated tooling that enables (1) the synthesis of tests for validating our models against existing implementations and (2) the model-checking of TM-related transformations, such as lock elision and compiling C++ transactions to hardware. A key finding is that a proposed TM extension to ARMv8 currently being considered within ARM Research is incompatible with lock elision without sacrificing portability or performance.","PeriodicalId":20583,"journal":{"name":"Proceedings of the 39th ACM SIGPLAN Conference on Programming Language Design and Implementation","volume":"28 1","pages":""},"PeriodicalIF":0.0,"publicationDate":"2017-10-13","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"78178123","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 26
Finding root causes of floating point error 查找浮点错误的根本原因
Alex Sanchez-Stern, P. Panchekha, Sorin Lerner, Zachary Tatlock
Floating-point arithmetic plays a central role in science, engineering, and finance by enabling developers to approximate real arithmetic. To address numerical issues in large floating-point applications, developers must identify root causes, which is difficult because floating-point errors are generally non-local, non-compositional, and non-uniform. This paper presents Herbgrind, a tool to help developers identify and address root causes in numerical code written in low-level languages like C/C++ and Fortran. Herbgrind dynamically tracks dependencies between operations and program outputs to avoid false positives and abstracts erroneous computations to simplified program fragments whose improvement can reduce output error. We perform several case studies applying Herbgrind to large, expert-crafted numerical programs and show that it scales to applications spanning hundreds of thousands of lines, correctly handling the low-level details of modern floating point hardware and mathematical libraries and tracking error across function boundaries and through the heap.
浮点算术通过使开发人员能够近似真实的算术,在科学、工程和金融中发挥着核心作用。为了解决大型浮点应用程序中的数值问题,开发人员必须确定根本原因,这是很困难的,因为浮点错误通常是非局部的、非组合的和非均匀的。本文介绍了Herbgrind,一个帮助开发人员识别和解决用C/ c++和Fortran等低级语言编写的数字代码的根本原因的工具。Herbgrind动态跟踪操作和程序输出之间的依赖关系,以避免误报,并将错误计算抽象为简化的程序片段,其改进可以减少输出错误。我们执行了几个案例研究,将Herbgrind应用于大型的、专家制作的数值程序,并表明它可以扩展到跨越数十万行的应用程序,正确处理现代浮点硬件和数学库的低级细节,并跨函数边界和堆跟踪错误。
{"title":"Finding root causes of floating point error","authors":"Alex Sanchez-Stern, P. Panchekha, Sorin Lerner, Zachary Tatlock","doi":"10.1145/3192366.3192411","DOIUrl":"https://doi.org/10.1145/3192366.3192411","url":null,"abstract":"Floating-point arithmetic plays a central role in science, engineering, and finance by enabling developers to approximate real arithmetic. To address numerical issues in large floating-point applications, developers must identify root causes, which is difficult because floating-point errors are generally non-local, non-compositional, and non-uniform. This paper presents Herbgrind, a tool to help developers identify and address root causes in numerical code written in low-level languages like C/C++ and Fortran. Herbgrind dynamically tracks dependencies between operations and program outputs to avoid false positives and abstracts erroneous computations to simplified program fragments whose improvement can reduce output error. We perform several case studies applying Herbgrind to large, expert-crafted numerical programs and show that it scales to applications spanning hundreds of thousands of lines, correctly handling the low-level details of modern floating point hardware and mathematical libraries and tracking error across function boundaries and through the heap.","PeriodicalId":20583,"journal":{"name":"Proceedings of the 39th ACM SIGPLAN Conference on Programming Language Design and Implementation","volume":"303 1","pages":""},"PeriodicalIF":0.0,"publicationDate":"2017-05-29","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"77198711","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 63
期刊
Proceedings of the 39th ACM SIGPLAN Conference on Programming Language Design and Implementation
全部 Acc. Chem. Res. ACS Applied Bio Materials ACS Appl. Electron. Mater. ACS Appl. Energy Mater. ACS Appl. Mater. Interfaces ACS Appl. Nano Mater. ACS Appl. Polym. Mater. ACS BIOMATER-SCI ENG ACS Catal. ACS Cent. Sci. ACS Chem. Biol. ACS Chemical Health & Safety ACS Chem. Neurosci. ACS Comb. Sci. ACS Earth Space Chem. ACS Energy Lett. ACS Infect. Dis. ACS Macro Lett. ACS Mater. Lett. ACS Med. Chem. Lett. ACS Nano ACS Omega ACS Photonics ACS Sens. ACS Sustainable Chem. Eng. ACS Synth. Biol. Anal. Chem. BIOCHEMISTRY-US Bioconjugate Chem. BIOMACROMOLECULES Chem. Res. Toxicol. Chem. Rev. Chem. Mater. CRYST GROWTH DES ENERG FUEL Environ. Sci. Technol. Environ. Sci. Technol. Lett. Eur. J. Inorg. Chem. IND ENG CHEM RES Inorg. Chem. J. Agric. Food. Chem. J. Chem. Eng. Data J. Chem. Educ. J. Chem. Inf. Model. J. Chem. Theory Comput. J. Med. Chem. J. Nat. Prod. J PROTEOME RES J. Am. Chem. Soc. LANGMUIR MACROMOLECULES Mol. Pharmaceutics Nano Lett. Org. Lett. ORG PROCESS RES DEV ORGANOMETALLICS J. Org. Chem. J. Phys. Chem. J. Phys. Chem. A J. Phys. Chem. B J. Phys. Chem. C J. Phys. Chem. Lett. Analyst Anal. Methods Biomater. Sci. Catal. Sci. Technol. Chem. Commun. Chem. Soc. Rev. CHEM EDUC RES PRACT CRYSTENGCOMM Dalton Trans. Energy Environ. Sci. ENVIRON SCI-NANO ENVIRON SCI-PROC IMP ENVIRON SCI-WAT RES Faraday Discuss. Food Funct. Green Chem. Inorg. Chem. Front. Integr. Biol. J. Anal. At. Spectrom. J. Mater. Chem. A J. Mater. Chem. B J. Mater. Chem. C Lab Chip Mater. Chem. Front. Mater. Horiz. MEDCHEMCOMM Metallomics Mol. Biosyst. Mol. Syst. Des. Eng. Nanoscale Nanoscale Horiz. Nat. Prod. Rep. New J. Chem. Org. Biomol. Chem. Org. Chem. Front. PHOTOCH PHOTOBIO SCI PCCP Polym. Chem.
×
引用
GB/T 7714-2015
复制
MLA
复制
APA
复制
导出至
BibTeX EndNote RefMan NoteFirst NoteExpress
×
0
微信
客服QQ
Book学术公众号 扫码关注我们
反馈
×
意见反馈
请填写您的意见或建议
请填写您的手机或邮箱
×
提示
您的信息不完整,为了账户安全,请先补充。
现在去补充
×
提示
您因"违规操作"
具体请查看互助需知
我知道了
×
提示
现在去查看 取消
×
提示
确定
Book学术官方微信
Book学术文献互助
Book学术文献互助群
群 号:481959085
Book学术
文献互助 智能选刊 最新文献 互助须知 联系我们:info@booksci.cn
Book学术提供免费学术资源搜索服务,方便国内外学者检索中英文文献。致力于提供最便捷和优质的服务体验。
Copyright © 2023 Book学术 All rights reserved.
ghs 京公网安备 11010802042870号 京ICP备2023020795号-1