From: Mathieu Desnoyers Date: Tue, 30 Apr 2019 15:23:44 +0000 (-0400) Subject: Fix: timestamp_end field should include all events within sub-buffer X-Git-Tag: v2.11.0-rc3~7 X-Git-Url: https://git.lttng.org/?a=commitdiff_plain;h=74e4d0d1536ebc5b3ba01dabcdea468614ced6f7;hp=74e4d0d1536ebc5b3ba01dabcdea468614ced6f7;p=lttng-ust.git Fix: timestamp_end field should include all events within sub-buffer Fix for timestamp_end not including all events within sub-buffer. This happens if a thread is preempted/interrupted for a long time between reserve and commit (e.g. in the middle of a packet), which causes the timestamp used for timestamp_end field of the packet header to be lower than the timestamp of the last events in the buffer (those following the event that was preempted/interrupted between reserve and commit). The fix involves sampling the timestamp when doing the last space reservation in a sub-buffer (which necessarily happens before doing the delivery after its last commit). Save this timestamp temporarily in a per-sub-buffer control area (we have exclusive access to that area until we increment the commit counter). Then, that timestamp value will be read when delivering the sub-buffer, whichever event or switch happens to be the last to increment the commit counter to perform delivery. The timestamp value can be read without worrying about concurrent access, because at that point sub-buffer delivery has exclusive access to the sub-buffer. This ensures the timestamp_end value is always larger or equal to the timestamp of the last event, always below or equal the timestamp_begin of the following packet, and always below or equal the timestamp of the first event in the following packet. This changes the layout of the ring buffer shared memory area, so we need to bump the LTTNG_UST_ABI version from 7.2 to 8.0, thus requiring locked-step upgrade between liblttng-ust in applications, session daemon, and consumer daemon. This fix therefore cannot be backported to existing stable releases. Fixes: #1183 Signed-off-by: Mathieu Desnoyers ---