-
Notifications
You must be signed in to change notification settings - Fork 151
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Add fuzzing of crash recovery and fix a bunch of bugs #573
Commits on May 2, 2023
-
Configuration menu - View commit details
-
Copy full SHA for fb45a05 - Browse repository at this point
Copy the full SHA fb45a05View commit details
Commits on May 4, 2023
-
Configuration menu - View commit details
-
Copy full SHA for e09c80f - Browse repository at this point
Copy the full SHA e09c80fView commit details
Commits on May 8, 2023
-
Configuration menu - View commit details
-
Copy full SHA for e76bc96 - Browse repository at this point
Copy the full SHA e76bc96View commit details -
Fix dirty page leak with debug_assertions
If an I/O error occurred during write(), the dirty page tracking would leak causing a panic when the transaction was committed/aborted
Configuration menu - View commit details
-
Copy full SHA for 350db58 - Browse repository at this point
Copy the full SHA 350db58View commit details -
Configuration menu - View commit details
-
Copy full SHA for 3b8ba89 - Browse repository at this point
Copy the full SHA 3b8ba89View commit details -
Configuration menu - View commit details
-
Copy full SHA for 8ff7c43 - Browse repository at this point
Copy the full SHA 8ff7c43View commit details -
Configuration menu - View commit details
-
Copy full SHA for a72b9a6 - Browse repository at this point
Copy the full SHA a72b9a6View commit details -
Fix panic after crash recovery
This fixes a cache poisoning issue in which a page might be in the userspace cache after walking the btrees during crash recovery, but then be freed by the rollback process of recovery. This could then poison the cache, leading to a crash in the future
Configuration menu - View commit details
-
Copy full SHA for 4bde7a4 - Browse repository at this point
Copy the full SHA 4bde7a4View commit details -
Fixes a page leak if an I/O error occurred during commit(), since drop() would still flush the recovery bit to "clean"
Configuration menu - View commit details
-
Copy full SHA for 93c7cfd - Browse repository at this point
Copy the full SHA 93c7cfdView commit details -
Configuration menu - View commit details
-
Copy full SHA for 7ccdb9d - Browse repository at this point
Copy the full SHA 7ccdb9dView commit details -
Fixes a corruption issue that could occur if a Durability::None commit was made, followed by a durable commit, and the durable commit crashed during the call to commit(). Non-durable commits pushed their pending free pages into the freed table. The next durable commit then processed these *before* finalizing its commit. If that durable commit crashed after processing the frees, but before finalizing, then all the non-durable commits are rolled back, but the freed pages have already been processed. This left the database in a corrupted state since those pages could get overwritten as part of finalizing the durable commit
Configuration menu - View commit details
-
Copy full SHA for 975d321 - Browse repository at this point
Copy the full SHA 975d321View commit details -
Fix potential read-after-write inconsistency
An I/O error during writeback could cause the page being flushed to be lost
Configuration menu - View commit details
-
Copy full SHA for 5953d74 - Browse repository at this point
Copy the full SHA 5953d74View commit details -
Configuration menu - View commit details
-
Copy full SHA for 3ba8df8 - Browse repository at this point
Copy the full SHA 3ba8df8View commit details -
Configuration menu - View commit details
-
Copy full SHA for dc61f4b - Browse repository at this point
Copy the full SHA dc61f4bView commit details -
Fix panic if make_tree_path failed
The root would end up set, but not the path, this lead to a panic in the drop() method
Configuration menu - View commit details
-
Copy full SHA for ee7befb - Browse repository at this point
Copy the full SHA ee7befbView commit details
Commits on May 9, 2023
-
Shorten max fuzz length to 100k
Every issue found has reproduced at < 10k, and the corpus only has items up to ~50k
Configuration menu - View commit details
-
Copy full SHA for c1eac7c - Browse repository at this point
Copy the full SHA c1eac7cView commit details -
Fix crash during I/O error handling
If an I/O occurring during commit(), the transaction would then try to abort() which might panic since the data structures are left in an inconsistent state
Configuration menu - View commit details
-
Copy full SHA for 17f41ed - Browse repository at this point
Copy the full SHA 17f41edView commit details -
Configuration menu - View commit details
-
Copy full SHA for f763fbf - Browse repository at this point
Copy the full SHA f763fbfView commit details