# t4111 fails under valgrind

4 messages from 2010-07-30 to 2010-08-04. Participants: Thomas Rast, Jonathan Nieder.
Thread: https://gitlist.dev/t/24582

## Thomas Rast, 2010-07-30 10:18

Subject: t4111 fails under valgrind
Message-ID: <201007301218.52437.trast@student.ethz.ch>
URL: https://gitlist.dev/e/201007301218.52437.trast%40student.ethz.ch

```
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, 2010-07-30 18:31

Subject: Re: t4111 fails under valgrind
Message-ID: <20100730183122.GA7578@dert.cs.uchicago.edu>
URL: https://gitlist.dev/e/20100730183122.GA7578%40dert.cs.uchicago.edu
In-Reply-To: <201007301218.52437.trast@student.ethz.ch>

```
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, 2010-07-30 18:39

Subject: Re: t4111 fails under valgrind
Message-ID: <201007302039.05491.trast@student.ethz.ch>
URL: https://gitlist.dev/e/201007302039.05491.trast%40student.ethz.ch
In-Reply-To: <20100730183122.GA7578@dert.cs.uchicago.edu>

```
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, 2010-08-04 10:06

Subject: Re: t4111 fails under valgrind
Message-ID: <201008041206.11367.trast@student.ethz.ch>
URL: https://gitlist.dev/e/201008041206.11367.trast%40student.ethz.ch
In-Reply-To: <20100730183122.GA7578@dert.cs.uchicago.edu>

```
Jonathan Nieder wrote:
> -- 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

```
