https://www.stefan-winter.net/presentations/shared-memory_EPA.html
Research focus: Dependable software, mostly “low-level” code
Operating System
How many defects in external dependencies?
Operating System
How do defects in one component affect other components?
Three Steps:
2. Execute program
Interface Error Injections: Mutating interface parameters
tvoid library_function(int a, struct test *b) {
bool init = (a - 1 == 0);
if (init)
- b->val = 0;
+ char *str = "test";
+ b->string = str;
}sysbench cpu run
Alignment of longest common sub-sequences (Hunt and Szymanski 1977)
| Name | Size (loc) | Faults |
|---|---|---|
| Libxml2 | 155k | 1471 |
| Libbzip2 | 6k | 463 |
| SQLite | 78k | 1023 |
User code: Developer tests
| Name | −1 | NULL ptr | 0 | Wrong ptr | Wrong value | No indication |
|---|---|---|---|---|---|---|
| Libxml2 | 32 (24.2%) | 33 (25.0%) | 1 (0.8%) | 5 (3.8%) | 2 (1.5%) | |
| Libbzip2 | 0 (0%) | 4 (11.8%) | 0 (0%) | 28 (82.3%) | 2 (5.9%) | |
| SQLite | 0 (0%) | 2 (2.8%) | 0 (0%) | 1 (1.4%) | 69 (95.8%) |
Scalability
Debugger-based introspection
Empirical study of interface errors (Natella et al. 2018):
Confirmed findings: Interface data corruptions are
Additional contribution: Pattern catalog of interface errors
Source: (Palix et al. 2011)
LLVM optimization pass:
load, store, getelementptr instructions → add tracing callbtrfs, f2fs, nvme