- 29 Nov, 2020 1 commit
-
-
This change fixes a packfile heap corruption that can happen when interacting with multiple packfiles concurrently across multiple threads. This is exacerbated by setting a lower mwindow open file limit. This change: * Renames most of the internal methods in pack.c to clearly indicate that they expect to be called with a certain lock held, making reasoning about the state of locks a bit easier. * Splits the `git_pack_file` lock in two: the one in `git_pack_file` only protects the `index_map`. The protection to `git_mwindow_file` is now in that struct. * Explicitly checks for freshness of the `git_pack_file` in `git_packfile_unpack_header`: this allows the mwindow implementation to close files whenever there is enough cache pressure, and `git_packfile_unpack_header` will reopen the packfile if needed. * After a call to `p_munmap()`, the `data` and `len` fields are poisoned with `NULL` to make use-after-frees more evident and crash rather than being open to the possibility of heap corruption. * Adds a test case to prevent this from regressing in the future. Fixes: #5591
lhchavez committed
-
- 28 Nov, 2020 1 commit
-
-
This change adds all the necessary locking to the odb to avoid races in the backends. Part of: #5592
lhchavez committed
-
- 03 Aug, 2020 1 commit
-
-
This change adds a ThreadSanitizer CI build rule. It's informative for now because there are still known places where there are races. Part of: #5592
lhchavez committed
-