Project

General

Profile

Bug #545 » patch-hang-startup.patch

Jérémie Galarneau, 05/30/2013 11:36 AM

View differences:

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
(3-3/3)