threads / discuss / 24582

t4111 fails under valgrind

Subject: t4111 fails under valgrind

## tl;dr

4 messages between Jul 30, 2010 and Aug 4, 2010.

replies: 3people: 2as markdown or json

Thomas Rast· Jul 30, 2010, 10:18 UTC · lore
Hi Jonathan

t4111 never worked under valgrind on my machine, building 9f41a91 and then running it with --valgrind results in:

  expecting success: 
          cp postimage expected &&
          reset_subdir preimage other &&
          (
                  cd sub/dir &&
                  test_must_fail git apply --index "$patch"
          ) &&
          reset_subdir other preimage &&
          (
                  cd sub/dir &&
                  test_must_fail git apply --index "$patch"
          ) &&
          reset_subdir preimage preimage &&
          (
                  cd sub/dir &&
                  git apply --index "$patch"
          ) &&
          git show :sub/dir/file >actual &&
          test_cmp expected actual &&
          test_cmp expected sub/dir/file
  error: sub/dir/file: does not match index
  error: sub/dir/file: does not match index
  error: sub/dir/file: does not match index
  not ok - 5 apply --index from subdir of toplevel
  #
  #               cp postimage expected &&
  #               reset_subdir preimage other &&
  #               (
  #                       cd sub/dir &&
  #                       test_must_fail git apply --index "$patch"
  #               ) &&
  #               reset_subdir other preimage &&
  #               (
  #                       cd sub/dir &&
  #                       test_must_fail git apply --index "$patch"
  #               ) &&
  #               reset_subdir preimage preimage &&
  #               (
  #                       cd sub/dir &&
  #                       git apply --index "$patch"
  #               ) &&
  #               git show :sub/dir/file >actual &&
  #               test_cmp expected actual &&
  #               test_cmp expected sub/dir/file
  #
Any ideas what might be going wrong?
-- 
Thomas Rast
trast@{inf,student}.ethz.ch
Jonathan Nieder· Jul 30, 2010, 18:31 UTC · re: Thomas Rast · lore

Re: t4111 fails under valgrind

Thomas Rast wrote:
>   error: sub/dir/file: does not match index
>   error: sub/dir/file: does not match index
>   error: sub/dir/file: does not match index
>   not ok - 5 apply --index from subdir of toplevel
Thanks for reporting.  Does this patch work for you?
-- 8< --
Subject: t4111 (apply): refresh index before applying patches to it

"git apply", like most plumbing, does not automatically refresh the index file even if it is only stat-dirty. So unless the two "cp" commands in reset_preimage() for a given file happen to have the same time stamp, there will be a spurious

	error: sub/dir/file: does not match index

Refresh the index to eliminate this timing dependency. Noticed by running the test with --valgrind (which slows things down a lot).

Reported-by: Thomas Rast <trast@student.ethz.ch>
Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
---
diff --git a/t/t4111-apply-subdir.sh b/t/t4111-apply-subdir.sh
index 57cae50..a52d94a 100755
--- a/t/t4111-apply-subdir.sh
+++ b/t/t4111-apply-subdir.sh
@@ -36,7 +36,8 @@ test_expect_success 'setup: subdir' '
 		cp "$2" file &&
 		cp "$2" sub/dir/file &&
 		cp "$2" sub/dir/b/file &&
-		cp "$2" objects/file
+		cp "$2" objects/file &&
+		test_might_fail git update-index --refresh -q
 	}
 '
 
Thomas Rast· Jul 30, 2010, 18:39 UTC · re: Jonathan Nieder · lore

Re: t4111 fails under valgrind

Jonathan Nieder wrote:
> Thanks for reporting.  Does this patch work for you?
[...]
> -		cp "$2" objects/file
> +		cp "$2" objects/file &&
> +		test_might_fail git update-index --refresh -q
Yes, that solves it.  Thanks!
-- 
Thomas Rast
trast@{inf,student}.ethz.ch
Thomas Rast· Aug 4, 2010, 10:06 UTC · re: Jonathan Nieder · lore

Re: t4111 fails under valgrind

Jonathan Nieder wrote:
Show 29 quoted lines
> -- 8< --
> Subject: t4111 (apply): refresh index before applying patches to it
> 
> "git apply", like most plumbing, does not automatically refresh the
> index file even if it is only stat-dirty.  So unless the two "cp"
> commands in reset_preimage() for a given file happen to have the same
> time stamp, there will be a spurious
> 
> 	error: sub/dir/file: does not match index
> 
> Refresh the index to eliminate this timing dependency.  Noticed by
> running the test with --valgrind (which slows things down a lot).
> 
> Reported-by: Thomas Rast <trast@student.ethz.ch>
> Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
> ---
> diff --git a/t/t4111-apply-subdir.sh b/t/t4111-apply-subdir.sh
> index 57cae50..a52d94a 100755
> --- a/t/t4111-apply-subdir.sh
> +++ b/t/t4111-apply-subdir.sh
> @@ -36,7 +36,8 @@ test_expect_success 'setup: subdir' '
>  		cp "$2" file &&
>  		cp "$2" sub/dir/file &&
>  		cp "$2" sub/dir/b/file &&
> -		cp "$2" objects/file
> +		cp "$2" objects/file &&
> +		test_might_fail git update-index --refresh -q
>  	}
>  '

Junio, can you pick this up? t4111 consistently fails for me without it.

-- 
Thomas Rast
trast@{inf,student}.ethz.ch

← back to recent threads