From 2f9eaefec4fb0be34df5f46cc21a7870b4501482 Mon Sep 17 00:00:00 2001 From: weli-l <1289113577@qq.com> Date: Mon, 29 Sep 2025 09:57:56 +0800 Subject: [PATCH] fix issue that osprobe thread can not stop Signed-off-by: weli-l <1289113577@qq.com> --- systrace/include/common/shared_constants.c | 4 +++- systrace/src/os/os_probe.c | 4 ++-- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/systrace/include/common/shared_constants.c b/systrace/include/common/shared_constants.c index 7fc06b4..b9c9652 100644 --- a/systrace/include/common/shared_constants.c +++ b/systrace/include/common/shared_constants.c @@ -115,7 +115,9 @@ bool checkAndUpdateTimer(int level) { return false; } - pthread_mutex_lock(&shared_data->g_trace_mutex); + if (pthread_mutex_trylock(&shared_data->g_trace_mutex) != 0) { + return false; + } bool* dump_flag = NULL; float* interval = NULL; diff --git a/systrace/src/os/os_probe.c b/systrace/src/os/os_probe.c index a9636bb..4d91016 100644 --- a/systrace/src/os/os_probe.c +++ b/systrace/src/os/os_probe.c @@ -506,11 +506,12 @@ int bpf_buffer_init_from_pin(struct bpf_buffer **buffer_ptr, const char *map_pat return -1; } *buffer_ptr = buffer; - close(map_fd); // 不再需要,buffer 内部已经引用 fd 或 dup + close(map_fd); return 0; } void cleanup_osprobe() { + sig_int(); FILE *fp; fp = popen(RM_MAP_PATH, "r"); if (fp != NULL) { @@ -598,7 +599,6 @@ int run_osprobe() { } } - fprintf(stderr, "[OS_PROBE RANK_%d] sysTrace ebpf trace finished\n", local_rank); err: cleanup_osprobe(); return ret; -- Gitee