Do not call release_pack_memory in malloc wrappers when GIT_TRACE is used
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> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
parent
851c34b04e
commit
3a0942598c
6
trace.c
6
trace.c
@ -25,6 +25,10 @@
|
|||||||
#include "cache.h"
|
#include "cache.h"
|
||||||
#include "quote.h"
|
#include "quote.h"
|
||||||
|
|
||||||
|
void do_nothing(size_t unused)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
/* Get a trace file descriptor from GIT_TRACE env variable. */
|
/* Get a trace file descriptor from GIT_TRACE env variable. */
|
||||||
static int get_trace_fd(int *need_close)
|
static int get_trace_fd(int *need_close)
|
||||||
{
|
{
|
||||||
@ -72,6 +76,7 @@ void trace_printf(const char *fmt, ...)
|
|||||||
if (!fd)
|
if (!fd)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
set_try_to_free_routine(do_nothing); /* is never reset */
|
||||||
strbuf_init(&buf, 64);
|
strbuf_init(&buf, 64);
|
||||||
va_start(ap, fmt);
|
va_start(ap, fmt);
|
||||||
len = vsnprintf(buf.buf, strbuf_avail(&buf), fmt, ap);
|
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)
|
if (!fd)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
set_try_to_free_routine(do_nothing); /* is never reset */
|
||||||
strbuf_init(&buf, 64);
|
strbuf_init(&buf, 64);
|
||||||
va_start(ap, fmt);
|
va_start(ap, fmt);
|
||||||
len = vsnprintf(buf.buf, strbuf_avail(&buf), fmt, ap);
|
len = vsnprintf(buf.buf, strbuf_avail(&buf), fmt, ap);
|
||||||
|
Loading…
Reference in New Issue
Block a user