git/list[1] front-page[2] threads[3] people[4] search[5] about
 

[PATCH 0/3] Fix gc segfault

From
Jameson Miller via GitGitGadget <gitgitgadget@gmail.com>
Date
Oct 16, 2018, 21:02 UTC
Message-ID
<pull.47.git.gitgitgadget@gmail.com>

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
-- 
gitgitgadget
Next: Johannes Schindelin via GitGitGadget
Message 1 of 6 in “Fix gc segfault”
  1. 0/3 Fix gc segfaultJameson Miller via GitGitGadget, Oct 16, 2018
  2. 1/3 Fix typo 'detla' -> 'delta'Johannes Schindelin via GitGitGadget, Oct 16, 2018
  3. 2/3 pack-objects (mingw): demonstrate a segmentation fault with large deltasJohannes Schindelin via GitGitGadget, Oct 16, 2018
  4. brian m. carlsonOct 16, 2018
  5. 3/3 pack-objects (mingw): initialize `packing_data` mutex in the correct spotJohannes Schindelin via GitGitGadget, Oct 16, 2018
  6. Jeff KingOct 17, 2018

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.