Fix: unhandled prev_seq initial value
authorJérémie Galarneau <jeremie.galarneau@efficios.com>
Thu, 29 Mar 2018 19:13:34 +0000 (15:13 -0400)
committerJérémie Galarneau <jeremie.galarneau@efficios.com>
Tue, 3 Apr 2018 16:12:29 +0000 (12:12 -0400)
The previous sequence number of a stream is initialized to -1ULL
and comparing the current sequence number against it to perform
a rotation will yield unexepected results.

The assumption that the previous sequence number is less than
the current one is assert()'ed on elsewhere.

This case triggers whenever a rotation is performed before the
relay daemon has received a packet for a given stream.

Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
src/bin/lttng-relayd/main.c

index f68ecdfbcbfe6ab9248c8603676a6a811e59d9aa..e3c070f8ba0330c2c297983456b385be19ad0513 100644 (file)
@@ -1722,7 +1722,8 @@ int try_rotate_stream(struct relay_stream *stream)
                goto end;
        }
 
-       if (stream->prev_seq < stream->rotate_at_seq_num) {
+       if (stream->prev_seq < stream->rotate_at_seq_num ||
+                       stream->prev_seq == -1ULL) {
                DBG("Stream %" PRIu64 " no yet ready for rotation",
                                stream->stream_handle);
                goto end;
This page took 0.027201 seconds and 4 git commands to generate.