Skip to content
Permalink
Branch: master
Find file Copy path
Find file Copy path
Fetching contributors…
Cannot retrieve contributors at this time
33 lines (30 sloc) 1.89 KB

How to use the patches to reproduce bugs

Use the provided script to apply a given patch to the whisper directory:

./patch.sh <whisper_directory> <patch_to_be_applied>

To remove a corresponding patch:

./patch.sh -R <whisper_directory> <patch_to_be_applied>

Real-world bugs

  • pmdk_rbtree.patch reproduces the bug addressed in this git commit of PMDK. Note that we use PM_EQU from whisper to track the variable assignment.
  • pmfs_doubleflush_1.patch reproduces the bug addressed in this git commit of PMFS-new. Note that double flush is treated as a warning, so PMTest needs to be compiled with preprocessor option -DPMTEST_WARN to raise this warning.
  • pmfs_doubleflush_2.patch reproduces the bug addressed in this git commit of PMFS-new.
  • pmdk_btree.patch reproduces the bug we found in btree_map.c.
  • pmdk_btree_doubleadd.patch reproduces the double TX_ADD performance issue we found in btree_map.c.

Synthetic bugs

  • We modify the persistent operations in different examples and produce multiple bugs.
  • The examples we use are listed as follows:
    • ctree: C-Tree
    • btree: B-Tree
    • rbtree: RB-Tree
    • hashmap_tx: Hashmap (TX)
    • hashmap_atomic: Hashmap (no TX)
  • The types of patches we create are listed as follows:
    • backup: Missing or misplaced backup of persistent objects.
    • incompletetx: Incomplete transactions due to improper termination.
    • extratxadd: Add persistent data that will not be modified in a transaction to the log.
    • writeback: Missing or misplaced writeback operations.
    • ordering: Missing or misplaced ordering enforcement.
    • correct: Correct reorder of backup.
You can’t perform that action at this time.