We're sorry but this page doesn't work properly without JavaScript enabled. Please enable it to continue.
Feedback

Software engineering tools based on syscall instrumentation

Formal Metadata

Title
Software engineering tools based on syscall instrumentation
Title of Series
Number of Parts
199
Author
License
CC Attribution 2.0 Belgium:
You are free to use, adapt and copy, distribute and transmit the work or content in adapted or unchanged form for any legal purpose as long as the work is attributed to the author in the manner specified by the author or licensor.
Identifiers
Publisher
Release Date
Language

Content Metadata

Subject Area
Genre
Abstract
In this lightning talk, we would like to share our experiences regarding a couple of software engineering tools we wrote. Those are all based on syscall instrumentation, and they are daily used in an industrial environment: 1. PRoot is initially a user-mode implementation of some kernel features: chroot, mount --bind, binfmtmisc, ... Its original purpose is to build and to validate programs on systems that are supposed to be not compatible (distro, kernel, CPU, ...). PRoot does not require any privileges since it relies only on ptrace, processvm_[read|write]v, and seccomp-filter to observe and modify syscalls between programs and the kernel. With time, PRoot has become a generic Linux process instrumentation engine, used by the two following tools. -- http://proot.me, GPLv2+ 2. CARE -- short for "Comprehensive Archiver for Reproducible Executions" -- creates automatically an archive that contains all the material required to re-execute the monitored programs in their original context (environment, files, expected kernel features, ...). CARE is typically useful to get reliable bug reports, demonstrations, academic experiences, tutorials, ... -- http://reproducible.io, GPLv2+ 3. DepsTracker observes the execution of any processes in order to compute their mutual dependencies with respect to the file-system. It is currently used to re-generate highly parallel build-systems that are then dispatched by another tool on build-farms, in order to find the best performance by brute-forcing compiler internal configuration. -- not published publicly, GPLv2+