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

CiteSeerX logo

Advanced Search Include Citations
Advanced Search Include Citations

RacerX: Effective, Static Detection of Race Conditions and Deadlocks. (2003)

by D R Engler, K Ashcraft
Venue:In SOSP,
Add To MetaCart

Tools

Sorted by:
Results 1 - 10 of 341
Next 10 →

Effective static race detection for Java

by Mayur Naik, Alex Aiken, John Whaley - In PLDI , 2006
"... Abstract We present a novel technique for static race detection in Java pro-grams, comprised of a series of stages that employ a combination of static analyses to successively reduce the pairs of memory accessespotentially involved in a race. We have implemented our technique and applied it to a sui ..."
Abstract - Cited by 197 (8 self) - Add to MetaCart
Abstract We present a novel technique for static race detection in Java pro-grams, comprised of a series of stages that employ a combination of static analyses to successively reduce the pairs of memory accessespotentially involved in a race. We have implemented our technique and applied it to a suite of multi-threaded Java programs. Our ex-periments show that it is precise, scalable, and useful, reporting tens to hundreds of serious and previously unknown concurrency bugsin large, widely-used programs with few false alarms.
(Show Context)

Citation Context

...bination of the two [16, 28, 39, 40, 54]. Static race detectors are eitherprimarily flow insensitive type-based systems [7, 8, 19, 20, 41, 44], flow sensitive static versions of the lockset algorithm =-=[12, 17, 47]-=-,or path sensitive model checkers [29, 42]. Despite significant advances in static race detection, state-of-the-art race detection tools are still predominantly dynamic. We set out to develop a static...

AVIO: Detecting Atomicity Violations via Access Interleaving Invariants

by Shan Lu, Joseph Tucek, Feng Qin, Yuanyuan Zhou - In ASPLOS , 2006
"... Abstract Concurrency bugs are among the most difficult to test and diagnoseof all software bugs. The multicore technology trend worsens this ..."
Abstract - Cited by 193 (26 self) - Add to MetaCart
Abstract Concurrency bugs are among the most difficult to test and diagnoseof all software bugs. The multicore technology trend worsens this
(Show Context)

Citation Context

...binations have been proposed to reduce false positives or overhead [27, 29, 43]. Static data race detection techniques include race type-safe systems [3, 10], static-versions of the lockset algorithm =-=[8]-=- and model checking techniques [17]. As discussed in Section 1, all data race detection techniques, while useful, still have several limitations, primarily because not all concurrency bugs are data ra...

FastTrack: Efficient and Precise Dynamic Race Detection

by Cormac Flanagan, Stephen N. Freund
"... Multithreaded programs are notoriously prone to race conditions. Prior work on dynamic race detectors includes fast but imprecise race detectors that report false alarms, as well as slow but precise race detectors that never report false alarms. The latter typically use expensive vector clock operat ..."
Abstract - Cited by 172 (8 self) - Add to MetaCart
Multithreaded programs are notoriously prone to race conditions. Prior work on dynamic race detectors includes fast but imprecise race detectors that report false alarms, as well as slow but precise race detectors that never report false alarms. The latter typically use expensive vector clock operations that require time linear in the number of program threads. This paper exploits the insight that the full generality of vector clocks is unnecessary in most cases. That is, we can replace heavyweight vector clocks with an adaptive lightweight representation that, for almost all operations of the target program, requires only constant space and supports constant-time operations. This representation change significantly improves time and space performance, with no loss in precision. Experimental results on Java benchmarks including the Eclipse development environment show that our FASTTRACK race detector is an order of magnitude faster than a traditional vector-clock race detector, and roughly twice as fast as the high-performance DJIT + algorithm. FASTTRACK is even comparable in speed to ERASER on our Java benchmarks, while never reporting false alarms.
(Show Context)

Citation Context

...Aiken and Gay [4] investigatestatic race detection in the context of SPMD programs. A variety of other approaches have also been developed, including model checking [7, 41, 25] and dataflow analysis =-=[12, 15]-=-, as well as scalable whole-program analyses [26, 40]. 7. Conclusions Race conditions are notoriously difficult to debug. Precise race detectors avoid the programmer-overhead of identifying and elimin...

RaceTrack: Efficient detection of data race conditions via adaptive tracking

by Yuan Yu - In SOSP , 2005
"... Bugs due to data races in multithreaded programs often exhibit non-deterministic symptoms and are notoriously difficult to find. This paper describes RaceTrack, a dynamic race detection tool that tracks the actions of a program and reports a warning whenever a suspicious pattern of activity has been ..."
Abstract - Cited by 168 (0 self) - Add to MetaCart
Bugs due to data races in multithreaded programs often exhibit non-deterministic symptoms and are notoriously difficult to find. This paper describes RaceTrack, a dynamic race detection tool that tracks the actions of a program and reports a warning whenever a suspicious pattern of activity has been observed. RaceTrack uses a novel hybrid detection algorithm and employs an adaptive approach that automatically directs more effort to areas that are more suspicious, thus providing more accurate warnings for much less overhead. A post-processing step correlates warnings and ranks code segments based on how strongly they are implicated in potential data races. We implemented RaceTrack inside the virtual machine of Microsoft’s Common Language Runtime (product version v1.1.4322) and monitored several major, real-world applications directly out-of-the-box, without any modification. Adaptive tracking resulted in a slowdown ratio of about 3x on memory-intensive programs and typically much less than 2x on other programs, and a memory ratio of typically less than 1.2x. Several serious data race bugs were revealed, some previously unknown.
(Show Context)

Citation Context

...pproach. For static race detection, the most common approach is to employ compile-time analysis on the program source, reporting all potential races that could occur in any possible program execution =-=[10, 14, 32]-=-. The primary drawback of this approach is excessive false positives (reporting a potential data race when none exists), since the compile-time analysis is often unable to determine the precise set of...

KISS: Keep It Simple and Sequential

by Shaz Qadeer, Dinghao Wu - PLDI 2004 , 2004
"... The design of concurrent programs is error-prone due to the interaction between concurrently executing threads. Traditional automated techniques for finding errors in concurrent programs, such as model checking, explore all possible thread interleavings. Since the number of thread interleavings incr ..."
Abstract - Cited by 131 (9 self) - Add to MetaCart
The design of concurrent programs is error-prone due to the interaction between concurrently executing threads. Traditional automated techniques for finding errors in concurrent programs, such as model checking, explore all possible thread interleavings. Since the number of thread interleavings increases exponentially with the number of threads, such analyses have high computational complexity. In this paper, we present a novel analysis technique for concurrent programs that avoids this exponential complexity. Our analysis transforms a concurrent program into a sequential program that simulates the execution of a large subset of the behaviors of the concurrent program. The sequential program is then analyzed by a tool that only needs to understand the semantics of sequential execution. Our technique never reports false errors but may miss errors. We have implemented the technique in KISS, an automated checker for multithreaded C programs, and obtained promising initial results by using KISS to detect race conditions in Windows device drivers.

CP-Miner: Finding Copy-Paste and Related Bugs in Large-Scale Software Code

by Zhenmin Li, Shan Lu, Suvda Myagmar, Yuanyuan Zhou - IEEE Transactions on Software Engineering , 2006
"... Abstract—Recent studies have shown that large software suites contain significant amounts of replicated code. It is assumed that some of this replication is due to copy-and-paste activity and that a significant proportion of bugs in operating systems are due to copypaste errors. Existing static code ..."
Abstract - Cited by 130 (0 self) - Add to MetaCart
Abstract—Recent studies have shown that large software suites contain significant amounts of replicated code. It is assumed that some of this replication is due to copy-and-paste activity and that a significant proportion of bugs in operating systems are due to copypaste errors. Existing static code analyzers are either not scalable to large software suites or do not perform robustly where replicated code is modified with insertions and deletions. Furthermore, the existing tools do not detect copy-paste related bugs. In this paper, we propose a tool, CP-Miner, that uses data mining techniques to efficiently identify copy-pasted code in large software suites and detects copy-paste bugs. Specifically, it takes less than 20 minutes for CP-Miner to identify 190,000 copy-pasted segments in Linux and 150,000 in FreeBSD. Moreover, CP-Miner has detected many new bugs in popular operating systems, 49 in Linux and 31 in FreeBSD, most of which have since been confirmed by the corresponding developers and have been rectified in the following releases. In addition, we have found some interesting characteristics of copy-paste in operating system code. Specifically, we analyze the distribution of copy-pasted code by size (number lines of code), granularity (basic blocks and functions), and modification within copypasted code. We also analyze copy-paste across different modules and various software versions. Index Terms—Software analysis, code reuse, code duplication, debugging aids, data mining.
(Show Context)

Citation Context

... element of prom_phys_total instead of prom_prom_taken. This bug is a semantic error and, therefore, it cannot be easily detected by memory-related bug detection tools, including static checkers [9], =-=[10]-=-, [11], [12] or dynamic tools such as Purify [13], Valgrind [14], and CCured [15]. Besides this bug, CP-Miner has also detected many other 0098-5589/06/$20.00 ß 2006 IEEE Published by the IEEE Compute...

Mondrian Memory Protection

by Emmett Witchel, Josh Cates, Krste Asanovic , 2002
"... Mondrian memory protection (MMP) is a fine-grained protection scheme that allows multiple protection domains to flexibly share memory and export protected services. In contrast to earlier pagebased systems, MMP allows arbitrary permissions control at the granularity of individual words. We use a com ..."
Abstract - Cited by 124 (3 self) - Add to MetaCart
Mondrian memory protection (MMP) is a fine-grained protection scheme that allows multiple protection domains to flexibly share memory and export protected services. In contrast to earlier pagebased systems, MMP allows arbitrary permissions control at the granularity of individual words. We use a compressed permissions table to reduce space overheads and employ two levels of permissions caching to reduce run-time overheads. The protection tables in our implementation add less than 9% overhead to the memory space used by the application. Accessing the protection tables adds less than 8% additional memory references to the accesses made by the application. Although it can be layered on top of demandpaged virtual memory, MMP is also well-suited to embedded systems with a single physical address space. We extend MMP to support segment translation which allows a memory segment to appear at another location in the address space. We use this translation to implement zero-copy networking underneath the standard read system call interface, where packet payload fragments are connected together by the translation system to avoid data copying. This saves 52% of the memory references used by a traditional copying network stack.

Associating synchronization constraints with data in an object-oriented language

by Mandana Vaziri, Frank Tip, Julian Dolby - In Proceedings of the ACM Symposium on the Principles of Programming Languages , 2006
"... Concurrency-related bugs may happen when multiple threads access shared data and interleave in ways that do not correspond to any sequential execution. Their absence is not guaranteed by the traditional notion of “data race ” freedom. We present a new definition of data races in terms of 11 problema ..."
Abstract - Cited by 123 (6 self) - Add to MetaCart
Concurrency-related bugs may happen when multiple threads access shared data and interleave in ways that do not correspond to any sequential execution. Their absence is not guaranteed by the traditional notion of “data race ” freedom. We present a new definition of data races in terms of 11 problematic interleaving scenarios, and prove that it is complete by showing that any execution not exhibiting these scenarios is serializable for a chosen set of locations. Our definition subsumes the traditional definition of a data race as well as high-level data races such as stale-value errors and inconsistent views. We also propose a language feature called atomic sets of locations, which lets programmers specify the existence of consistency properties between fields in objects, without specifying the properties themselves. We use static analysis to automatically infer those points in the code where synchronization is needed to avoid data races under our new definition. An important benefit of this approach is that, in general, far fewer annotations are required than is the case with existing approaches such as synchronized blocks or atomic sections. Our implementation successfully inferred the appropriate synchronization for a significant subset of Java’s Standard Collections framework.
(Show Context)

Citation Context

...are long and errorprone classes, since there is an explicit lock that must be held at the right places. With our constructs, synchronization wrappers are no longer needed. 5. Related Work Most static =-=[15, 28]-=- and dynamic race detectors [30, 33], as well as type systems [9, 19] and languages [5] that guarantee race freedom are based on the common definition of data races and therefore do not handle high-le...

Race Directed Random Testing of Concurrent Programs

by Koushik Sen - PLDI'08 , 2008
"... ..."
Abstract - Cited by 119 (16 self) - Add to MetaCart
Abstract not found
(Show Context)

Citation Context

...osed to infer type annotations by looking at concurrent executions. Other language based techniques for static race detection include nesC [24] and Guava [5]. Several static race detection techniques =-=[49, 19, 39]-=- based on lockset [43] have been proposed. An important advantage of the static techniques is that they could find all potential race conditions in a program. A primary limitation of these techniques ...

Conditional must not aliasing for static race detection

by Mayur Naik, Alex Aiken - In POPL , 2007
"... Abstract Race detection algorithms for multi-threaded programs using thecommon lock-based synchronization idiom must correlate locks with the memory locations they guard. The heart of a proof ofrace freedom is showing that if two locks are distinct, then the memory locations they guard are also dist ..."
Abstract - Cited by 102 (4 self) - Add to MetaCart
Abstract Race detection algorithms for multi-threaded programs using thecommon lock-based synchronization idiom must correlate locks with the memory locations they guard. The heart of a proof ofrace freedom is showing that if two locks are distinct, then the memory locations they guard are also distinct. This is an exampleof a general property we call conditional must not aliasing: Under the assumption that two objects are not aliased, prove that twoother objects are not aliased. This paper introduces and gives an algorithm for conditional must not alias analysis and discussesexperimental results for sound race detection of Java programs.
(Show Context)

Citation Context

...ce detection has seen considerable theoretical progress using a variety of approaches (flow-insensitive type systems [3, 4,15, 16, 22, 36, 39], flow-sensitive versions of the static lockset algorithm =-=[6, 13, 42]-=-, or path sensitive model checkers [25, 37]) buts(A) after original stage (B) after may-happen-in-parallel stagelikely unlikely total hexts pairs hexts pairs hexts pairs hexts pairs philo 123344 926 0...

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