From: Jérémie Galarneau Date: Thu, 3 Mar 2022 22:52:33 +0000 (-0500) Subject: Fix: ust-consumerd: leak of stream control structure X-Git-Tag: v2.12.9~10 X-Git-Url: https://git.liburcu.org/?p=lttng-tools.git;a=commitdiff_plain;h=7a843330fa4fb0e5f7139970b9b3f38292bc45c8 Fix: ust-consumerd: leak of stream control structure The following leak is reported by LeakSanitizer when setup_metadata() fails to send the metadata stream to the relay daemon: ==3050181==ERROR: LeakSanitizer: detected memory leaks Direct leak of 240 byte(s) in 5 object(s) allocated from: #0 0x7f5fce02cfb9 in __interceptor_calloc /usr/src/debug/gcc/libsanitizer/asan/asan_malloc_linux.cpp:154 #1 0x7f5fcdd95a7a in zmalloc ../../../src/common/macros.h:23 #2 0x7f5fcdd95a7a in lttng_ust_ctl_create_stream /home/jgalar/EfficiOS/src/lttng-ust/src/lib/lttng-ust-ctl/ustctl.c:1649 A consumer stream can have an allocated `struct lttng_ust_ctl_consumer_stream *` (ustream) even if it is not globally visible at the time of its teardown. In the case of the user space consumer, the only site that creates consumer stream instances ensures that the allocation of the lttng_ust_ctl_consumer_stream succeeded, ensuring that the consumer stream's 'ustream' is always set. Signed-off-by: Jérémie Galarneau Change-Id: Ia4be7969e85bd8812ae13b042e1e100812a63c1d --- diff --git a/src/common/consumer/consumer-stream.c b/src/common/consumer/consumer-stream.c index 9f134e141..0f60dfd08 100644 --- a/src/common/consumer/consumer-stream.c +++ b/src/common/consumer/consumer-stream.c @@ -921,6 +921,7 @@ void consumer_stream_destroy(struct lttng_consumer_stream *stream, * If the stream is not visible globally, this needs to be done * outside of the consumer data lock section. */ + destroy_close_stream(stream); free_chan = unref_channel(stream); }