VLDB 2026 Research / reviewers in the wild / expert
Radu Rugina
dblp:r/RaduRugina
· DBLP profile ↗
20ranked-venue papers
7as first author
0since 2021 · last 2012
—ORCID · none
Domains — the database's venue-derived domains; a paper can count in several
Software engineering, systems software and programming languages · 16 · 6 first-authorSystems, architecture and hardware · 4 · 1 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
10 papers |
Program analysis · 72% Operating systems · 11% Compilers and program optimization · 9% | |
| Computer architecture, parallel and distributed computing, and storage systems
4 papers |
Distributed systems · 47% Parallel and multicore computing · 28% Processor architecture and microarchitecture · 25% |
Topics — the 23 heaviest of 24, each with the papers that count most for it
| Topic | Weight | Papers | Last | Evidence papers |
|---|---|---|---|---|
Program analysis › static analysis
pointer analysis |
0.3 | 7 | 2008 | Demand-driven alias analysis for C · POPL 2008 Symbolic bounds analysis of pointers, array indices, and accessed memory regions · ACM Trans. Program. Lang. Syst. 2005 Region-based shape analysis with tracked locations · POPL 2005 |
Operating systems
virtualization |
0.1 | 1 | 2012 | Software Techniques for Avoiding Hardware Virtualization Exits · USENIX ATC 2012 |
Program analysis
static analysis |
0.1 | 3 | 2007 | Practical memory leak detection using guarded value-flow analysis · PLDI 2007 Symbolic bounds analysis of pointers, array indices, and accessed memory regions · PLDI 2000 Pointer Analysis for Multithreaded Programs · PLDI 1999 |
Program analysis
CFL-reachability |
0.1 | 1 | 2008 | Demand-driven alias analysis for C · POPL 2008 |
Program analysis › static analysis › pointer analysis
demand-driven alias analysis |
0.1 | 1 | 2008 | Demand-driven alias analysis for C · POPL 2008 |
Program verification › model checking › state space exploration
reachability analysis |
0.1 | 1 | 2008 | Demand-driven alias analysis for C · POPL 2008 |
Distributed systems
fault tolerance |
0.1 | 1 | 2008 | Compiler-enhanced incremental checkpointing for OpenMP applications · PPoPP 2008 |
Program analysis › resource analysis
resource bound analysis |
0.1 | 2 | 2005 | Symbolic bounds analysis of pointers, array indices, and accessed memory regions · ACM Trans. Program. Lang. Syst. 2005 Symbolic bounds analysis of pointers, array indices, and accessed memory regions · PLDI 2000 |
Program analysis › error detection
memory leak detection |
0.1 | 1 | 2007 | Practical memory leak detection using guarded value-flow analysis · PLDI 2007 |
Program analysis › heap analysis
heap abstraction |
0.1 | 1 | 2005 | Region-based shape analysis with tracked locations · POPL 2005 |
Program analysis › static analysis › pointer analysis
shape analysis |
0.1 | 1 | 2005 | Region-based shape analysis with tracked locations · POPL 2005 |
Processor architecture and microarchitecture › instruction set architecture
virtualization support |
0.0 | 1 | 2012 | Software Techniques for Avoiding Hardware Virtualization Exits · USENIX ATC 2012 |
Parallel and multicore computing › parallel programming models
structured parallelism |
0.0 | 1 | 2003 | Pointer analysis for structured parallel programs · ACM Trans. Program. Lang. Syst. 2003 |
Compilers and program optimization › parallelization
automatic parallelization |
0.0 | 1 | 1999 | Automatic Parallelization of Divide and Conquer Algorithms · PPoPP 1999 |
Program analysis › static analysis › pointer analysis
interprocedural pointer analysis |
0.0 | 1 | 1999 | Automatic Parallelization of Divide and Conquer Algorithms · PPoPP 1999 |
Concurrent programming › concurrency models › multithreading
multithreaded programs |
0.0 | 1 | 1999 | Pointer Analysis for Multithreaded Programs · PLDI 1999 |
Program analysis › static analysis
interprocedural analysis |
0.0 | 1 | 2007 | Practical memory leak detection using guarded value-flow analysis · PLDI 2007 |
Systems and software security › memory safety
memory error detection |
0.0 | 1 | 2005 | Region-based shape analysis with tracked locations · POPL 2005 |
Systems and software security
memory safety |
0.0 | 1 | 2005 | Region-based shape analysis with tracked locations · POPL 2005 |
Program analysis › concurrent program analysis
static race detection |
0.0 | 1 | 2005 | Symbolic bounds analysis of pointers, array indices, and accessed memory regions · ACM Trans. Program. Lang. Syst. 2005 |
Compilers and program optimization
parallelizing compiler |
0.0 | 1 | 2003 | Pointer analysis for structured parallel programs · ACM Trans. Program. Lang. Syst. 2003 |
Program analysis › error detection
array bounds checking |
0.0 | 1 | 2000 | Symbolic bounds analysis of pointers, array indices, and accessed memory regions · PLDI 2000 |
Parallel and multicore computing › parallel programming models › structured parallelism
recursive parallel programs |
0.0 | 1 | 1999 | Automatic Parallelization of Divide and Conquer Algorithms · PPoPP 1999 |
Methods — techniques the papers use, named apart from their topics
context-sensitive analysis · 0.2incremental checkpointing · 0.2compiler analysis · 0.2incremental analysis · 0.1worklist algorithm · 0.1linear programming · 0.1interprocedural analysis · 0.1value-flow graph · 0.1reachability analysis · 0.1inter-procedural analysis · 0.1inequality constraint solving · 0.1pointer analysis · 0.0alias analysis · 0.0symbolic analysis · 0.0flow-sensitive analysis · 0.0
| Year | Publication | Venue | Position |
|---|---|---|---|
| 2012 | Software Techniques for Avoiding Hardware Virtualization Exits
Ole Agesen, Jim Mattson, Radu Rugina, Jeffrey Sheldon |
USENIX ATC | 3 |
| 2009 | Compiler-enhanced incremental checkpointing for OpenMP applicationsabstractAs modern supercomputing systems reach the peta-flop performance range, they grow in both size and complexity. This makes them increasingly vulnerable to failures from a variety of causes. Checkpointing is a popular technique for tolerating such failures, enabling applications to periodically save their state and restart computation after a failure. Although a many automated system-level checkpointing solutions are currently available to HPC users, manual application-level checkpointing remains more popular due to its superior performance. This paper improves performance of automated checkpointing via a compiler analysis for incremental checkpointing. This analysis, which works with both sequential and OpenMP applications, reduces checkpoint sizes by as much as 80% and enables asynchronous checkpointing. Greg Bronevetsky, Daniel Marques, Keshav Pingali, Sally A. McKee, Radu Rugina |
IPDPS | 5 |
| 2008 | Demand-driven alias analysis for CabstractThis paper presents a demand-driven, flow-insensitive analysisalgorithm for answering may-alias queries. We formulate thecomputation of alias queries as a CFL-reachability problem, and use this formulation to derive a demand-driven analysis algorithm. The analysis uses a worklist algorithm that gradually explores the program structure and stops as soon as enough evidence is gathered to answer the query. Unlike existing techniques, our approach does not require building or intersecting points-to sets. Radu Rugina |
POPL | 2 |
| 2008 | Compiler-enhanced incremental checkpointing for OpenMP applicationsabstractAs modern supercomputing systems reach peta-flop performance they grow in both size and complexity, becoming increasingly vulnerable to failures. Checkpointing is a popular technique for tolerating such failures. Although a variety of automated system-level checkpointing solutions are currently available to HPC users, manual application-level checkpointing remains more popular due to its superior performance. This paper improves performance of automated checkpointing by presenting a compiler analysis for incremental checkpointing. This analysis, which works with both sequential and OpenMP applications, significantly reduces checkpoint sizes and enables asynchronous checkpointing. Greg Bronevetsky, Daniel Marques, Keshav Pingali, Radu Rugina, Sally A. McKee |
PPoPP | 4 |
| 2007 | A Practical Escape and Effect Analysis for Building Lightweight Method Summaries
Sigmund Cherem, Radu Rugina |
CC | 2 |
| 2007 | Uniqueness inference for compile-time object deallocationabstractThis paper presents an analysis and transformation for individual object reclamation in Java programs. First, we propose a uniqueness inference algorithm that identifies variables and object fields that hold unique references. The algorithm performs an intra-procedural analysis of each method, and then builds and solves a set of inter-procedural uniqueness dependencies to find the global solution. Second, our system uses the uniqueness information to automatically instrument programs with explicit deallocation of individual objects. A key feature of the transformation is its ability to deallocate entire heap structures, including recursive structures, when their root objects are freed. This is achieved by generating object destructors that recursively free all of the unique object fields. Our experiments show that the analysis is effective at reclaiming a large fraction of the objects at a low analysis cost. Sigmund Cherem, Radu Rugina |
ISMM | 2 |
| 2007 | Practical memory leak detection using guarded value-flow analysisabstractThis paper presents a practical inter-procedural analysis algorithm for detecting memory leaks in C programs. Our algorithm tracks the flow of values from allocation points to deallocation points using a sparse representation of the program consisting of a value flow graph that captures def-use relations and value flows via program assignments. Edges in the graph are annotated with guards that describe branch conditions in the program. The memory leak analysis is reduced to a reachability problem over the guarded value flowgraph. Our implemented tool has been effective at detecting more than 60 memory leaks in the SPEC2000 benchmarks and in two open-source applications, bash and sshd, while keeping the false positive rate below 20%. The sparse program representation makes the tool efficient in practice, and allows it to report concise error messages. Sigmund Cherem, Lonnie Princehouse, Radu Rugina |
PLDI | 3 |
| 2007 | Maintaining Doubly-Linked List Invariants in Shape Analysis with Local Reasoning
Sigmund Cherem, Radu Rugina |
VMCAI | 2 |
| 2006 | Compile-time deallocation of individual objectsabstractThis paper presents a static analysis and transformation system that enables the deallocation of individual objects in Java programs. Given an input program, the compiler automatically inserts free statements to deallocate individual objects. This transformation is enabled by an inter-procedural, context-sensitive dataflow analysis that tracks the state of one object instance at a time, from the point where it is allocated, and up to the point where the object instance becomes unreachable and can be freed.For the SPECjvm98 benchmarks, free-instrumented programs generated by our compiler and executed in a virtual machine with explicit memory deallocation reclaim, on average, more than 50%of the total memory allocated by the program, and have a low run-time overhead of 1%. For several benchmarks, the analysis can free more than 85% of the total memory. Sigmund Cherem, Radu Rugina |
ISMM | 2 |
| 2006 | Memory Leak Analysis by Contradiction
Maksim Orlovich, Radu Rugina |
SAS | 2 |
| 2005 | Region-based shape analysis with tracked locationsabstractThis paper proposes a novel approach to shape analysis: using local reasoning about individual heap locations instead of global reasoning about entire heap abstractions. We present an inter-procedural shape analysis algorithm for languages with destructive updates. The key feature is a novel memory abstraction that differs from traditional abstractions in two ways. First, we build the shape abstraction and analysis on top of a pointer analysis. Second, we decompose the shape abstraction into a set of independent configurations, each of which characterizes one single heap location. Our approach: 1) leads to simpler algorithm specifications, because of local reasoning about the single location; 2) leads to efficient algorithms, because of the smaller granularity of the abstraction; and 3) makes it easier to develop context-sensitive, demand-driven, and incremental shape analyses.We also show that the analysis can be used to enable the static detection of memory errors in programs with explicit deallocation. We have built a prototype tool that detects memory leaks and accesses through dangling pointers in C programs. The experiments indicate that the analysis is sufficiently precise to detect errors with low false positive rates; and is sufficiently lightweight to scale to larger programs. For a set of three popular C programs, the tool has analyzed about 70K lines of code in less than 2 minutes and has produced 97 warnings, 38 of which were actual errors. Brian Hackett, Radu Rugina |
POPL | 2 |
| 2005 | Symbolic bounds analysis of pointers, array indices, and accessed memory regionsabstractThis article presents a novel framework for the symbolic bounds analysis of pointers, array indices, and accessed memory regions. Our framework formulates each analysis problem as a system of inequality constraints between symbolic bound polynomials. It then reduces the constraint system to a linear program. The solution to the linear program provides symbolic lower and upper bounds for the values of pointer and array index variables and for the regions of memory that each statement and procedure accesses. This approach eliminates fundamental problems associated with applying standard fixed-point approaches to symbolic analysis problems. Experimental results from our implemented compiler show that the analysis can solve several important problems, including static race detection, automatic parallelization, static detection of array bounds violations, elimination of array bounds checks, and reduction of the number of bits used to store computed values. Radu Rugina, Martin C. Rinard |
ACM Trans. Program. Lang. Syst. | 1 |
| 2004 | Region analysis and transformation for Java programsabstractThis paper presents a region analysis and transformation framework for Java programs. Given an input Java program, the compiler automatically translates it into an equivalent output program with region-based memory management. The generated program contains statements for creating regions, allocating objects in regions, removing regions, and passing regions as parameters. As a particular case, the analysis can enable the allocation of objects on the stack. Sigmund Cherem, Radu Rugina |
ISMM | 2 |
| 2004 | Shape Analysis Quantitative Shape Analysis
Radu Rugina |
SAS | 1 |
| 2003 | Static Analysis of Accessed Regions in Recursive Data Structures
Stephen Chong, Radu Rugina |
SAS | 2 |
| 2003 | Pointer analysis for structured parallel programsabstractThis paper presents a novel interprocedural, flow-sensitive, and context-sensitive pointer analysis algorithm for multithreaded programs that may concurrently update shared pointers. The algorithm is designed to handle programs with structured parallel constructs, including fork-join constructs, parallel loops, and conditionally spawned threads. For each pointer and each program point, the algorithm computes a conservative approximation of the memory locations to which that pointer may point. The algorithm correctly handles a wide range of programming language constructs, including recursive functions, recursively generated parallelism, function pointers, structures, arrays, nested structures and arrays, pointer arithmetic, casts between different pointer types, heap and stack allocated memory, shared global variables, and thread-private global variables. We have implemented the algorithm in the SUIF compiler system and used the implementation to analyze a set of multithreaded programs written in the Cilk programming language. Our experimental results show that the analysis has good precision and converges quickly for our set of Cilk programs. Radu Rugina, Martin C. Rinard |
ACM Trans. Program. Lang. Syst. | 1 |
| 2001 | Design-Driven Compilation
Radu Rugina, Martin C. Rinard |
CC | 1 |
| 2000 | Symbolic bounds analysis of pointers, array indices, and accessed memory regionsabstractThis paper presents a novel framework for the symbolic bounds analysis of pointers, array indices, and accessed memory regions. Our framework formulates each analysis problem as a system of inequality constraints between symbolic bound polynomials. It then reduces the constraint system to a linear program. The solution to the linear program provides symbolic lower and upper bounds for the values of pointer and array index variables and for the regions of memory that each statement and procedure accesses. This approach eliminates fundamental problems associated with applying standard fixed-point approaches to symbolic analysis problems. Experimental results from our implemented compiler show that the analysis can solve several important problems, including static race detection, automatic parallelization, static detection of array bounds violations, elimination of array bounds checks, and reduction of the number of bits used to store computed values. Radu Rugina, Martin C. Rinard |
PLDI | 1 |
| 1999 | Pointer Analysis for Multithreaded ProgramsabstractThis paper presents a novel interprocedural, flow-sensitive, and context-sensitive pointer analysis algorithm for multithreaded programs that may concurrently update shared pointers. For each pointer and each program point, the algorithm computes a conservative approximation of the memory locations to which that pointer may point. The algorithm correctly handles a full range of constructs in multithreaded programs, including recursive functions, function pointers, structures, arrays, nested structures and arrays, pointer arithmetic, casts between pointer variables of different types, heap and stack allocated memory, shared global variables, and thread-private global variables. We have implemented the algorithm in the SUIF compiler system and used the implementation to analyze a sizable set of multithreaded programs written in the Cilk multithreaded programming language. Our experimental results show that the analysis has good precision and converges quickly for our set of Cilk programs. 1 Radu Rugina, Martin C. Rinard |
PLDI | 1 |
| 1999 | Automatic Parallelization of Divide and Conquer AlgorithmsabstractDivide and conquer algorithms are a good match for modern parallel machines: they tend to have large amounts of inherent parallelism and they work well with caches and deep memory hierarchies. But these algorithms pose challenging problems for parallelizing compilers. They are usually coded as recursive procedures and often use pointers into dynamically allocated memory blocks and pointer arithmetic. All of these features are incompatible with the analysis algorithms in traditional parallelizing compilers.This paper presents the design and implementation of a compiler that is designed to parallelize divide and conquer algorithms whose subproblems access disjoint regions of dynamically allocated arrays. The foundation of the compiler is a flow-sensitive, context-sensitive, and interprocedural pointer analysis algorithm. A range of symbolic analysis algorithms build on the pointer analysis information to extract symbolic bounds for the memory regions accessed by (potentially recursive) procedures that use pointers and pointer arithmetic. The symbolic bounds information allows the compiler to find procedure calls that can execute in parallel without violating the data dependences. The compiler generates code that executes these calls in parallel. We have used the compiler to parallelize several programs that use divide and conquer algorithms. Our results show that the programs perform well and exhibit good speedup. Radu Rugina, Martin C. Rinard |
PPoPP | 1 |