From: Jérémie Galarneau Date: Fri, 22 Nov 2019 20:08:15 +0000 (-0500) Subject: Fix: consumerd: assert on null trace chunk on session restart X-Git-Tag: v2.12.0-rc1~233 X-Git-Url: https://git.lttng.org/?p=lttng-tools.git;a=commitdiff_plain;h=ce1aa6fe88ec86bb5e7910bfa59e8f6873647ed4;hp=ce1aa6fe88ec86bb5e7910bfa59e8f6873647ed4 Fix: consumerd: assert on null trace chunk on session restart The consumer daemon asserts on `stream->net_seq_idx != (uint64_t) 1ULL || stream>trace_chunk' when a session is re-started following a rotation. Steps to reproduce, while an instrumented application is running: $ lttng create $ lttng enable-event -u -a $ lttng start $ lttng stop $ lttng rotate $ lttng start -> assertion fails The trace chunk of a stream can be null in this scenario as the "create trace chunk" consumer command immediately sets the streams' current trace chunk when they are transitioning from a "null" trace chunk. Since 1f4962443, a session restart will cause a rotation to occur from "null" to the streams' new trace chunk. When this rotation occurs, the channel and their streams are seen to be in the same trace chunk. This is unexpected as this should only occur when transitioning from a trace chunk to the "null" trace chunk (no output). In that case, the streams are considered to have reached the point where they should discard their current trace chunk to enter the "null trace chunk" state (having no current output). This is exactly the opposite of the situation here as streams are transitioning from a null to a non-null trace chunk. Hence, the immediate assignation of the trace chunk to the streams should no longer be performed on creation of a trace chunk on the consumer daemon. The streams transition from the "null" trace chunk to a new trace chunk through the "rotate channel" command as is done for all other rotation operations. Removing this bypass also ensures that the rotation behaviour of both the consumer and relay daemons match. Signed-off-by: Jérémie Galarneau ---