From 63d01a128ad206cba86835e1ef6af5cd706bb75e Mon Sep 17 00:00:00 2001 From: YoungHun Kim Date: Tue, 26 Dec 2017 14:28:44 +0900 Subject: [PATCH] Move fd-stat-dump function to muse-core for debugging purpose - Sometimes unexpected fd was returned from socket() on client side (eg. STDIN_FILENO, STDOUT_FILNO or STERR_FILENO) Change-Id: I3ef8ae49fa29403307e739584a0ac5242e926dcc --- client/src/muse_client.c | 1 + core/include/muse_core.h | 2 ++ core/src/muse_core.c | 17 +++++++++++++++++ packaging/mused.spec | 2 +- server/include/muse_server.h | 2 -- server/src/muse_server.c | 14 -------------- server/src/muse_server_private.c | 4 ++-- 7 files changed, 23 insertions(+), 19 deletions(-) diff --git a/client/src/muse_client.c b/client/src/muse_client.c index 0ad6861..5937235 100644 --- a/client/src/muse_client.c +++ b/client/src/muse_client.c @@ -145,6 +145,7 @@ static int _mc_new(muse_channel_e channel) if (!muse_core_fd_is_valid(sock_fd)) { strerror_r(errno, err_msg, MUSE_MSG_LEN_MAX); LOGE("[socket failure] %d sock: %s", errno, err_msg); + muse_core_fd_state_dump(sock_fd); return ret; } LOGI("sockfd: %d", sock_fd); diff --git a/core/include/muse_core.h b/core/include/muse_core.h index c2e7b3a..5b6a284 100644 --- a/core/include/muse_core.h +++ b/core/include/muse_core.h @@ -113,6 +113,8 @@ void *muse_core_msg_object_new(char *str, int *parse_len, muse_core_msg_parse_er bool muse_core_msg_object_get_value(const char *key, void *jobj, muse_core_msg_type_e m_type, void *data); void muse_core_msg_object_free(void *msg_obj); +void muse_core_fd_state_dump(int fd); + #ifdef __cplusplus } #endif diff --git a/core/src/muse_core.c b/core/src/muse_core.c index b893eb7..6fd2b65 100644 --- a/core/src/muse_core.c +++ b/core/src/muse_core.c @@ -566,3 +566,20 @@ void muse_core_msg_object_free(void *jobj) g_mutex_unlock(&msg_lock); } + +void muse_core_fd_state_dump(int fd) +{ + struct stat sb = { 0, }; + char err_msg[MUSE_MSG_LEN_MAX] = {'\0',}; + + if (fstat(fd, &sb) < 0) { + strerror_r(errno, err_msg, MUSE_MSG_LEN_MAX); + LOGE("[%d] failed to get file status %d %s", fd, errno, err_msg); + return; + } + + LOGI("[Last file access %d] %s", fd, ctime(&sb.st_atime)); + LOGI("[Last status change] %s", ctime(&sb.st_ctime)); + LOGI("[Last file modification] %s", ctime(&sb.st_mtime)); +} + diff --git a/packaging/mused.spec b/packaging/mused.spec index 17abc8c..2f1cbe6 100644 --- a/packaging/mused.spec +++ b/packaging/mused.spec @@ -1,6 +1,6 @@ Name: mused Summary: A multimedia daemon -Version: 0.3.23 +Version: 0.3.24 Release: 0 Group: System/Libraries License: Apache-2.0 diff --git a/server/include/muse_server.h b/server/include/muse_server.h index 6ce64f7..3e115e4 100644 --- a/server/include/muse_server.h +++ b/server/include/muse_server.h @@ -63,8 +63,6 @@ int muse_server_get_platform_info(const char *key, bool *value); unsigned int muse_server_get_atomic_uint(void); int muse_server_get_module_instance_count(int idx); -void muse_server_check_fd_state(int fd); - #ifdef __cplusplus } #endif diff --git a/server/src/muse_server.c b/server/src/muse_server.c index 1a4b450..560b5fa 100644 --- a/server/src/muse_server.c +++ b/server/src/muse_server.c @@ -405,20 +405,6 @@ int muse_server_get_module_instance_count(int idx) return connection->instance_count[idx]; } -void muse_server_check_fd_state(int fd) -{ - struct stat sb = { 0, }; - - if (fstat(fd, &sb) < 0) { - LOGE("failed to get file status"); - return; - } - - LOGI("[Last file access %d] %s", fd, ctime(&sb.st_atime)); - LOGI("[Last status change] %s", ctime(&sb.st_ctime)); - LOGI("[Last file modification] %s", ctime(&sb.st_mtime)); -} - int main(int argc, char **argv) { pid_t pid; diff --git a/server/src/muse_server_private.c b/server/src/muse_server_private.c index 6a1751f..f222590 100644 --- a/server/src/muse_server_private.c +++ b/server/src/muse_server_private.c @@ -269,7 +269,7 @@ static gboolean _ms_connection_handler(GIOChannel *source, GIOCondition conditio if (!muse_core_fd_is_valid(server_sockfd)) { LOGE("Critical Error : server %d is invalid", server_sockfd); _ms_unlock_state(); - muse_server_check_fd_state(STDIN_FILENO); + muse_core_fd_state_dump(server_sockfd); ms_respawn(SIGABRT); return FALSE; } @@ -278,7 +278,7 @@ static gboolean _ms_connection_handler(GIOChannel *source, GIOCondition conditio client_sockfd = accept(server_sockfd, (struct sockaddr *)&client_address, &client_len); if (!muse_core_fd_is_valid(client_sockfd)) { LOGE("Critical Error : accept %d is invalid", client_sockfd); - muse_server_check_fd_state(STDIN_FILENO); + muse_core_fd_state_dump(client_sockfd); close(server_sockfd); _ms_unlock_state(); ms_respawn(SIGABRT); -- 2.7.4