X-Git-Url: https://git.lttng.org/?a=blobdiff_plain;f=src%2Fcommon%2Frunas.c;h=2c2015aa2d5b8206bca9052320553f8da78d431d;hb=b1c900e9d222629937cb1a42e769318e88f28664;hp=e230774df442134ddbf45185a080806c4974f85f;hpb=d14d33bf091e72b23b1f90ea18a0a01bed098b76;p=lttng-tools.git diff --git a/src/common/runas.c b/src/common/runas.c index e230774df..2c2015aa2 100644 --- a/src/common/runas.c +++ b/src/common/runas.c @@ -38,6 +38,10 @@ #define RUNAS_CHILD_STACK_SIZE 10485760 +#ifndef MAP_STACK +#define MAP_STACK 0 +#endif + #ifdef __FreeBSD__ /* FreeBSD MAP_STACK always return -ENOMEM */ #define LTTNG_MAP_STACK 0 @@ -313,8 +317,13 @@ static int run_as(int (*cmd)(void *data), void *data, uid_t uid, gid_t gid) { if (!getenv("LTTNG_DEBUG_NOCLONE")) { + int ret; + DBG("Using run_as_clone"); - return run_as_clone(cmd, data, uid, gid); + pthread_mutex_lock(<tng_libc_state_lock); + ret = run_as_clone(cmd, data, uid, gid); + pthread_mutex_unlock(<tng_libc_state_lock); + return ret; } else { DBG("Using run_as_noclone"); return run_as_noclone(cmd, data, uid, gid);