Nicolas Viennot

dblp:05/998 · DBLP profile ↗
← Back
10ranked-venue papers
3as first author
0since 2021 · last 2015
—ORCID · none

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

Software engineering, systems software and programming languages · 7 · 2 first-authorSystems, architecture and hardware · 6 · 3 first-authorHuman-computer interaction and ubiquitous computing · 2

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 · 38% Operating systems · 19% Software maintenance and evolution · 14%
Network and information security
1 paper
Web and mobile security · 77% Authentication and access control · 23%

Topics — the 22 heaviest of 23, each with the papers that count most for it

TopicWeightPapersLastEvidence papers
Services computing and microservices
microservice architecture
0.212015
Synapse: a microservices architecture for heterogeneous-database web applications · EuroSys 2015
Web and mobile security › mobile security
android application analysis
0.212014
A measurement study of google play · SIGMETRICS 2014
Web and mobile security
mobile application security
0.212014
A measurement study of google play · SIGMETRICS 2014
Programming languages and type systems › interoperability
binary compatibility
0.212014
Cider: native execution of iOS apps on android · ASPLOS 2014
Operating systems › kernel
kernel design
0.212014
Cider: native execution of iOS apps on android · ASPLOS 2014
Software maintenance and evolution
software ecosystems
0.212014
A measurement study of google play · SIGMETRICS 2014
Debugging and program repair › automated program repair
patch validation
0.212013
Transparent mutable replay for multicore debugging and patch validation · ASPLOS 2013
Debugging and program repair › record and replay
replay debugging
0.212013
Transparent mutable replay for multicore debugging and patch validation · ASPLOS 2013
Concurrent programming › concurrency bug detection
data race detection
0.112011
Pervasive detection of process races in deployed systems · SOSP 2011
Debugging and program repair
fault localization
0.112011
Pervasive detection of process races in deployed systems · SOSP 2011
Operating systems › multiprocessing
multiprocessor operating system
0.112010
Transparent, lightweight application execution replay on commodity multiprocessor operating systems · SIGMETRICS 2010
Debugging and program repair
record and replay
0.112010
Transparent, lightweight application execution replay on commodity multiprocessor operating systems · SIGMETRICS 2010
Debugging and program repair
failure recovery
0.112009
ASSURE: automatic software self-healing using rescue points · ASPLOS 2009
Debugging and program repair
program repair
0.112009
ASSURE: automatic software self-healing using rescue points · ASPLOS 2009
Software maintenance and evolution › software evolution › software adaptation
self-healing systems
0.112009
ASSURE: automatic software self-healing using rescue points · ASPLOS 2009
Distributed and cloud data management
data replication
0.112015
Synapse: a microservices architecture for heterogeneous-database web applications · EuroSys 2015
Authentication and access control
authentication
0.112014
A measurement study of google play · SIGMETRICS 2014
Authentication and access control › authorization
OAuth
0.112014
A measurement study of google play · SIGMETRICS 2014
Parallel and multicore computing › parallel computing › parallel program debugging
multicore debugging
0.012013
Transparent mutable replay for multicore debugging and patch validation · ASPLOS 2013
Operating systems › operating system interface › system call
system call interposition
0.012011
Pervasive detection of process races in deployed systems · SOSP 2011
Operating systems › fault tolerance
checkpoint and rollback
0.012009
ASSURE: automatic software self-healing using rescue points · ASPLOS 2009
Software testing
fuzzing
0.012009
ASSURE: automatic software self-healing using rescue points · ASPLOS 2009

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

view synchronization · 0.4MVC-based replication · 0.4static analysis · 0.4large-scale crawling · 0.4decompilation · 0.4record/replay · 0.3diplomatic functions · 0.2compile-time code adaptation · 0.2binary compatibility techniques · 0.2deterministic replay · 0.1
YearPublicationVenuePosition
2015 Synapse: a microservices architecture for heterogeneous-database web applications
abstract
The growing demand for data-driven features in today's Web applications -- such as targeting, recommendations, or predictions -- has transformed those applications into complex conglomerates of services operating on each others' data without a coherent, manageable architecture. We present Synapse, an easy-to-use, strong-semantic system for large-scale, data-driven Web service integration. Synapse lets independent services cleanly share data with each other in an isolated and scalable way. The services run on top of their own databases, whose layouts and engines can be completely different, and incorporate read-only views of each others' shared data. Synapse synchronizes these views in real-time using a new scalable, consistent replication mechanism that leverages the high-level data models in popular MVC-based Web applications to replicate data across heterogeneous databases. We have developed Synapse on top of the popular Web framework Ruby-on-Rails. It supports data replication among a wide variety of SQL and NoSQL databases, including MySQL, Oracle, PostgreSQL, MongoDB, Cassandra, Neo4j, and Elasticsearch. We and others have built over a dozen microservices using Synapse with great ease, some of which are running in production with over 450,000 users.
Nicolas Viennot, Mathias Lécuyer, Jonathan Bell 0001, Roxana Geambasu, Jason Nieh
EuroSys1
2014 Cider: native execution of iOS apps on android
abstract
We present Cider, an operating system compatibility architecture that can run applications built for different mobile ecosystems, iOS or Android, together on the same smartphone or tablet. Cider enhances the domestic operating system, Android, of a device with kernel-managed, per-thread personas to mimic the application binary interface of a foreign operating system, iOS, enabling it to run unmodified foreign binaries. This is accomplished using a novel combination of binary compatibility techniques including two new mechanisms: compile-time code adaptation, and diplomatic functions. Compile-time code adaptation enables existing unmodified foreign source code to be reused in the domestic kernel, reducing implementation effort required to support multiple binary interfaces for executing domestic and foreign applications. Diplomatic functions leverage per-thread personas, and allow foreign applications to use domestic libraries to access proprietary software and hardware interfaces. We have built a Cider prototype, and demonstrate that it imposes modest performance overhead and runs unmodified iOS and Android applications together on a Google Nexus tablet running the latest version of Android.
Jeremy Andrus, Alexander Van't Hof, Naser AlDuaij, Christoffer Dall, Nicolas Viennot, Jason Nieh
ASPLOS5
2014 A measurement study of google play
abstract
Although millions of users download and use third-party Android applications from the Google Play store, little information is known on an aggregated level about these applications. We have built PlayDrone, the first scalable Google Play store crawler, and used it to index and analyze over 1,100,000 applications in the Google Play store on a daily basis, the largest such index of Android applications. PlayDrone leverages various hacking techniques to circumvent Google's roadblocks for indexing Google Play store content, and makes proprietary application sources available, including source code for over 880,000 free applications. We demonstrate the usefulness of PlayDrone in decompiling and analyzing application content by exploring four previously unaddressed issues: the characterization of Google Play application content at large scale and its evolution over time, library usage in applications and its impact on application portability, duplicative application content in Google Play, and the ineffectiveness of OAuth and related service authentication mechanisms resulting in malicious users being able to easily gain unauthorized access to user data and resources on Amazon Web Services and Facebook.
Nicolas Viennot, Edward Garcia, Jason Nieh
SIGMETRICS1
2013 Transparent mutable replay for multicore debugging and patch validation
abstract
We present Dora, a mutable record-replay system which allows a recorded execution of an application to be replayed with a modified version of the application. This feature, not available in previous record-replay systems, enables powerful new functionality. In particular, Dora can help reproduce, diagnose, and fix software bugs by replaying a version of a recorded application that is recompiled with debugging information, reconfigured to produce verbose log output, modified to include additional print statements, or patched to fix a bug.
Nicolas Viennot, Siddharth Nair, Jason Nieh
ASPLOS1
2011 Finding Concurrency Errors in Sequential Code - OS-level, In-vivo Model Checking of Process Races
Oren Laadan, Chia-Che Tsai, Nicolas Viennot, Chris Blinn, Peter Senyao Du, Jason Nieh
HotOS3
2011 Structured linux kernel projects for teaching operating systems concepts
abstract
Linux has emerged as a widely-used platform for enabling hands-on kernel programming experience to learn about operating system concepts. However, developing pedagogically-effective programming projects in the context of a complex, production operating system can be a challenge. We present a structured series of five Linux kernel programming projects suitable for a one semester introductory operating systems course to address this issue. Each assignment introduces students to a core topic and major component of an operating system while implicitly teaching them about various aspects of a real-world operating system. Projects are of modest coding complexity, but require students to understand and leverage core components of the Linux operating system. The learning benefits for students from this approach include learning from real-world operating system code examples by expert kernel designers and gaining software engineering experience managing production code complexity. We have successfully used these structured Linux kernel projects to teach over a thousand students in the introductory operating systems course at Columbia University.
Oren Laadan, Jason Nieh, Nicolas Viennot
SIGCSE3
2011 Pervasive detection of process races in deployed systems
abstract
Process races occur when multiple processes access shared operating system resources, such as files, without proper synchronization. We present the first study of real process races and the first system designed to detect them. Our study of hundreds of applications shows that process races are numerous, difficult to debug, and a real threat to reliability. To address this problem, we created RacePro, a system for automatically detecting these races. RacePro checks deployed systems in-vivo by recording live executions then deterministically replaying and checking them later. This approach increases checking coverage beyond the configurations or executions covered by software vendors or beta testing sites. RacePro records multiple processes, detects races in the recording among system calls that may concurrently access shared kernel objects, then tries different execution orderings of such system calls to determine which races are harmful and result in failures. To simplify race detection, RacePro models under-specified system calls based on load and store micro-operations. To reduce false positives and negatives, RacePro uses a replay and go-live mechanism to distill harmful races from benign ones. We have implemented RacePro in Linux, shown that it imposes only modest recording overhead, and used it to detect a number of previously unknown bugs in real applications caused by process races.
Oren Laadan, Nicolas Viennot, Chia-Che Tsai, Chris Blinn, Jason Nieh
SOSP2
2010 Teaching operating systems using virtual appliances and distributed version control
abstract
Students learn more through hands-on project experience for computer science courses such as operating systems, but providing the infrastructure support for a large class to learn by doing can be hard. To address this issue, we introduce a new approach to managing and grading operating system homework assignments based on virtual appliances, a distributed version control system, and live demonstrations. Our solution is easy to deploy and use with students' personal computers, and obviates the need to provide a computer laboratory for teaching purposes. It supports the most demanding course projects, such as those that involve operating system kernel development, and can be used by both on-campus and remote distance learning students even with intermittent network connectivity. Our experiences deploying and using this solution to teach operating systems at Columbia University show that it is easier to use, more flexible, and more pedagogically effective than other approaches.
Oren Laadan, Jason Nieh, Nicolas Viennot
SIGCSE3
2010 Transparent, lightweight application execution replay on commodity multiprocessor operating systems
abstract
We present Scribe, the first system to provide transparent, lowoverhead application record-replay and the ability to go live from replayed execution. Scribe introduces new lightweight operating system mechanisms, rendezvous and sync points, to efficiently record nondeterministic interactions such as related system calls, signals, and shared memory accesses. Rendezvous points make a partial ordering of execution based on system call dependencies sufficient for replay, avoiding the recording overhead of maintaining an exact execution ordering. Sync points convert asynchronous interactions that can occur at arbitrary times into synchronous events that are much easier to record and replay. We have implemented Scribe without changing, relinking, or recompiling applications, libraries, or operating system kernels, and without any specialized hardware support such as hardware performance counters. It works on commodity Linux operating systems, and commodity multi-core and multiprocessor hardware. Our results show for the first time that an operating system mechanism can correctly and transparently record and replay multi-process and multi-threaded applications on commodity multiprocessors. Scribe recording overhead is less than 2.5 % for server applications including Apache and MySQL, and less than 15 % for desktop applications including Firefox, Acrobat, OpenOffice, parallel kernel compilation, and movie playback.
Oren Laadan, Nicolas Viennot, Jason Nieh
SIGMETRICS2
2009 ASSURE: automatic software self-healing using rescue points
abstract
Software failures in server applications are a significant problem for preserving system availability. We present ASSURE, a system that introduces rescue points that recover software from unknown faults while maintaining both system integrity and availability, by mimicking system behavior under known error conditions. Rescue points are locations in existing application code for handling a given set of programmer-anticipated failures, which are automatically repurposed and tested for safely enabling fault recovery from a larger class of (unanticipated) faults. When a fault occurs at an arbitrary location in the program, ASSURE restores execution to an appropriate rescue point and induces the program to recover execution by virtualizing the program's existing error-handling facilities. Rescue points are identified using fuzzing, implemented using a fast coordinated checkpoint-restart mechanism that handles multi-process and multi-threaded applications, and, after testing, are injected into production code using binary patching. We have implemented an ASSURE Linux prototype that operates without application source code and without base operating system kernel changes. Our experimental results on a set of real-world server applications and bugs show that ASSURE enabled recovery for all of the bugs tested with fast recovery times, has modest performance overhead, and provides automatic self-healing orders of magnitude faster than current human-driven patch deployment methods.
Stelios Sidiroglou-Douskos, Oren Laadan, Carlos Perez, Nicolas Viennot, Jason Nieh, Angelos D. Keromytis
ASPLOS4