From: Changjoon Baek Date: Wed, 16 Nov 2016 08:03:32 +0000 (+0900) Subject: Add destructor to libttrace X-Git-Tag: submit/tizen/20161123.094102~2 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=8cf99e1cb9cdfff64da46c7adf994905fd5ebe1b;p=tools%2Fttrace.git Add destructor to libttrace T-trace doesn't considering the case of dlclose(). If some package that use traceBegin, traceEnd call dlopen(), dlclose() repeatly, happen fd leakage at ttrace_tmp, trace_marker. So, Add destructor function libttrace_fini() that close all of opened file descriptor. Change-Id: I6431b404827d160adb8176eefd7bd7f4fce620ef Signed-off-by: Changjoon Baek --- diff --git a/src/ttrace.c b/src/ttrace.c index 78c1218..a467583 100755 --- a/src/ttrace.c +++ b/src/ttrace.c @@ -52,12 +52,30 @@ #define FD_INITIAL_VALUE -1 #define TRACE_FILE_NOT_EXIST -2 +void __attribute__ ((constructor)) libttrace_init(void); +void __attribute__ ((destructor)) libttrace_fini(void); + int g_trace_handle_fd = FD_INITIAL_VALUE; int g_enabled_tag_fd = FD_INITIAL_VALUE; static uint64_t dummy = 0; uint64_t *cur_enabled_tag = (void *)&dummy; +void libttrace_init() +{ + return; +} + +void libttrace_fini() +{ + if (g_trace_handle_fd > FD_INITIAL_VALUE) + close(g_trace_handle_fd); + if (g_enabled_tag_fd > FD_INITIAL_VALUE) + close(g_enabled_tag_fd); + return; +} + + static uint64_t traceInit() { uint64_t *sm_for_enabled_tag;