This patch allocates the memory used by the ts_end field added by commit
6c737d05. When allocating lots of subbuffer for a channel (512 or more),
zalloc_shm() will fail to allocate all the objects because the allocated memory
map didn't take account the newly added field.

lttng-tools version: b14f53d4 (2.12.0-pre)

Steps to reproduce the bug:

        1. lttng-sessiond -vvv --verbose-consumer
        2. start a traced application
        3. lttng create "test-sesssion"
        4. lttng enable-channel --userspace --num-subbuf 512 --subbuf-size 8k 
--overwrite channel
        5. lttng enable-event -u -a -c channel
        6. lttng start

After these steps, the following error message show should be thrown:

        Error: ask_channel_creation consumer command failed
        Error: Error creating UST channel "channel" on the consumer daemon

Signed-off-by: Gabriel-Andrew Pollo-Guilbert 
<gabriel.pollo-guilb...@efficios.com>
---
 libringbuffer/ring_buffer_backend.c | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/libringbuffer/ring_buffer_backend.c 
b/libringbuffer/ring_buffer_backend.c
index a0ef7446..431b8eae 100644
--- a/libringbuffer/ring_buffer_backend.c
+++ b/libringbuffer/ring_buffer_backend.c
@@ -341,6 +341,9 @@ int channel_backend_init(struct channel_backend *chanb,
        shmsize += sizeof(struct commit_counters_hot) * num_subbuf;
        shmsize += offset_align(shmsize, __alignof__(struct 
commit_counters_cold));
        shmsize += sizeof(struct commit_counters_cold) * num_subbuf;
+       /* Sampled timestamp end */
+       shmsize += offset_align(shmsize, __alignof__(uint64_t));
+       shmsize += sizeof(uint64_t) * num_subbuf;
 
        if (config->alloc == RING_BUFFER_ALLOC_PER_CPU) {
                struct lttng_ust_lib_ring_buffer *buf;
-- 
2.21.0

_______________________________________________
lttng-dev mailing list
lttng-dev@lists.lttng.org
https://lists.lttng.org/cgi-bin/mailman/listinfo/lttng-dev

Reply via email to