Demonstration venue · read-only. Every page can be browsed; the buttons that would change it are switched off. Create an account to run TaxoReview on your own data.

Feng Qin 0003

dblp:31/3488-3 · DBLP profile ↗
← Back
9ranked-venue papers
5as first author
0since 2021 · last 2007
0000-0001-9134-4711ORCID · corroborated

Domains — the database's venue-derived domains; a paper can count in several

Systems, architecture and hardware · 7 · 3 first-authorSoftware engineering, systems software and programming languages · 4 · 2 first-author

Expertise — from the expertise taxonomy: the topics of the expert's papers under the CCF categories. A weight counts papers with recency: 1 for a paper about the topic, 0.3 when the topic is its context, halved every five years.

Software engineering, system software, and programming languages
7 papers
Debugging and program repair · 36% Program analysis · 26% Operating systems · 20%
Network and information security
3 papers
Systems and software security · 86% Network security · 14%
Computer architecture, parallel and distributed computing, and storage systems
4 papers
Processor architecture and microarchitecture · 32% Performance modeling and evaluation · 32% Memory systems · 21%

Topics — the 24 heaviest of 25, each with the papers that count most for it

TopicWeightPapersLastEvidence papers
Operating systems › fault tolerance
checkpoint and rollback
0.122007
Rx: Treating bugs as allergies - a safe method to survive software failures · ACM Trans. Comput. Syst. 2007
Rx: treating bugs as allergies - a safe method to survive software failures · SOSP 2005
Debugging and program repair
failure recovery
0.122007
Rx: Treating bugs as allergies - a safe method to survive software failures · ACM Trans. Comput. Syst. 2007
Rx: treating bugs as allergies - a safe method to survive software failures · SOSP 2005
Systems and software security
memory safety
0.122005
SafeMem: Exploiting ECC-Memory for Detecting Memory Leaks and Memory Corruption During Production Runs · HPCA 2005
AccMon: Automatically Detecting Memory-Related Bugs via Program Counter-Based Invariants · MICRO 2004
Processor architecture and microarchitecture
debugging support
0.122005
Efficient and flexible architectural support for dynamic monitoring · ACM Trans. Archit. Code Optim. 2005
iWatcher: Efficient Architectural Support for Software Debugging · ISCA 2004
Debugging and program repair › fault localization
bug diagnosis
0.122007
Rx: Treating bugs as allergies - a safe method to survive software failures · ACM Trans. Comput. Syst. 2007
Rx: treating bugs as allergies - a safe method to survive software failures · SOSP 2005
Program analysis › static analysis
bug detection
0.122005
iWatcher: Efficient Architectural Support for Software Debugging · ISCA 2004
Efficient and flexible architectural support for dynamic monitoring · ACM Trans. Archit. Code Optim. 2005
Network security › intrusion detection and prevention › intrusion detection
attack detection
0.112006
LIFT: A Low-Overhead Practical Information Flow Tracking System for Detecting Security Attacks · MICRO 2006
Systems and software security › information flow tracking
dynamic taint analysis
0.112006
LIFT: A Low-Overhead Practical Information Flow Tracking System for Detecting Security Attacks · MICRO 2006
Systems and software security
information flow tracking
0.112006
LIFT: A Low-Overhead Practical Information Flow Tracking System for Detecting Security Attacks · MICRO 2006
Concurrent programming › concurrency bugs
atomicity violation
0.112006
AVIO: detecting atomicity violations via access interleaving invariants · ASPLOS 2006
Concurrent programming
concurrency bugs
0.112006
AVIO: detecting atomicity violations via access interleaving invariants · ASPLOS 2006
Program analysis
dynamic analysis
0.112006
AVIO: detecting atomicity violations via access interleaving invariants · ASPLOS 2006
Systems and software security › memory safety › memory error detection
memory corruption detection
0.112005
SafeMem: Exploiting ECC-Memory for Detecting Memory Leaks and Memory Corruption During Production Runs · HPCA 2005
Systems and software security › memory safety
memory leak detection
0.112005
SafeMem: Exploiting ECC-Memory for Detecting Memory Leaks and Memory Corruption During Production Runs · HPCA 2005
Performance modeling and evaluation › performance monitoring
hardware-assisted monitoring
0.112005
Efficient and flexible architectural support for dynamic monitoring · ACM Trans. Archit. Code Optim. 2005
Systems and software security › memory safety
memory error detection
0.012004
AccMon: Automatically Detecting Memory-Related Bugs via Program Counter-Based Invariants · MICRO 2004
Program analysis › static analysis › bug detection
dynamic bug detection
0.012004
iWatcher: Efficient Architectural Support for Software Debugging · ISCA 2004
Debugging and program repair
fault localization
0.012004
AccMon: Automatically Detecting Memory-Related Bugs via Program Counter-Based Invariants · MICRO 2004
Performance modeling and evaluation › performance monitoring
hardware monitoring
0.012004
iWatcher: Efficient Architectural Support for Software Debugging · ISCA 2004
Memory systems › memory access
memory access monitoring
0.012004
iWatcher: Efficient Architectural Support for Software Debugging · ISCA 2004
Parallel and multicore computing › speculative parallelization
thread-level speculation
0.022005
Efficient and flexible architectural support for dynamic monitoring · ACM Trans. Archit. Code Optim. 2005
iWatcher: Efficient Architectural Support for Software Debugging · ISCA 2004
Program analysis › dynamic analysis
dynamic binary instrumentation
0.012006
LIFT: A Low-Overhead Practical Information Flow Tracking System for Detecting Security Attacks · MICRO 2006
Memory systems
cache coherence
0.012006
AVIO: detecting atomicity violations via access interleaving invariants · ASPLOS 2006
Hardware reliability and fault tolerance
error-correcting codes for memory
0.012005
SafeMem: Exploiting ECC-Memory for Detecting Memory Leaks and Memory Corruption During Production Runs · HPCA 2005

Methods — techniques the papers use, named apart from their topics

thread-level speculation · 0.2environment modification · 0.1checkpointing · 0.1runtime optimization · 0.1runtime monitoring · 0.1dynamic binary instrumentation · 0.1access interleaving invariants · 0.1dynamic memory usage behavior analysis · 0.1ECC-based detection · 0.1bloom filter · 0.1rollback and reexecution · 0.1rollback · 0.1program counter invariants · 0.0check look-aside buffer · 0.0
YearPublicationVenuePosition
2007 Rx: Treating bugs as allergies - a safe method to survive software failures
abstract
Many applications demand availability. Unfortunately, software failures greatly reduce system availability. Prior work on surviving software failures suffers from one or more of the following limitations: required application restructuring, inability to address deterministic software bugs, unsafe speculation on program execution, and long recovery time. This paper proposes an innovative safe technique, called Rx, which can quickly recover programs from many types of software bugs, both deterministic and nondeterministic. Our idea, inspired from allergy treatment in real life, is to rollback the program to a recent checkpoint upon a software failure, and then to reexecute the program in a modified environment. We base this idea on the observation that many bugs are correlated with the execution environment, and therefore can be avoided by removing the “allergen” from the environment. Rx requires few to no modifications to applications and provides programmers with additional feedback for bug diagnosis. We have implemented Rx on Linux. Our experiments with five server applications that contain seven bugs of various types show that Rx can survive six out of seven software failures and provide transparent fast recovery within 0.017--0.16 seconds, 21--53 times faster than the whole program restart approach for all but one case (CVS). In contrast, the two tested alternatives, a whole program restart approach and a simple rollback and reexecution without environmental changes, cannot successfully recover the four servers (Squid, Apache, CVS, and ypserv) that contain deterministic bugs, and have only a 40% recovery rate for the server (MySQL) that contains a nondeterministic concurrency bug. Additionally, Rx's checkpointing system is lightweight, imposing small time and space overheads.
Feng Qin 0003, Joseph A. Tucek, Yuanyuan Zhou 0001, Jagadeesan Sundaresan
ACM Trans. Comput. Syst.1
2006 AVIO: detecting atomicity violations via access interleaving invariants
abstract
Concurrency bugs are among the most difficult to test and diagnose of all software bugs. The multicore technology trend worsens this problem. Most previous concurrency bug detection work focuses on one bug subclass, data races, and neglects many other important ones such as atomicity violations, which will soon become increasingly important due to the emerging trend of transactional memory models.This paper proposes an innovative, comprehensive, invariantbased approach called AVIO to detect atomicity violations. Our idea is based on a novel observation called access interleaving invariant, which is a good indication of programmers' assumptions about the atomicity of certain code regions. By automatically extracting such invariants and detecting violations of these invariants at run time, AVIO can detect a variety of atomicity violations.Based on this idea, we have designed and built two implementations of AVIO and evaluated the trade-offs between them. The first implementation, AVIO-S, is purely in software, while the second, AVIO-H, requires some simple extensions to the cache coherence hardware. AVIO-S is cheaper and more accurate but incurs much higher overhead and thus more run-time perturbation than AVIOH. Therefore, AVIO-S is more suitable for in-house bug detection and postmortem bug diagnosis, while AVIO-H can be used for bug detection during production runs.We evaluate both implementations of AVIO using large realworld server applications (Apache and MySQL) with six representative real atomicity violation bugs, and SPLASH-2 benchmarks. Our results show that AVIO detects more tested atomicity violations of various types and has 25 times fewer false positives than previous solutions on average.
Shan Lu 0001, Joseph A. Tucek, Feng Qin 0003, Yuanyuan Zhou 0001
ASPLOS3
2006 LIFT: A Low-Overhead Practical Information Flow Tracking System for Detecting Security Attacks
abstract
Computer security is severely threatened by software vulnerabilities. Prior work shows that information flow tracking (also referred to as taint analysis) is a promising technique to detect a wide range of security attacks. However, current information flow tracking systems are not very practical, because they either require program annotations, source code, non-trivial hardware extensions, or incur prohibitive runtime overheads. This paper proposes a low overhead, software-only information flow tracking system, called LIFT, which minimizes run-time overhead by exploiting dynamic binary instrumentation and optimizations/or detecting various types of security attacks without requiring any hardware changes. More specifically, LIFT aggressively eliminates unnecessary dynamic information flow tracking, coalesces information checks, and efficiently switches between target programs and instrumented information flow tracking code. We have implemented LIFT on a dynamic binary instrumentation framework on Windows. Our real-system experiments with two real-world server applications, one client application and eighteen attack benchmarks show that LIFT can effectively detect various types of security attacks. LIFT also incurs very low overhead, only 6.2% for server applications, and 3.6 times on average for seven SPEC INT2000 applications. Our dynamic optimizations are very effective in reducing the overhead by a factor of 5-12 times
Feng Qin 0003, Cheng Wang 0013, Zhenmin Li, Ho-Seop Kim, Yuanyuan Zhou 0001, Youfeng Wu
MICRO1
2005 Treating Bugs as Allergies: A Safe Method for Surviving Software Failures
Feng Qin 0003, Joseph A. Tucek, Yuanyuan Zhou 0001
HotOS1
2005 SafeMem: Exploiting ECC-Memory for Detecting Memory Leaks and Memory Corruption During Production Runs
abstract
Memory leaks and memory corruption are two major forms of software bugs that severely threaten system availability and security. According to the US-CERT vulnerability notes database, 68% of all reported vulnerabilities in 2003 were caused by memory leaks or memory corruption. Dynamic monitoring tools, such as the state-of-the-art Purify, are commonly used to detect memory leaks and memory corruption. However, most of these tools suffer from high overhead, with up to a 20 times slowdown, making them infeasible to be used for production-runs. This paper proposes a tool called SafeMem to detect memory leaks and memory corruption on-the-fly during production-runs. This tool does not rely on any new hardware support. Instead, it makes a novel use of existing ECC memory technology and exploits intelligent dynamic memory usage behavior analysis to detect memory leaks and corruption. We have evaluated SafeMem with seven real-world applications that contain memory leak or memory corruption bugs. SafeMem detects all tested bugs with low overhead (only 1.6%-14.4%), 2-3 orders of magnitudes smaller than Purify. Our results also show that ECC-protection is effective in pruning false positives for memory leak detection, and in reducing the amount of memory waste (by a factor of 64-74) used for memory monitoring in memory corruption detection compared to page-protection.
Feng Qin 0003, Shan Lu 0001, Yuanyuan Zhou 0001
HPCA1
2005 Rx: treating bugs as allergies - a safe method to survive software failures
abstract
Many applications demand availability. Unfortunately, software failures greatly reduce system availability. Prior work on surviving software failures suffers from one or more of the following limitations: Required application restructuring, inability to address deterministic software bugs, unsafe speculation on program execution, and long recovery time.This paper proposes an innovative safe technique, called Rx, which can quickly recover programs from many types of software bugs, both deterministic and non-deterministic. Our idea, inspired from allergy treatment in real life, is to rollback the program to a recent checkpoint upon a software failure, and then to re-execute the program in a modified environment. We base this idea on the observation that many bugs are correlated with the execution environment, and therefore can be avoided by removing the "allergen" from the environment. Rx requires few to no modifications to applications and provides programmers with additional feedback for bug diagnosis.We have implemented RX on Linux. Our experiments with four server applications that contain six bugs of various types show that RX can survive all the six software failures and provide transparent fast recovery within 0.017-0.16 seconds, 21-53 times faster than the whole program restart approach for all but one case (CVS). In contrast, the two tested alternatives, a whole program restart approach and a simple rollback and re-execution without environmental changes, cannot successfully recover the three servers (Squid, Apache, and CVS) that contain deterministic bugs, and have only a 40% recovery rate for the server (MySQL) that contains a non-deterministic concurrency bug. Additionally, RX's checkpointing system is lightweight, imposing small time and space overheads.
Feng Qin 0003, Joseph A. Tucek, Jagadeesan Sundaresan, Yuanyuan Zhou 0001
SOSP1
2005 Efficient and flexible architectural support for dynamic monitoring
abstract
Recent impressive performance improvements in computer architecture have not led to significant gains in the case of debugging. Software debugging often relies on inserting run-time software checks. In many cases, however, it is hard to find the root cause of a bug. Moreover, program execution typically slows down significantly, often by 10--100 times.To address this problem, this paper introduces the intelligent watcher (iWatcher) , a novel architectural scheme to monitor dynamic execution automatically, flexibly, and with minimal overhead. iWatcher associates program-specified monitoring functions with memory locations. When any such location is accessed, the monitoring function is automatically triggered with low overhead. To further reduce overhead and support rollback, iWatcher can optionally leverage thread-level speculation (TLS). The iWatcher architecture can be used to detect various bugs, including buffer overflow, accessing freed locations, memory leaks, stack-smashing and value-invariant violations. To evaluate iWatcher, we use seven applications with various real and injected bugs. Our results show that iWatcher detects many more software bugs than Valgrind, a well-known open-source bug detector. Moreover, iWatcher only induces a 0.1--179% execution overhead, which is orders of magnitude less than Valgrind. Our sensitivity study shows that even with 20% of the dynamic loads monitored in a program, iWatcher adds only 72--182% overhead. Finally, TLS is effective at reducing overheads for programs with substantial monitoring.
Yuanyuan Zhou 0001, Pin Zhou, Feng Qin 0003, Wei Liu 0014, Josep Torrellas
ACM Trans. Archit. Code Optim.3
2004 iWatcher: Efficient Architectural Support for Software Debugging
abstract
Recent impressive performance improvements in computer architecture have not led to significant gains in ease of debugging. Software debugging often relies on inserting run-time software checks. In many cases, however, it is hard to find the root cause of a bug. Moreover, program execution typically slows down significantly, often by 10-100 times. To address this problem, this paper introduces the Intelligent Watcher (iWatcher), novel architectural support to monitor dynamic execution with minimal overhead, automatically, and flexibly. iWatcher associates program-specified monitoring functions with memory locations. When any such location is accessed, the monitoring function is automatically triggered with low overhead. To further reduce overhead and support rollback, iWatcher can leverage Thread-Level Speculation (TLS). To test iWatcher, we use applications with various bugs. Our results show that iWatcher detects many more software bugs than Valgrind, a well-known open-source bug detector. Moreover, iWatcher only induces a 4-80% execution overhead, which is orders of magnitude less than Valgrind. Even with 20% of the dynamic loads monitored in a program, iWatcher adds only 66-174% overhead. Finally, TLS is effective at reducing overheads for programs with substantial monitoring.
Pin Zhou, Feng Qin 0003, Wei Liu 0014, Yuanyuan Zhou 0001, Josep Torrellas
ISCA2
2004 AccMon: Automatically Detecting Memory-Related Bugs via Program Counter-Based Invariants
abstract
This paper makes two contributions to architectural support for software debugging. First, it proposes a novel statistics-based, on-the-fly bug detection method called PC-based invariant detection. The idea is based on the observation that, in most programs, a given memory location is typically accessed by only a few instructions. Therefore, by capturing the invariant of the set of PCs that normally access a given variable, we can detect accesses by outlier instructions, which are often caused by memory corruption, buffer overflow, stack smashing or other memory-related bugs. Since this method is statistics-based, it can detect bugs that do not violate any programming rules and that, therefore, are likely to be missed by many existing tools. The second contribution is a novel architectural extension called the Check Look-aside Buffer (CLB). The CLB uses a Bloom filter to reduce monitoring overheads in the recently-proposed iWatcher architectural framework for software debugging. The CLB significantly reduces the overhead of PC-based invariant debugging. We demonstrate a PC-based invariant detection tool called AccMon that leverages architectural, run-time system and compiler support. Our experimental results with seven buggy applications and a total of ten bugs, show that AccMon can detect all ten bugs with few false alarms (0 for five applications and 2-8 for two applications) and with low overhead (0.24-2.88 times). Several existing tools evaluated, including Purify, CCured and value-based invariant detection tools, fail to detect some of the bugs. In addition, Purify's overhead is one order of magnitude higher than AccMon's. Finally, we show that the CLB is very effective at reducing overhead.
Pin Zhou, Wei Liu 0014, Long Fei, Shan Lu 0001, Feng Qin 0003, Yuanyuan Zhou 0001, Samuel P. Midkiff, Josep Torrellas
MICRO5