projects
/
lttng-ust.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Fix: fd tracker: do not allow signal handlers to close lttng-ust FDs
[lttng-ust.git]
/
liblttng-ust
/
lttng-ust-comm.c
diff --git
a/liblttng-ust/lttng-ust-comm.c
b/liblttng-ust/lttng-ust-comm.c
index e392e460cca2dada53036fc622adbc8b3cf87355..3cebb9811348545bb5c9a9d59556ab60362f5690 100644
(file)
--- a/
liblttng-ust/lttng-ust-comm.c
+++ b/
liblttng-ust/lttng-ust-comm.c
@@
-86,6
+86,8
@@
static int initialized;
*
* ust_lock nests within the dynamic loader lock (within glibc) because
* it is taken within the library constructor.
*
* ust_lock nests within the dynamic loader lock (within glibc) because
* it is taken within the library constructor.
+ *
+ * The ust fd tracker lock nests within the ust_mutex.
*/
static pthread_mutex_t ust_mutex = PTHREAD_MUTEX_INITIALIZER;
*/
static pthread_mutex_t ust_mutex = PTHREAD_MUTEX_INITIALIZER;
@@
-1455,6
+1457,7
@@
void *ust_listener_thread(void *arg)
long timeout;
lttng_ust_fixup_tls();
long timeout;
lttng_ust_fixup_tls();
+ lttng_ust_fd_tracker_register_thread();
/*
* If available, add '-ust' to the end of this thread's
* process name
/*
* If available, add '-ust' to the end of this thread's
* process name
@@
-2065,6
+2068,7
@@
void ust_before_fork(sigset_t *save_sigset)
ust_lock_nocheck();
urcu_bp_before_fork();
ust_lock_nocheck();
urcu_bp_before_fork();
+ lttng_ust_lock_fd_tracker();
}
static void ust_after_fork_common(sigset_t *restore_sigset)
}
static void ust_after_fork_common(sigset_t *restore_sigset)
@@
-2072,6
+2076,7
@@
static void ust_after_fork_common(sigset_t *restore_sigset)
int ret;
DBG("process %d", getpid());
int ret;
DBG("process %d", getpid());
+ lttng_ust_unlock_fd_tracker();
ust_unlock();
pthread_mutex_unlock(&ust_fork_mutex);
ust_unlock();
pthread_mutex_unlock(&ust_fork_mutex);
This page took
0.023084 seconds
and
4
git commands to generate.