Fix gc segfault
Get series with b4
b4 am [email protected]Versions newest first
- v1 Latest3 patches 2 repliesIn review
Patches in v1 No applies recorded yet
| # | Subject and files | Size | Replies | Applied |
|---|---|---|---|---|
| 1/3 | Fix typo 'detla' -> 'delta'pack-objects.h | +1 | 0 replies | |
| 2/3 | pack-objects (mingw): demonstrate a segmentation fault with large deltast/ | +32 | 1 reply | |
| 3/3 | pack-objects (mingw): initialize `packing_data` mutex in the correct spotbuiltin/ pack-objects.c t/ | +4 | 1 reply |
Reviews trailers per patch
No Reviewed-by, Acked-by or Tested-by trailers for v1 yet.
Cover letter [PATCH 0/3] Fix gc segfault
In 9ac3f0e (pack-objects: fix performance issues on packing large deltas, 2018-07-22), a mutex was introduced that is used to guard the call to set the delta size. This commit added code to initialize it, but at an incorrect
spot: in init_threaded_search(), while the call to oe_set_delta_size() (and hence to packing_data_lock()) can happen in the call chain check_object() <- get_object_details() <-prepare_pack() <- cmd_pack_objects(), which is long before theprepare_pack() function calls ll_find_deltas() (which initializes the threaded search).
Another tell-tale that the mutex was initialized in an incorrect spot is that the function to initialize it lives in builtin/, while the code that uses the mutex is defined in a libgit.a header file.
Let's use a more appropriate function: prepare_packing_data(), which not only lives in libgit.a, but has to be called before thepacking_data struct is used that contains that mutex.
Johannes Schindelin (3):
Fix typo 'detla' -> 'delta'
pack-objects (mingw): demonstrate a segmentation fault with large
deltas
pack-objects (mingw): initialize packing_data mutex in the correct
spot
builtin/pack-objects.c | 1 - pack-objects.c | 3 +++ pack-objects.h | 2 +- t/t5321-pack-large-objects.sh | 32 ++++++++++++++++++++++++++++++++ 4 files changed, 36 insertions(+), 2 deletions(-) create mode 100755 t/t5321-pack-large-objects.sh
base-commit: 5a0cc8aca797dbd7d2be3b67458ff880ed45cddf
Published-As: https://github.com/gitgitgadget/git/releases/tags/pr-47%2Fjamill%2Ffix-gc-segfault-v1
Fetch-It-Via: git fetch https://github.com/gitgitgadget/git pr-47/jamill/fix-gc-segfault-v1
Pull-Request: https://github.com/gitgitgadget/git/pull/47
Signature · 1 line
gitgitgadget