From 76882f87648ac8af5200794c4c360d7c1a1d63a7 Mon Sep 17 00:00:00 2001 From: Wang Yu Date: Thu, 17 Sep 2026 14:42:22 +0800 Subject: [PATCH] fix(lsock): handle initialization failures and cleanup trace resources Signed-off-by: Wang Yu --- observe/lsock.cpp | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/observe/lsock.cpp b/observe/lsock.cpp index e99a262..1a8c6ce 100644 --- a/observe/lsock.cpp +++ b/observe/lsock.cpp @@ -1062,7 +1062,7 @@ int main(int argc, char **argv) { int iter_fd; ssize_t rd_sz; - CircleBuf *cb; + CircleBuf *cb = nullptr; u32 key = 0; rule_init(); @@ -1072,9 +1072,16 @@ int main(int argc, char **argv) DEBUG(0, "BpfData header size: %lu\n", sizeof(BpfData)); register_signal(); - cb = new CircleBuf(CIRCLE_BUF_SIZE); - memset(cb->buf(), 0, CIRCLE_BUF_SIZE); - + try + { + cb = new CircleBuf(CIRCLE_BUF_SIZE); + memset(cb->buf(), 0, CIRCLE_BUF_SIZE); + } + catch (const std::exception &e) + { + pr_error("lsock: %s\n", e.what()); + goto err_out_before_trace; + } trace.start(); trace.async_follow(); @@ -1141,8 +1148,9 @@ int main(int argc, char **argv) lsock_bpf::destroy(obj); // Clean up BPF object delete cb; return 0; - err_out: + trace.stop(); +err_out_before_trace: if (obj) { lsock_bpf::detach(obj); // Detach BPF program