Skip to content
Permalink
Browse files

Merge pull request #1853 from dscho/fix-gc-segfault

Fix occasional segmentation fault in `git gc`
  • Loading branch information...
dscho committed Sep 28, 2018
2 parents ba593a7 + 843931b commit 502e856705cb139b59c3ccae378255c15e2486bc
Showing with 36 additions and 2 deletions.
  1. +0 −1 builtin/pack-objects.c
  2. +3 −0 pack-objects.c
  3. +1 −1 pack-objects.h
  4. +32 −0 t/t5319-pack-large-objects.sh
@@ -2299,7 +2299,6 @@ static void init_threaded_search(void)
pthread_mutex_init(&cache_mutex, NULL);
pthread_mutex_init(&progress_mutex, NULL);
pthread_cond_init(&progress_cond, NULL);
pthread_mutex_init(&to_pack.lock, NULL);
old_try_to_free_routine = set_try_to_free_routine(try_to_free_from_threads);
}

@@ -148,6 +148,9 @@ void prepare_packing_data(struct packing_data *pdata)
1U << OE_SIZE_BITS);
pdata->oe_delta_size_limit = git_env_ulong("GIT_TEST_OE_DELTA_SIZE",
1UL << OE_DELTA_SIZE_BITS);
#ifndef NO_PTHREADS
pthread_mutex_init(&pdata->lock, NULL);
#endif
}

struct object_entry *packlist_alloc(struct packing_data *pdata,
@@ -356,7 +356,7 @@ static inline unsigned long oe_delta_size(struct packing_data *pack,
return e->delta_size_;

/*
* pack->detla_size[] can't be NULL because oe_set_delta_size()
* pack->delta_size[] can't be NULL because oe_set_delta_size()
* must have been called when a new delta is saved with
* oe_set_delta().
* If oe_delta() returns NULL (i.e. default state, which means
@@ -0,0 +1,32 @@
#!/bin/sh
#
# Copyright (c) 2018 Johannes Schindelin
#

test_description='git pack-object with "large" deltas
'
. ./test-lib.sh
. "$TEST_DIRECTORY"/lib-pack.sh

# Two similar-ish objects that we have computed deltas between.
A=01d7713666f4de822776c7622c10f1b07de280dc
B=e68fe8129b546b101aee9510c5328e7f21ca1d18

test_expect_success 'setup' '
clear_packs &&
{
pack_header 2 &&
pack_obj $A $B &&
pack_obj $B
} >ab.pack &&
pack_trailer ab.pack &&
git index-pack --stdin <ab.pack
'

test_expect_success 'repack large deltas' '
printf "%s\\n" $A $B |
GIT_TEST_OE_DELTA_SIZE=2 git pack-objects tmp-pack
'

test_done

0 comments on commit 502e856

Please sign in to comment.
You can’t perform that action at this time.