• Documents
  • Authors
  • Tables
  • Log in
  • Sign up
  • MetaCart
  • DMCA
  • Donate

CiteSeerX logo

Advanced Search Include Citations
Advanced Search Include Citations

Persuasive Prediction of Concurrency Access Anomalies

by Jeff Huang, Charles Zhang
Add To MetaCart

Tools

Sorted by:
Results 1 - 10 of 10

Axis: Automatically fixing atomicity violations through solving control constraints

by Peng Liu, Charles Zhang - In International Conference on Software Engineering , 2012
"... Abstract—Atomicity, a general correctness criterion in concurrency programs, is often violated in real-world applications. The violations are difficult for developers to fix, making automatic bug fixing techniques attractive. The state of the art approach aims at automating the manual fixing process ..."
Abstract - Cited by 12 (1 self) - Add to MetaCart
Abstract—Atomicity, a general correctness criterion in concurrency programs, is often violated in real-world applications. The violations are difficult for developers to fix, making automatic bug fixing techniques attractive. The state of the art approach aims at automating the manual fixing process but cannot provide any theoretical reasoning and guarantees. We provide an automatic approach that applies well-studied discrete control theory to guarantee deadlocks are not introduced and maximal preservation of the concurrency of the original code. Under the hood, we reduce the problem of violation fixing to a constraint solving problem using the Petri net model. Our evaluation on 13 subjects shows that the slowdown incurred by our patches is only 40 % of that of the state of the art. With the deadlock-free guarantee, our patches incur moderate overhead (around 10%), which is a worthwhile cost for safety. I.
(Show Context)

Citation Context

...atically detected violations, our current focus is to deal with dynamically discovered bugs with both the offending statements and their calling contexts available. Most dynamic bug detection tools ( =-=[16]-=-, [26]) can provide this information easily. Each single variable atomicity violation can be characterized by three statements, sα, sβ and sγ, where sα and sβ are executed by the same thread and sγ is...

Finding Errors in Multithreaded GUI Applications

by Sai Zhang, Hao Lü, Michael D. Ernst
"... To keep a Graphical User Interface (GUI) responsive and active, a GUI application often has a main UI thread (or event dispatching thread) and spawns separate threads to handle lengthy operations in the background, such as expensive computation, I/O tasks, and network requests. Many GUI frameworks r ..."
Abstract - Cited by 7 (0 self) - Add to MetaCart
To keep a Graphical User Interface (GUI) responsive and active, a GUI application often has a main UI thread (or event dispatching thread) and spawns separate threads to handle lengthy operations in the background, such as expensive computation, I/O tasks, and network requests. Many GUI frameworks require all GUI objects to be accessed exclusively by the UI thread. If a GUI object is accessed from a non-UI thread, an invalid thread access error occurs and the whole application may abort. This paper presents a general technique to find such invalid thread access errors in multithreaded GUI applications. We formulate finding invalid thread access errors as a call graph reachability problem with thread spawning as the sources and GUI object accessing as the sinks. Standard call graph construction algorithms fail to build a good call graph for some modern GUI applications, because of heavy use of reflection. Thus, our technique builds reflection-aware call graphs. We implemented our technique and instantiated it for four popular Java GUI frameworks: SWT, the Eclipse plugin framework, Swing, and Android. In an evaluation on 9 programs comprising 89273 LOC, our technique found 5 previously-known errors and 5 new ones.
(Show Context)

Citation Context

...ns, and our core technique has been tailored for four GUI frameworks. 5.2 Finding Bugs in Multithreaded Programs A rich body of techniques have been developed to detect bugs in multithreaded programs =-=[14,19,25,31]-=-. Runtime analysis tools such as Eraser [31] dynamically detect concurrency bugs using lockset algorithms. Static analysis tools such as Chord [25] exploit a key property of Java - namely the scoped u...

Predicting Null-Pointer Dereferences in Concurrent Programs ∗

by Azadeh Farzan, P. Madhusudan, Niloofar Razavi, Francesco Sorrentino
"... We propose null-pointer dereferences as a target for finding bugs in concurrent programs using testing. A null-pointer dereference prediction engine observes an execution of a concurrent program under test and predicts alternate interleavings that are likely to cause null-pointer dereferences. Thoug ..."
Abstract - Cited by 4 (1 self) - Add to MetaCart
We propose null-pointer dereferences as a target for finding bugs in concurrent programs using testing. A null-pointer dereference prediction engine observes an execution of a concurrent program under test and predicts alternate interleavings that are likely to cause null-pointer dereferences. Though accurate scalable prediction is intractable, we provide a carefully chosen novel set of techniques to achieve reasonably accurate and scalable prediction. We use an abstraction to the shared-communication level, take advantage of a static lock-set based pruning, and finally, employ precise and relaxed constraint solving techniques that use an SMT solver to predict schedules. We realize our techniques in a tool, ExceptioNULL, and evaluate it over 13 benchmark programs and find scores of nullpointer dereferences by using only a single test run as the prediction seed for each benchmark. D.2.4 [Software Engineer-D.2.5 [Software Engineer-
(Show Context)

Citation Context

...at do not use logical methods. These algorithms may focus on predicting runs violating atomicity or containing data-races: those by Sorrentino et al. [13, 27], those by Wang and Stoller [31, 32], and =-=[14]-=- by Huang and Zhang. A more liberal notion of generalized dynamic analysis of a single run has also been studied in a series of papers by Chen et al. [9, 10]. JPREDICTOR [10] offers a predictive runti...

Maximal sound predictive race detection with control flow abstraction

by Jeff Huang , Patrick O' , Neil Meredith , Grigore Rosu - in Proceedings of the 35th ACM SIGPLAN Conference on Programming Language Design and Implementation, ser. PLDI
"... Abstract Despite the numerous static and dynamic program analysis techniques in the literature, data races remain one of the most common bugs in modern concurrent software. Further, the techniques that do exist either have limited detection capability or are unsound, meaning that they report false ..."
Abstract - Cited by 4 (1 self) - Add to MetaCart
Abstract Despite the numerous static and dynamic program analysis techniques in the literature, data races remain one of the most common bugs in modern concurrent software. Further, the techniques that do exist either have limited detection capability or are unsound, meaning that they report false positives. We present a sound race detection technique that achieves a provably higher detection capability than existing sound techniques. A key insight of our technique is the inclusion of abstracted control flow information into the execution model, which increases the space of the causal model permitted by classical happens-before or causally-precedes based detectors. By encoding the control flow and a minimal set of feasibility constraints as a group of first-order logic formulae, we formulate race detection as a constraint solving problem. Moreover, we formally prove that our formulation achieves the maximal possible detection capability for any sound dynamic race detector with respect to the same input trace under the sequential consistency memory model. We demonstrate via extensive experimentation that our technique detects more races than the other state-of-the-art sound race detection techniques, and that it is scalable to executions of real world concurrent applications with tens of millions of critical events. These experiments also revealed several previously unknown races in real systems (e.g., Eclipse) that have been confirmed or fixed by the developers. Our tool is also adopted by Eclipse developers.
(Show Context)

Citation Context

... permission and/or a fee. Request permissions from permissions@acm.org. PLDI ’14, June 09–11, 2014, Edinburgh, United Kingdom. Copyright © 2014 ACM 978-1-4503-2784-8/14/06. . . $15.00. http://dx.doi.org/10.1145/2594291.2594315 initially x=y=0 resource z=0 Thread t1 Thread t2 1. fork t2 2. lock l 3. x = 1 4. y = 1 5. unlock l 6. { //begin 7. lock l 8. r1 = y 9. unlock l 10. r2 = x 11. if (r1 == r2) 12. z = 1 (auth) 13. } //end 14. join t2 15. r3 = z (use) 16. if (r3 == 0) 17. Error Figure 1. An example program with a race (3,10). Although researchers have proposed a wide spectrum of techniques [7, 10, 13, 14, 19, 21, 24, 28, 30, 31, 35] to combat races, existing techniques are either unsound (by soundness we mean nofalse-positive in this paper) or have a limited detection capability. The school of lockset-based techniques [14, 21, 28, 31] popularized by Eraser [31] is known to be unsound, whereas the happensbefore (HB) based approaches [7, 13, 19, 24] are often very limited in detecting races, due to extra overly conservative HB edges. Even though a recent development, causally-precedes (CP) [35], improves the detection power by soundly relaxing the HB edges between critical sections that have no conflicting accesses, it can...

Performance Regression Testing of Concurrent Classes

by Michael Pradel, Markus Huggler, Thomas R. Gross
"... Developers of thread-safe classes struggle with two oppos-ing goals. The class must be correct, which requires syn-chronizing concurrent accesses, and the class should pro-vide reasonable performance, which is difficult to realize in the presence of unnecessary synchronization. Validating the perfor ..."
Abstract - Cited by 4 (2 self) - Add to MetaCart
Developers of thread-safe classes struggle with two oppos-ing goals. The class must be correct, which requires syn-chronizing concurrent accesses, and the class should pro-vide reasonable performance, which is difficult to realize in the presence of unnecessary synchronization. Validating the performance of a thread-safe class is challenging because it requires diverse workloads that use the class, because ex-isting performance analysis techniques focus on individual bottleneck methods, and because reliably measuring the per-formance of concurrent executions is difficult. This paper presents SpeedGun, an automatic performance regression testing technique for thread-safe classes. The key idea is to generate multi-threaded performance tests and to com-pare two versions of a class with each other. The analysis notifies developers when changing a thread-safe class signif-icantly influences the performance of clients of this class. An evaluation with 113 pairs of classes from popular Java projects shows that the analysis effectively identifies 13 per-formance differences, including performance regressions that the respective developers were not aware of.
(Show Context)

Citation Context

...hods. Due to the contradicting nature of these two goals, correctness and performance, developers often struggle to achieve both. To achieve correctness, developers can rely on bug finding techniques =-=[17, 16, 6, 46, 26, 41]-=- and approaches that influence the schedule of concurrent executions [15, 36, 12, 7, 45, 40, 32, 30, 25, 57, 49]. In contrast, developers currently have only little support to measure, improve, and ma...

Bita: Coverage-Guided, Automatic Testing of Actor Programs

by Samira Tasharofi, Michael Pradel, Yu Lin, Ralph Johnson
"... Abstract—Actor programs are concurrent programs where concurrent entities communicate asynchronously by exchanging messages. Testing actor programs is challenging because the order of message receives depends on the non-deterministic scheduler and because exploring all schedules does not scale to la ..."
Abstract - Cited by 2 (1 self) - Add to MetaCart
Abstract—Actor programs are concurrent programs where concurrent entities communicate asynchronously by exchanging messages. Testing actor programs is challenging because the order of message receives depends on the non-deterministic scheduler and because exploring all schedules does not scale to large programs. This paper presents Bita, a scalable, automatic approach for testing non-deterministic behavior of actor programs. The key idea is to generate and explore schedules that are likely to reveal concurrency bugs because these schedules increase the schedule coverage. We present three schedule coverage criteria for actor programs, an algorithm to generate feasible schedules that increase coverage, and a technique to force a program to comply with a schedule. Applying Bita to real-world actor programs implemented in Scala reveals eight previously unknown concurrency bugs, of which six have already been fixed by the developers. Furthermore, we show our approach to find bugs 122x faster than random scheduling, on average. I.
(Show Context)

Citation Context

...rs them is: S = {〈w1, w2, fl〉, 〈fl, w2, w1〉, 〈w1, fl, w2〉, 〈fl, w1, w2〉}. The P CR criterion relates to coverage criteria for shared memory programs that consider pairs of accesses to a shared object =-=[26]-=-, [35], [52] and adapts the idea to actor programs. 2) Pair of Receives: This criterion is a less restrictive version of P CR, in which the two receives for an actor do not need to be consecutive. The...

Testing and Debugging

by Jie Yu, Satish Narayanasamy, Cristiano Pereira, Gilles Pokam
"... Testing multithreaded programs is a hard problem, because it is challenging to expose those rare interleavings that can trigger a concurrency bug. We propose a new thread interleaving coverage-driven testing tool called Maple that seeks to expose untested thread interleavings as much as possible. It ..."
Abstract - Add to MetaCart
Testing multithreaded programs is a hard problem, because it is challenging to expose those rare interleavings that can trigger a concurrency bug. We propose a new thread interleaving coverage-driven testing tool called Maple that seeks to expose untested thread interleavings as much as possible. It memoizes tested interleavings and actively seeks to expose untested interleavings for a given test input to increase interleaving coverage. We discuss several solutions to realize the above goal. First, we discuss a coverage metric based on a set of interleaving idioms. Second, we discuss an online technique to predict untested interleavings that can potentially be exposed for a given test input. Finally, the predicted untested interleavings are exposed by actively controlling the thread schedule while executing for the test input. We discuss our experiences in using the tool to expose several known and unknown bugs in real-world applications such as Apache and MySQL.
(Show Context)

Citation Context

...in a real execution and produce a failed test run to validate that the suspected bug is a true positive. Active testing tools target specific bug types such as data-races [38] or atomicity violations =-=[17, 23, 35, 36, 40]-=-, and therefore are not generic. For a given test input, after actively testing for all the predicted buggy thread interleavings, a programmer may not be able to determine whether she should continue ...

A Unified Approach to Eliminating Concurrency Bugs via Control Synthesis

by Peng Liu, Charles Zhang, Yin Wang, Terence Kelly
"... Concurrency bugs threaten the safety of shared-memory multithreaded programs. The automated fixing techniques add new synchronization constructs; existing techniques may add too many synchronization constructs, sacrifice too much concurrency, or introduce deadlocks. The underlying problem is that ex ..."
Abstract - Add to MetaCart
Concurrency bugs threaten the safety of shared-memory multithreaded programs. The automated fixing techniques add new synchronization constructs; existing techniques may add too many synchronization constructs, sacrifice too much concurrency, or introduce deadlocks. The underlying problem is that existing techniques cannot simultaneously fix different bugs, especially different types of bugs, while restricting concurrency as little as possible. We present a unified concurrency bug avoidance approach to fix different types of bugs simultaneously. Our approach minimizes the number of synchronization constructs added while restricting concurrency as little as possible and guaranteeing that no new deadlocks are introduced. Our approach employs a unified vector representation of different types of bugs and reduces bug fixing to the well-studied problem of vector separation. Experiments on 14 real Java programs show that our solution incurs around 5 % overhead, and typically incurs 6%-10 % smaller overhead as compared to our previous Axis solution. 1.
(Show Context)

Citation Context

...ows. 4.2 Program Modeling Input Our Petri modeling resembles that adopted in the prior work [21], as explained in Section 3.1. The input to the modeling is typically bugs detected by dynamic analysis =-=[3, 13, 20, 27, 29]-=- for two reasons: (1) The false positives detected by the static analysis, if fixed faithfully, lead to unnecessarily high runtime overhead. (2) The dynamic analysis can provide precisely the contexts...

Griffin: Grouping Suspicious Memory-Access Patterns to Improve Understanding of Concurrency Bugs

by Sangmin Park, Mary Jean Harrold, Richard Vuduc , 2013
"... This paper presents Griffin, a new fault-comprehension technique. Griffin provides a way to explain concurrency bugs using additional information over existing fault-localization techniques, and thus, bridges the gap between fault-localization and fault-fixing techniques. Griffin inputs a list of me ..."
Abstract - Add to MetaCart
This paper presents Griffin, a new fault-comprehension technique. Griffin provides a way to explain concurrency bugs using additional information over existing fault-localization techniques, and thus, bridges the gap between fault-localization and fault-fixing techniques. Griffin inputs a list of memory-access patterns and a coverage matrix, groups those patterns responsible for the same concurrency bug, and outputs the grouped patterns along with suspicious methods and bug graphs. Griffin is the first technique that handles multiple concurrency bugs. This paper also describes the implementation of Griffin in Java and C++, and shows the empirical evaluation of Griffin on a set of subjects. The results show that, for our subjects, Griffin clusters failing executions and memory-access patterns for the same bug with few false positives, provides suspicious methods that contain the locations to be fixed, and runs efficiently.
(Show Context)

Citation Context

...ultiple bugs manually from the bug report. Other existing techniques attempt to semi-automatically fix concurrency bugs [10, 12, 14]. The techniques input concurrency bugs reported from bug detectors =-=[9, 27]-=-, select fix strategies, and produce patches that enforce correct orderings using synchronization operations. However, these techniques also have limitations. First, the techniques are not completely ...

Trace Driven Dynamic Deadlock Detection and Reproduction

by Malavika Samak, Murali Krishna Ramanathan
"... Dynamic analysis techniques have been proposed to detect potential deadlocks. Analyzing and comprehending each po-tential deadlock to determine whether the deadlock is feasi-ble in a real execution requires significant programmer ef-fort. Moreover, empirical evidence shows that existing anal-yses ar ..."
Abstract - Add to MetaCart
Dynamic analysis techniques have been proposed to detect potential deadlocks. Analyzing and comprehending each po-tential deadlock to determine whether the deadlock is feasi-ble in a real execution requires significant programmer ef-fort. Moreover, empirical evidence shows that existing anal-yses are quite imprecise. This imprecision of the analyses further void the manual effort invested in reasoning about non-existent defects. In this paper, we address the problems of imprecision of existing analyses and the subsequent manual effort nec-essary to reason about deadlocks. We propose a novel ap-proach for deadlock detection by designing a dynamic anal-ysis that intelligently leverages execution traces. To reduce the manual effort, we replay the program by making the ex-ecution follow a schedule derived based on the observed trace. For a real deadlock, its feasibility is automatically ver-ified if the replay causes the execution to deadlock. We have implemented our approach as part of WOLF and have analyzed many large (upto 160KLoC) Java programs. Our experimental results show that we are able to identify 74 % of the reported defects as true (or false) positives au-tomatically leaving very few defects for manual analysis. The overhead of our approach is negligible making it a com-pelling tool for practical adoption.
(Show Context)

Citation Context

...eds to be performed by a programmer to understand defects and concentrate on real bugs. To improve the reliability of concurrent programs, many techniques based on manipulating schedules are proposed =-=[5, 7, 11, 12, 31]-=-. Cui et al. [4, 5, 34] propose schedule specialization to guard against bugs caused due to nondeterminism. Huang and Zhang [11] design a tool PECAN to generate a feasible schedule for access anomalie...

Powered by: Apache Solr
  • About CiteSeerX
  • Submit and Index Documents
  • Privacy Policy
  • Help
  • Data
  • Source
  • Contact Us

Developed at and hosted by The College of Information Sciences and Technology

© 2007-2019 The Pennsylvania State University