diff --git a/systrace/include/common/shared_constants.c b/systrace/include/common/shared_constants.c index 7fc06b43c382b0e22fea4e92e98dc9b916e8ecee..b9c96527e29a50df6d43521aa5fc37b084eac912 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 a9636bb35c36ad4bf72375e59ab830e33afa0ab0..4d91016a97212385e734e2ade8ad754411fe2eb0 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;