On Tue, Sep 27, 2011 at 11:28 AM, Michael Haggerty <mhagger@xxxxxxxxxxxx> wrote: > A temporary buffer produced by get_pathname() is recycled after a few > subsequent calls of get_pathname(). The use of such a buffer after it > has been recycled can result in the wrong file being accessed with > very strange effects. Moreover, such a bug can lie dormant until code > elsewhere is changed to use a temporary buffer, causing very > mysterious, nonlocal failures that are hard to analyze. > > Add a second implementation of get_pathname() (activated if the > VALGRIND preprocessor macro is defined) that allocates and frees > buffers instead of recycling statically-allocated buffers. This does > not make the problem less serious, but it turns the errors into > access-after-free errors, making it possible to locate the guilty code > using valgrind. > > Signed-off-by: Michael Haggerty <mhagger@xxxxxxxxxxxx> > --- > > I believe that it is frowned upon to use #ifdefs in git code, but no > good alternative is obvious to me for this type of use. Suggestions > are welcome. Enable the code based on an environment variable, e.g. GIT_DEBUG_FENCE, then enable it by default in test-lib.sh :-) -- Duy -- 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