Parallel and Distributed Systems: Testing, Analysis, and Debugging最新文献

筛选
英文 中文
A debugger for flow graph based parallel applications 基于并行应用程序的流图调试器
Parallel and Distributed Systems: Testing, Analysis, and Debugging Pub Date : 2007-07-09 DOI: 10.1145/1273647.1273651
A. Al-Shabibi, Sebastian Gerlach, R. Hersch, B. Schaeli
{"title":"A debugger for flow graph based parallel applications","authors":"A. Al-Shabibi, Sebastian Gerlach, R. Hersch, B. Schaeli","doi":"10.1145/1273647.1273651","DOIUrl":"https://doi.org/10.1145/1273647.1273651","url":null,"abstract":"Flow graphs provide an explicit description of the parallelization of an application by mapping vertices onto serial computations and edges onto message transfers. We present the design and implementation of a debugger for the flow graph based Dynamic Parallel Schedules (DPS) parallelization framework. We use the flow graph to provide both a high level and detailed picture of the current state of the application execution. We describe how reordering incoming messages enables testing for the presence of message races while debugging a parallel application. The knowledge about causal dependencies between messages enables tracking messages and computations along individual branches of the flow graph. In addition to common features such as restricting the analysis to a subset of threads or processes and attaching sequential debuggers to running processes, the proposed debugger also provides support for message alterations and for message content dependent breakpoints.","PeriodicalId":291507,"journal":{"name":"Parallel and Distributed Systems: Testing, Analysis, and Debugging","volume":"240 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2007-07-09","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"121872776","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}
引用次数: 7
Experience with fluid: analysis, design intent, and assurance for concurrency 有流体方面的经验:分析、设计意图和并发性保证
Parallel and Distributed Systems: Testing, Analysis, and Debugging Pub Date : 2007-07-09 DOI: 10.1145/1273647.1273648
W. Scherlis
{"title":"Experience with fluid: analysis, design intent, and assurance for concurrency","authors":"W. Scherlis","doi":"10.1145/1273647.1273648","DOIUrl":"https://doi.org/10.1145/1273647.1273648","url":null,"abstract":"There is a new generation of analysis-based tools to assist programmers in assuring software at scale. Most often, these tools emphasize program properties that tend to defy traditional testing and inspection—typically properties that involve nondeterminism or that may have a non-local character, in the sense that there may be no single place in the code associated with errors. Concurrency errors are the perfect storm of nondeterminism and non-locality, and so have received attention from analysis and verification researchers for some time. Additionally, concurrency is of increasing importance because software exploitation of multicore processors is an emerging gateway to continued movement up the curve of Moore's Law. In this talk, we survey some recent progress in advanced software assurance tools for concurrency, including both static and dynamic analysis. Our focus is on the effective exploitation of design intent to assist developers in achieving verification related to Java race conditions and access policy to shared data. We consider lock-based approaches, using both lexical-style locking, as with Java's “synchronized,” and dynamic lock acquisition and release, as with Doug Lea’s java.util.concurrent library. We also consider policy-based approaches that avoid explicit locking, as used in most GUI frameworks and in many simulation and data management systems. We summarize the results of a number of field trials in major commercial companies to assess our ideas related to adoptability by working developers and scalability to realistic large systems. Categories & Subject Descriptors: D.2.4, D.2.5, D.2.6 General Terms: Measurement, Documentation, Performance, Reliability, Verification. Bio William L. Scherlis is professor in the School of Computer Science at Carnegie Mellon and director of CMU's Institute for Software Research. He leads CMU’s Fluid project on software assurance and evolution, results from which led to the Fall 2006 creation of SureLogic, a Carnegie Mellon spinoff. He led the High Dependability Computing Project (HDCP), in which CMU and five other universities worked with NASA to address long-term software dependability challenges. Dr. Scherlis completed a PhD at Stanford, a year at the University of Edinburgh as a John Knox Fellow, and an A.B. at Harvard. Scherlis chairs the National Research Council (NRC) study committee on defense software producibility and is a member of the NRC study committee on cybersecurity. He has been an advisor to major IT companies. He has served as program chair for conferences including ACM FSE and PEPM and has more than 70 scientific publications. Copyright is held by the author/owner(s). PADTAD’07, July 9, 2007, London, England, United Kingdom. ACM 978-1-59593-748-3/07/0007.","PeriodicalId":291507,"journal":{"name":"Parallel and Distributed Systems: Testing, Analysis, and Debugging","volume":"90 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2007-07-09","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"116621460","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}
引用次数: 0
Semantics driven dynamic partial-order reduction of MPI-based parallel programs 语义驱动的mpi并行程序的动态部分阶约简
Parallel and Distributed Systems: Testing, Analysis, and Debugging Pub Date : 2007-07-09 DOI: 10.1145/1273647.1273657
R. Palmer, G. Gopalakrishnan, R. Kirby
{"title":"Semantics driven dynamic partial-order reduction of MPI-based parallel programs","authors":"R. Palmer, G. Gopalakrishnan, R. Kirby","doi":"10.1145/1273647.1273657","DOIUrl":"https://doi.org/10.1145/1273647.1273657","url":null,"abstract":"Most distributed parallel programs in the high performance computing (HPC) arena are written using the MPI library. There is growing interest in using model checking for debugging these MPI programs. In this context, partial-order reduction has considerable potential for containing state explosion, given the distributed memory nature of MPI programs. This potential is largely unmet. In this paper, we first define the formal semantics for a non-trivial subset of MPI. We then prove independence theorems based on theformal semantics, paving the way to a semantically clear and general partial-order reduction approach for MPI. Our work describes, for the first time, the exact dependencies between MPI non-blocking send operations and their tests for completion, namely wait and test. We also offer a cleaner solution than in previous works for MPI wildcard receives,a proper handling of which requires knowledge of the future course of computations. We show that Flanagan and Godefroid's dynamic patial-order reduction algorithm offers a natural way to handle the need for future information. Our initial experimental results are encouraging.","PeriodicalId":291507,"journal":{"name":"Parallel and Distributed Systems: Testing, Analysis, and Debugging","volume":"118 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2007-07-09","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"125656090","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}
引用次数: 34
Healing data races on-the-fly 实时修复数据竞赛
Parallel and Distributed Systems: Testing, Analysis, and Debugging Pub Date : 2007-07-09 DOI: 10.1145/1273647.1273658
B. Krena, Zdenek Letko, Rachel Tzoref, S. Ur, Tomáš Vojnar
{"title":"Healing data races on-the-fly","authors":"B. Krena, Zdenek Letko, Rachel Tzoref, S. Ur, Tomáš Vojnar","doi":"10.1145/1273647.1273658","DOIUrl":"https://doi.org/10.1145/1273647.1273658","url":null,"abstract":"Testing of concurrent software is extremely difficult. Despite all the progress in the testing and verification technology, concurrent bugs, the most common of which are deadlocks and races, make it to the field. This paper describes a set of techniques, implemented in a tool called ConTest, allowing concurrent programs to self-heal at run-time. Concurrent bugs have the very desirable property for healing that some of the interleaving produce correct results while in others bugs manifest. Healing concurrency problems is about limiting, or changing the probability of interleaving, such that bugs will be seen less. When healing concurrent programs, if a deadlock does not result from limiting the interleaving, we are sure that the result of the healed program could have been in the original program and therefore no new functional bug has been introduced. In this initial work which deals with different types of data races, we suggest three types of healing mechanisms: (1) changing the probability of interleaving by introducing sleep or yield statements or by changing thread priorities, (2) removing interleaving using synchronisation commands like locking and unlocking certain mutexes or waits and notifies, and (3) removing the result of \"bad interleaving\" by replacing the value of variables by the one that \"should\" have been taken. We also classify races according to the relevant healing strategies to apply.","PeriodicalId":291507,"journal":{"name":"Parallel and Distributed Systems: Testing, Analysis, and Debugging","volume":"348 2 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2007-07-09","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"123119240","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}
引用次数: 62
JThreadSpy: teaching multithreading programming by analyzing execution traces JThreadSpy:通过分析执行轨迹来教授多线程编程
Parallel and Distributed Systems: Testing, Analysis, and Debugging Pub Date : 2007-07-09 DOI: 10.1145/1273647.1273650
G. Malnati, Caterina Maria Cuva, Claudia Barberis
{"title":"JThreadSpy: teaching multithreading programming by analyzing execution traces","authors":"G. Malnati, Caterina Maria Cuva, Claudia Barberis","doi":"10.1145/1273647.1273650","DOIUrl":"https://doi.org/10.1145/1273647.1273650","url":null,"abstract":"Multithreading introduces a degree of complexity that is often difficult to grasp by beginners both because of many false assumptions made about the scheduling process and because it is not possible to adopt a trial and error strategy aimed at figuring out what exactly happens during the execution, as a consequence of the intrinsic non determinism of threaded execution.\u0000 This article describes JThreadSpy, a tool for dynamic instrumentation of Java programs, aimed at registering execution traces of each thread and displaying them with a selectable level of detail.\u0000 JThreadSpy relies on the ASM framework to dynamically instrument methods during class loading, in order to insert suitable method calls that produce an execution trace that is later used to display an annotated UML sequence diagram, highlighting different threads and synchronization constructs.\u0000 JThreadSpy proved to be a valuable tool for students engaged in an object-oriented programming course at Politecnico di Torino. By graphically analysing execution flows, students could understand, in an easier way, the non-determinism introduced by the scheduler, the effects of synchronization constructs, the impact of multicore processor architectures, as well as identify critical sections, deadlocks and other anomalies of concurrent programs.","PeriodicalId":291507,"journal":{"name":"Parallel and Distributed Systems: Testing, Analysis, and Debugging","volume":"31 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2007-07-09","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"129090897","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}
引用次数: 18
Techniques for specifying bug patterns 指定bug模式的技术
Parallel and Distributed Systems: Testing, Analysis, and Debugging Pub Date : 2007-07-09 DOI: 10.1145/1273647.1273654
D. Quinlan, R. Vuduc, Ghassan Misherghi
{"title":"Techniques for specifying bug patterns","authors":"D. Quinlan, R. Vuduc, Ghassan Misherghi","doi":"10.1145/1273647.1273654","DOIUrl":"https://doi.org/10.1145/1273647.1273654","url":null,"abstract":"We present our on-going work to develop techniques for specifying source code signatures of bug patterns. Specifically, we discuss two approaches. The first approach directly analyzes a program in the intermediate representation (IR) of the ROSE compiler infrastructure using ROSE's API. The second analyzes the program using the bddbddb system of Lam, Whaley, et al.. In this approach, we store the IR produced by ROSE as a relational database, express patterns as declarative inference rules on relations in the language Datalog, and bddbddb implements the Datalog programs using binary decision diagram (BDD) techniques. Both approaches readily apply to large-scale applications, since ROSE provides full type analysis, control flow, and other available analysis information. In this paper, we primarily consider bug patterns expressed with respect to the structure of the source code or the control flow, or both. More complex techniques to specify patterns that are functions of data flow properties may be addressed by either of the above approaches, but are not directly treated here. Our Datalog-based work includes explicit support for expressing patterns on the use of the Message Passing Interface (MPI) in parallel distributed memory programs. We show examples of this on-going work as well.","PeriodicalId":291507,"journal":{"name":"Parallel and Distributed Systems: Testing, Analysis, and Debugging","volume":"117 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2007-07-09","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"117265664","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}
引用次数: 12
Organizing processes and threads for debugging 组织进程和线程进行调试
Parallel and Distributed Systems: Testing, Analysis, and Debugging Pub Date : 2007-07-09 DOI: 10.1145/1273647.1273652
Barry Kingsbury
{"title":"Organizing processes and threads for debugging","authors":"Barry Kingsbury","doi":"10.1145/1273647.1273652","DOIUrl":"https://doi.org/10.1145/1273647.1273652","url":null,"abstract":"Debugging parallel programs containing thousands of processes and threads across hundreds or thousands of nodes by individually looking at each process and thread is possible. Possible, however, does not mean practical. The only workable approach is to organize processes and threads into groups and then debug the program by using these groups. This paper discusses the ways in which the TotalView Technologies Debugger (TVD) automatically organizes a program's processes and threads, the way developers can manually organize them when additional grouping capabilities are needed, and the implications of executing processes, threads, and groups asynchronously under debugger control.","PeriodicalId":291507,"journal":{"name":"Parallel and Distributed Systems: Testing, Analysis, and Debugging","volume":"164 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2007-07-09","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"124585316","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
Run-time detection of potential deadlocks for programs with locks, semaphores, and condition variables 对带有锁、信号量和条件变量的程序进行潜在死锁的运行时检测
Parallel and Distributed Systems: Testing, Analysis, and Debugging Pub Date : 2006-07-17 DOI: 10.1145/1147403.1147413
Rahul Agarwal, S. Stoller
{"title":"Run-time detection of potential deadlocks for programs with locks, semaphores, and condition variables","authors":"Rahul Agarwal, S. Stoller","doi":"10.1145/1147403.1147413","DOIUrl":"https://doi.org/10.1145/1147403.1147413","url":null,"abstract":"Concurrent programs are notorious for containing errors that are difficult to reproduce and diagnose. A common kind of concurrency error is deadlock, which occurs when some threads are permanently blocked. This paper defines a run-time notion of potential deadlock in programs with locks, semaphores, and condition variables. Informally, an execution has potential for a deadlock if some feasible permutation of the execution results in a deadlock. Feasibility of a permutation is determined by ordering constraints amongst events in the execution. Previous work on run-time detection of potential deadlocks are for programs that use locks. This paper presents run-time algorithms to detect potential deadlocks in programs that use locks (block structured as well as non block structured), semaphores, and condition variables.","PeriodicalId":291507,"journal":{"name":"Parallel and Distributed Systems: Testing, Analysis, and Debugging","volume":"104 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2006-07-17","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"132479971","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}
引用次数: 61
A classification of concurrency bugs in java benchmarks by developer intent 按开发人员意图对java基准测试中的并发性错误进行分类
Parallel and Distributed Systems: Testing, Analysis, and Debugging Pub Date : 2006-07-17 DOI: 10.1145/1147403.1147407
M. E. Keremoglu, S. Tasiran, Tayfun Elmas
{"title":"A classification of concurrency bugs in java benchmarks by developer intent","authors":"M. E. Keremoglu, S. Tasiran, Tayfun Elmas","doi":"10.1145/1147403.1147407","DOIUrl":"https://doi.org/10.1145/1147403.1147407","url":null,"abstract":"This work addresses the issue of selecting the formal correctness criterion for a concurrent Java program that best corresponds to the developer¿s intent. We study a set of concurrency-related bugs detected in Java benchmarks reported in the literature. On these programs, we determine whether race-freedom, atomicity or refinement is the simplest and most appropriate criterion for program correctness. Our purpose is to demonstrate empirically the fact that the appropriate fix for a concurrency error and the selection of a program analysis tool for detecting such an error must be based on the proper expression of the designer¿s intent using a formal correctness criterion.","PeriodicalId":291507,"journal":{"name":"Parallel and Distributed Systems: Testing, Analysis, and Debugging","volume":"63 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2006-07-17","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"127221760","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}
引用次数: 6
Improving distributed memory applications testing by message perturbation 通过消息扰动改进分布式内存应用程序测试
Parallel and Distributed Systems: Testing, Analysis, and Debugging Pub Date : 2006-07-17 DOI: 10.1145/1147403.1147409
R. Vuduc, M. Schulz, D. Quinlan, B. Supinski, Andreas Sæbjørnsen
{"title":"Improving distributed memory applications testing by message perturbation","authors":"R. Vuduc, M. Schulz, D. Quinlan, B. Supinski, Andreas Sæbjørnsen","doi":"10.1145/1147403.1147409","DOIUrl":"https://doi.org/10.1145/1147403.1147409","url":null,"abstract":"We present initial work on perturbation techniques that cause the manifestation of timing-related bugs in distributed memory Message Passing Interface (MPI)-based applications. These techniques improve the coverage of possible message orderings in MPI applications that rely on nondeterministic point-to-point communication and work with small processor counts to alleviate the need to test at larger scales. Using carefully designed model problems,we show that these techniques aid testing for problems that are often not easily reproduced when running on small fractions of the machine.Our perturbation layer, JITTERBUG builds on PN MPI an extension of the MPI profiling interface that supports multiple layers of profiling libraries. We discuss how JITTERBUG complements existing MPI checking tools through the PN MPI framework.We present opportunities to build additional tools that statically analyze and directly transform the source code to support testing and debugging MPI applications at reduced scale.","PeriodicalId":291507,"journal":{"name":"Parallel and Distributed Systems: Testing, Analysis, and Debugging","volume":"61 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2006-07-17","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"116080375","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}
引用次数: 31
0
×
引用
GB/T 7714-2015
复制
MLA
复制
APA
复制
导出至
BibTeX EndNote RefMan NoteFirst NoteExpress
×
提示
您的信息不完整,为了账户安全,请先补充。
现在去补充
×
提示
您因"违规操作"
具体请查看互助需知
我知道了
×
提示
确定
请完成安全验证×
相关产品
×
本文献相关产品
联系我们:info@booksci.cn Book学术提供免费学术资源搜索服务,方便国内外学者检索中英文文献。致力于提供最便捷和优质的服务体验。 Copyright © 2023 布克学术 All rights reserved.
京ICP备2023020795号-1
ghs 京公网安备 11010802042870号
Book学术文献互助
Book学术文献互助群
群 号:604180095
Book学术官方微信
小红书