Re: valgrind patches, was Re: What's cooking in git.git (Jan 2009, #04; Mon, 19)

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Wed, Jan 21, 2009 at 01:28:01AM +0100, Johannes Schindelin wrote:

> Actually, I test first if it is there, and only if it is not, try to 
> create the symlink.
> 
> Now, there is still a very minor chance for a race, namely if two 
> processes happen to test the existence of the missing symlink at exactly 
> the same time, and both do not find it, so both processes will try to 
> create it.

Yep. Though I find "minor chance" when it comes to races to really mean
"annoying to debug". But...

> However, the symlink creation is not checked for success, so the processes 
> will still both run just fine.

Yes, so there is no race in what is there currently. It's just sad that
we can't detect any actual errors.

> There is a very subtle problem, though.  If you screw with your 
> configuration, replacing a link in t/valgrind/ by a script, my code will 
> not try to undo it.  However, I think that's really asking for trouble, 
> and you can get out of the mess by "rm -r t/valgrind/git*".

I think we can safely ignore such mucking about in the valgrind
directory as craziness.

> Another problem which is potentially much more troublesome is this: 
> when there was a script by a certain name, my code would symlink it 
> to $GIT_DIR/$BASENAME (actually a relative path, but you get the 
> idea).  If that script is turned into a builtin -- this list has certainly 
> known a certain person to push for that kind of conversion :-) -- that 
> fact is not picked up.

Yes. One way around this is to generate a "want" and a "have" list, and
then just operate on the differences. Something like (totally untested):

  (cd $GIT_VALGRIND && ls) | sort >have
  (cd $TEST_DIRECTORY/.. && ls git git-*) | sort >want
  comm -23 have want | xargs -r rm -v
  comm -13 have want | while read f; do ln -s ../../$f $GIT_VALGRIND/$f; done

and then you are also cleaning every time you create.

-Peff
--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [Linux Kernel Development]     [Gcc Help]     [IETF Annouce]     [DCCP]     [Netdev]     [Networking]     [Security]     [V4L]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux SCSI]     [Fedora Users]

  Powered by Linux