[PATCH 2/2] Do not call release_pack_memory in malloc wrappers when GIT_TRACE is used
- From
Johannes Sixt <j6t@kdbg.org>
- Date
- May 8, 2010, 15:18 UTC
- Message-ID
- <201005081718.07355.j6t@kdbg.org>
- In-Reply-To
- <201005081713.49937.j6t@kdbg.org>
This avoids a potential race condition when async procedures are implemented as threads where release_pack_memory() can be called from different threads without locking under memory pressure.
Signed-off-by: Johannes Sixt <j6t@kdbg.org> --- It is worthwhile to have this in np/malloc-threading (and in maint or master) even if js/async-thread is not in master, yet, because on Windows we already have async procedures implemented in threads.
trace.c | 6 ++++++ 1 files changed, 6 insertions(+), 0 deletions(-)
diff --git a/trace.c b/trace.c index 4229ae1..1e560cb 100644 --- a/trace.c +++ b/trace.c @@ -25,6 +25,10 @@ #include "cache.h" #include "quote.h" +void do_nothing(size_t unused) +{ +} + /* Get a trace file descriptor from GIT_TRACE env variable. */ static int get_trace_fd(int *need_close) { @@ -72,6 +76,7 @@ void trace_printf(const char *fmt, ...) if (!fd) return; + set_try_to_free_routine(do_nothing); /* is never reset */ strbuf_init(&buf, 64); va_start(ap, fmt); len = vsnprintf(buf.buf, strbuf_avail(&buf), fmt, ap); @@ -103,6 +108,7 @@ void trace_argv_printf(const char **argv, const char *fmt, ...) if (!fd) return; + set_try_to_free_routine(do_nothing); /* is never reset */ strbuf_init(&buf, 64); va_start(ap, fmt); len = vsnprintf(buf.buf, strbuf_avail(&buf), fmt, ap);
-- 1.7.1.64.ga1799.dirty