From: Jérémie Galarneau Date: Thu, 8 Feb 2018 23:25:55 +0000 (-0500) Subject: Fix: metadata channel leak when using the snapshot tracing mode X-Git-Tag: v2.11.0-rc1~405 X-Git-Url: https://git.lttng.org/?a=commitdiff_plain;ds=sidebyside;h=f65a74beeeb07878df549f75a65209a765892b25;hp=f65a74beeeb07878df549f75a65209a765892b25;p=lttng-tools.git Fix: metadata channel leak when using the snapshot tracing mode While running stress tests involving the snapshot mode, it becomes apparent that the lttng-consumerd leaks a number of file descriptors. To isolate the problem, the test was narrowed down to * Create a session in snapshot mode * Enable a userspace channel * Enable all userspace events * Start tracing * Run a traced application * Stop tracing * Destroy session This has shown that 5 file descriptors were leaked on each iteration of the above. As the comments in this change indicate, the ownership and lifetime of metadata channels varies depending on the tracing mode being used. In non-snapshot tracing modes, metadata channels are owned by their respective streams. On destruction of a metadata stream, consumer_del_channel() is invoked since the stream releases its ownership of the metadata channel. However, this relationship between metadata streams and channels does not exist in snapshot mode; streams are created and destroyed on every snapshot record. Hence, the LTTNG_CONSUMER_CLOSE_METADATA command must immediately clean the metadata channel. The channel's "monitor" flag is used to determine whether or not the metadata channel is in "snapshot" mode or not. Signed-off-by: Jérémie Galarneau ---