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
t
void 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