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}
{"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}
{"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}
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}
{"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}
{"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}
{"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}
{"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}
{"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}
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}