Shanxiang Qi

dblp:09/6786 · DBLP profile ↗
← Back
8ranked-venue papers
2as first author
0since 2021 · last 2016
—ORCID · none

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

Systems, architecture and hardware · 5 · 2 first-authorSoftware engineering, systems software and programming languages · 3Applied, interdisciplinary, general and emerging computing · 1

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
8 papers
Concurrent programming · 74% Program analysis · 11% Software maintenance and evolution · 7%
Computer architecture, parallel and distributed computing, and storage systems
5 papers
Memory systems · 69% Processor architecture and microarchitecture · 31%

Topics — the 16 heaviest of 19, each with the papers that count most for it

TopicWeightPapersLastEvidence papers
Concurrent programming
concurrency bugs
0.732016
A Lightweight System for Detecting and Tolerating Concurrency Bugs · IEEE Trans. Software Eng. 2016
Fixing, preventing, and recovering from concurrency bugs · Sci. China Inf. Sci. 2015
Dynamically detecting and tolerating IF-Condition Data Races · HPCA 2014
Concurrent programming › concurrency bugs
atomicity violation
0.422016
A Lightweight System for Detecting and Tolerating Concurrency Bugs · IEEE Trans. Software Eng. 2016
AI: a lightweight system for tolerating concurrency bugs · SIGSOFT FSE 2014
Concurrent programming › concurrency bugs
data race tolerance
0.322014
Dynamically detecting and tolerating IF-Condition Data Races · HPCA 2014
Pacman: Tolerating asymmetric data races with unintrusive hardware · HPCA 2012
Concurrent programming › concurrency bug detection
data race detection
0.322014
Dynamically detecting and tolerating IF-Condition Data Races · HPCA 2014
SigRace: signature-based data race detection · ISCA 2009
Software maintenance and evolution › software maintenance
bug fixing
0.212015
Fixing, preventing, and recovering from concurrency bugs · Sci. China Inf. Sci. 2015
Memory systems
cache coherence
0.232012
Pacman: Tolerating asymmetric data races with unintrusive hardware · HPCA 2012
Vulcan: Hardware Support for Detecting Sequential Consistency Violations Dynamically · MICRO 2012
SigRace: signature-based data race detection · ISCA 2009
Concurrent programming
concurrency bug detection
0.212014
AI: a lightweight system for tolerating concurrency bugs · SIGSOFT FSE 2014
Program analysis
dynamic analysis
0.112012
Vulcan: Hardware Support for Detecting Sequential Consistency Violations Dynamically · MICRO 2012
Concurrent programming
memory models
0.112012
Vulcan: Hardware Support for Detecting Sequential Consistency Violations Dynamically · MICRO 2012
Program analysis › dynamic analysis
runtime detection
0.112012
Vulcan: Hardware Support for Detecting Sequential Consistency Violations Dynamically · MICRO 2012
Concurrent programming › concurrency bug detection › data race detection
hardware-assisted race detection
0.112009
SigRace: signature-based data race detection · ISCA 2009
Memory systems
memory consistency
0.112009
BulkCompiler: high-performance sequential consistency through cooperative compiler and hardware support · MICRO 2009
Memory systems › memory consistency › memory consistency model
sequential consistency
0.112009
BulkCompiler: high-performance sequential consistency through cooperative compiler and hardware support · MICRO 2009
Program analysis › static analysis
bug detection
0.112016
A Lightweight System for Detecting and Tolerating Concurrency Bugs · IEEE Trans. Software Eng. 2016
Program verification
program invariants
0.112014
AI: a lightweight system for tolerating concurrency bugs · SIGSOFT FSE 2014
Concurrent programming › synchronization
critical sections
0.012012
Pacman: Tolerating asymmetric data races with unintrusive hardware · HPCA 2012

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

thread stalling · 0.4anticipating invariant · 0.4hardware support · 0.4code transformation · 0.4cycle detection · 0.3cache coherence protocol transactions · 0.3cache coherence hardware · 0.3signature intersection · 0.2hardware address signatures · 0.2
YearPublicationVenuePosition
2016 A Lightweight System for Detecting and Tolerating Concurrency Bugs
abstract
Along with the prevalence of multi-threaded programs, concurrency bugs have become one of the most important sources of software bugs. Even worse, due to the non-deterministic nature of concurrency bugs, these bugs are both difficult to detect and fix even after the detection. As a result, it is highly desired to develop an all-around approach that is able to not only detect them during the testing phase but also tolerate undetected bugs during production runs. However, existing bug-detecting and bug-tolerating tools are usually either1)constrained in types of bugs they can handle or2)requiring specific hardware supports for achieving an acceptable overhead. In this paper, we present a novel program invariant, name Anticipating Invariant (Ai), that can detect most types of concurrency bugs. More importantly,Aican be used to anticipate many concurrency bugs before any irreversible changes have been made. Thus it enables us to develop a software-only system that is able to forestall failures with a simple thread stalling technique, which does not rely on execution roll-back and hence has good performance. Experiments with 35 real-world concurrency bugs demonstrate thatAiis capable of detecting and tolerating many important types of concurrency bugs, including both atomicity and order violations. It has also exposed two new bugs (confirmed by developers) that were never reported before in the literature. Performance evaluation with 6 representative parallel programs shows thatAiincurs negligible overhead ($ < 1\%$) for many nontrivial desktop and server applications.
Yongwei Wu 0001, Shan Lu 0001, Shanxiang Qi, Jinglei Ren
IEEE Trans. Software Eng.4
2015 Fixing, preventing, and recovering from concurrency bugs
Dongdong Deng, Guoliang Jin, Marc de Kruijf, Ben Liblit, Shan Lu 0001, Shanxiang Qi, Jinglei Ren, Karthikeyan Sankaralingam, Linhai Song, Yongwei Wu 0001, Wei Zhang 0022
Sci. China Inf. Sci.7
2014 Dynamically detecting and tolerating IF-Condition Data Races
abstract
An IF-Condition Invariance Violation (ICIV) occurs when, after a thread has computed the control expression of an IF statement and while it is executing the THEN or ELSE clauses, another thread updates variables in the IF's control expression. An ICIV can be easily detected, and is likely to be a sign of a concurrency bug in the code. Typically, the ICIV is caused by a data race, which we call IF-Condition Data Race (ICR). In this paper, we analyze the data races reported in the bug databases of popular software systems and show that ICRs occur relatively often. Then, we present two techniques to handle ICRs dynamically. They rely on simple code transformations and, in one case, additional hardware help. One of them (SW-IF) detects the races, while the other (HW-IF) detects and prevents them. We evaluate SW-IF and HW-IF using a variety of applica- tions. We show that these new techniques are effective at finding new data race bugs and run with low overhead. Specifically, HW-IF finds 5 new (unreported) race bugs and SW-IF finds 3 of them. In addition, 8-threaded executions of SPLASH-2 codes show that, on average, SW-IF adds 2% execution overhead, while HW-IF adds less than 1%.
Shanxiang Qi, Abdullah Muzahid, Wonsun Ahn, Josep Torrellas
HPCA1
2014 AI: a lightweight system for tolerating concurrency bugs
abstract
Concurrency bugs are notoriously difficult to eradicate during software testing because of their non-deterministic nature. Moreover, fixing concurrency bugs is time-consuming and error-prone. Thus, tolerating concurrency bugs during production runs is an attractive complementary approach to bug detection and testing. Unfortunately, existing bug-tolerating tools are usually either 1) constrained in types of bugs they can handle or 2) requiring roll-back mechanism, which can hitherto not be fully achieved efficiently without hardware supports. This paper presents a novel program invariant, called Anticipating Invariant (AI), which can help anticipate bugs before any irreversible changes are made. Benefiting from this ability of anticipating bugs beforehand, our software-only system is able to forestall the failures with a simple thread stalling technique, which does not rely on execution roll-back and hence has good performance Experiments with 35 real-world concurrency bugs demonstrate that AI is capable of detecting and tolerating most types of concurrency bugs, including both atomicity and order violations. Two new bugs have been detected and confirmed by the corresponding developers. Performance evaluation with 6 representative parallel programs shows that AI incurs negligible overhead (<1%) for many nontrivial desktop and server applications.
Yongwei Wu 0001, Shan Lu 0001, Shanxiang Qi, Jinglei Ren
SIGSOFT FSE4
2012 Pacman: Tolerating asymmetric data races with unintrusive hardware
abstract
Data races are a major contributor to parallel software unreliability. A type of race that is both common and typically harmful is the Asymmetric data race. It occurs when at least one of the racing threads is inside a critical section. Current proposals that target them are software-based. They slow down execution and require significant compiler, operating system (OS), or application changes. This paper proposes the first scheme to tolerate asymmetric data races in production runs with negligible execution overhead. The scheme, called Pacman, exploits cache coherence hardware to temporarily protect the variables that a thread accesses in a critical section from other threads' requests. Unlike previous schemes, Pacman induces negligible slowdown, needs no support from the compiler or (in the baseline design) from the OS, and requires no application source code changes. In addition, its hardware is relatively unintrusive. We test Pacman with the SPLASH-2, PARSEC, Sphinx 3, and Apache codes, and discover two unreported asymmetric data races.
Shanxiang Qi, Norimasa Otsuki, Lois Orosa 0001, Abdullah Muzahid, Josep Torrellas
HPCA1
2012 Vulcan: Hardware Support for Detecting Sequential Consistency Violations Dynamically
abstract
Past work has focused on detecting data races as proxies for Sequential Consistency (SC) violations. However, most data races do not violate SC. In addition, lock-free data structures and synchronization libraries sometimes explicitly employ data races but rely on SC semantics for correctness. Consequently, to uncover SC violations, we need to develop a more precise technique. This paper presents Vulcan, the first hardware scheme to precisely detect SC violations at runtime, in programs running on a relaxed-consistency machine. The scheme leverages cache coherence protocol transactions to dynamically detect cycles in memory access orders across threads. When one such cycle is about to occur, an exception is triggered. For the conditions considered in this paper and with enough hardware, Vulcan suffers neither false positives nor false negatives. In addition, Vulcan induces negligible execution overhead, requires no help from the software, and only takes as input the program executable. Experimental results show that Vulcan detects three new SC violation bugs in the Pthread and Crypt libraries, and in the fmm code from SPLASH-2. Moreover, Vulcan's negligible execution overhead makes it suitable for on-the-fly use.
Abdullah Muzahid, Shanxiang Qi, Josep Torrellas
MICRO2
2009 SigRace: signature-based data race detection
abstract
Detecting data races in parallel programs is important for both software development and production-run diagnosis. Recently, there have been several proposals for hardware-assisted data race detection. Such proposals typically modify the L1 cache and cache coherence protocol messages, and largely lose their capability when lines get displaced or invalidated from the cache. To eliminate these shortcomings, this paper proposes a novel, different approach to hardware-assisted data race detection. The approach, called SigRace, relies on hardware address signatures. As a processor runs, the addresses of the data that it accesses are automatically encoded in signatures. At certain times, the signatures are automatically passed to a hardware module that intersects them with those of other processors. If the intersection is not null, a data race may have occurred.
Abdullah Muzahid, Darío Suárez Gracia, Shanxiang Qi, Josep Torrellas
ISCA3
2009 BulkCompiler: high-performance sequential consistency through cooperative compiler and hardware support
abstract
A platform that supported Sequential Consistency (SC) for all codes --- not only the well-synchronized ones --- would simplify the task of programmers. Recently, several hardware architectures that support high-performance SC by committing groups of instructions at a time have been proposed. However, for a platform to support SC, it is insufficient that the hardware does; the compiler has to support SC as well.
Wonsun Ahn, Shanxiang Qi, M. Nicolaides, Josep Torrellas, Jae-Woo Lee, Samuel P. Midkiff, David C. Wong 0001
MICRO2