Bug #545 » patch-hang-startup.patch
| liblttng-ust/lttng-ust-comm.c | ||
|---|---|---|
|
{
|
||
|
int ret;
|
||
|
if (sock_info->root_handle != -1) {
|
||
|
ret = lttng_ust_objd_unref(sock_info->root_handle, 1);
|
||
|
if (ret) {
|
||
|
ERR("Error unref root handle");
|
||
|
}
|
||
|
sock_info->root_handle = -1;
|
||
|
}
|
||
|
sock_info->constructor_sem_posted = 0;
|
||
|
/*
|
||
|
* wait_shm_mmap, socket and notify socket are used by listener
|
||
|
* threads outside of the ust lock, so we cannot tear them down
|
||
|
* ourselves, because we cannot join on these threads. Leave
|
||
|
* responsibility of cleaning up these resources to the OS
|
||
|
* process exit.
|
||
|
*/
|
||
|
if (exiting)
|
||
|
return;
|
||
|
if (sock_info->socket != -1) {
|
||
|
ret = ustcomm_close_unix_sock(sock_info->socket);
|
||
|
if (ret) {
|
||
| ... | ... | |
|
}
|
||
|
sock_info->notify_socket = -1;
|
||
|
}
|
||
|
if (sock_info->root_handle != -1) {
|
||
|
ret = lttng_ust_objd_unref(sock_info->root_handle, 1);
|
||
|
if (ret) {
|
||
|
ERR("Error unref root handle");
|
||
|
}
|
||
|
sock_info->root_handle = -1;
|
||
|
}
|
||
|
sock_info->constructor_sem_posted = 0;
|
||
|
/*
|
||
|
* wait_shm_mmap is used by listener threads outside of the
|
||
|
* ust lock, so we cannot tear it down ourselves, because we
|
||
|
* cannot join on these threads. Leave this task to the OS
|
||
|
* process exit.
|
||
|
*/
|
||
|
if (!exiting && sock_info->wait_shm_mmap) {
|
||
|
if (sock_info->wait_shm_mmap) {
|
||
|
ret = munmap(sock_info->wait_shm_mmap, sysconf(_SC_PAGE_SIZE));
|
||
|
if (ret) {
|
||
|
ERR("Error unmapping wait shm");
|
||
| ... | ... | |
|
has_waited = 1;
|
||
|
prev_connect_failed = 0;
|
||
|
}
|
||
|
ust_lock();
|
||
|
if (lttng_ust_comm_should_quit) {
|
||
|
goto quit;
|
||
|
}
|
||
|
if (sock_info->socket != -1) {
|
||
|
ret = ustcomm_close_unix_sock(sock_info->socket);
|
||
| ... | ... | |
|
if (ret < 0) {
|
||
|
DBG("Info: sessiond not accepting connections to %s apps socket", sock_info->name);
|
||
|
prev_connect_failed = 1;
|
||
|
ust_lock();
|
||
|
if (lttng_ust_comm_should_quit) {
|
||
|
goto quit;
|
||
|
}
|
||
|
/*
|
||
|
* If we cannot find the sessiond daemon, don't delay
|
||
|
* constructor execution.
|
||
| ... | ... | |
|
WARN("Unsuppoorted timeout value %ld", timeout);
|
||
|
}
|
||
|
ust_lock();
|
||
|
if (lttng_ust_comm_should_quit) {
|
||
|
goto quit;
|
||
|
}
|
||
|
/*
|
||
|
* Create only one root handle per listener thread for the whole
|
||
|
* process lifetime, so we ensure we get ID which is statically
|
||
- « Previous
- 1
- 2
- 3
- Next »