From: David Goulet Date: Wed, 19 Mar 2014 18:34:27 +0000 (-0400) Subject: Fix: add consumer wake up pipe to avoid race X-Git-Tag: v2.5.0-rc1~82 X-Git-Url: https://git.lttng.org/?a=commitdiff_plain;ds=sidebyside;h=02b3d1769d5f8a33e4109b1e681141c9295dfda6;hp=02b3d1769d5f8a33e4109b1e681141c9295dfda6;p=lttng-tools.git Fix: add consumer wake up pipe to avoid race UST application will notify the wait_fd pipe for every subbuffer that it writes and ready to be consumed. However, on *high* load systems, this 1:1 property can fail if the pipe gets filled up. For performance reason, UST will ignore this error and continue since it can't wait for the pipe to clear up. This triggers a race condition where we have *one* wake up on the UST pipe for potentially multiple subbuffers. A data pending command will wait forever on streams that still has data but the data thread could'nt consumed them because of this 1:n possible race. Using the stop command without waiting would mean a memory/fd leak of the stream. Thus, we add a consumer wake up pipe here that notifies the data thread if there is still data to be read after a successful read subbuffer call. With this, we end up handling the residual buffers if any since the data thread is always notified when there is still data to be read. Acked-by: Mathieu Desnoyers Signed-off-by: David Goulet ---