summaryrefslogtreecommitdiff
path: root/t/t5321-pack-large-objects.sh
diff options
context:
space:
mode:
authorJohannes Schindelin <johannes.schindelin@gmx.de>2018-10-16 21:02:50 (GMT)
committerJunio C Hamano <gitster@pobox.com>2018-10-19 05:28:44 (GMT)
commit9308f45a9f1e3e107ba53a91d0f0c59342cb32bd (patch)
tree2d9aceb957f074f4b09cce85b5651b3fb69263c4 /t/t5321-pack-large-objects.sh
parentce498e094e8db32fff358ecf7e4ad4951e6bebce (diff)
downloadgit-9308f45a9f1e3e107ba53a91d0f0c59342cb32bd.zip
git-9308f45a9f1e3e107ba53a91d0f0c59342cb32bd.tar.gz
git-9308f45a9f1e3e107ba53a91d0f0c59342cb32bd.tar.bz2
pack-objects (mingw): demonstrate a segmentation fault with large deltas
There is a problem in the way 9ac3f0e5b3e4 (pack-objects: fix performance issues on packing large deltas, 2018-07-22) initializes that mutex in the `packing_data` struct. The problem manifests in a segmentation fault on Windows, when a mutex (AKA critical section) is accessed without being initialized. (With pthreads, you apparently do not really have to initialize them?) This was reported in https://github.com/git-for-windows/git/issues/1839. Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de> Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 't/t5321-pack-large-objects.sh')
-rwxr-xr-xt/t5321-pack-large-objects.sh32
1 files changed, 32 insertions, 0 deletions
diff --git a/t/t5321-pack-large-objects.sh b/t/t5321-pack-large-objects.sh
new file mode 100755
index 0000000..c36c66f
--- /dev/null
+++ b/t/t5321-pack-large-objects.sh
@@ -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_failure 'repack large deltas' '
+ printf "%s\\n" $A $B |
+ GIT_TEST_OE_DELTA_SIZE=2 git pack-objects tmp-pack
+'
+
+test_done