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.13.5~15 X-Git-Url: https://git.lttng.org/?p=lttng-tools.git;a=commitdiff_plain;h=47287c8c2ec367b9718dc1eb0f5aef4f492637af 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 a23322c8d..6fe91c237 100644 --- a/src/common/consumer/consumer-stream.c +++ b/src/common/consumer/consumer-stream.c @@ -1091,6 +1091,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); }