From patchwork Fri Mar 31 15:15:14 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Ronald S. Bultje" X-Patchwork-Id: 3223 Delivered-To: ffmpegpatchwork@gmail.com Received: by 10.103.44.195 with SMTP id s186csp2088875vss; Fri, 31 Mar 2017 08:15:27 -0700 (PDT) X-Received: by 10.28.203.197 with SMTP id b188mr3505375wmg.110.1490973327403; Fri, 31 Mar 2017 08:15:27 -0700 (PDT) Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id v8si3879794wmb.31.2017.03.31.08.15.26; Fri, 31 Mar 2017 08:15:27 -0700 (PDT) Received-SPF: pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) client-ip=79.124.17.100; Authentication-Results: mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com; spf=pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) smtp.mailfrom=ffmpeg-devel-bounces@ffmpeg.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=gmail.com Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 3A636689A5D; Fri, 31 Mar 2017 18:15:23 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-qt0-f193.google.com (mail-qt0-f193.google.com [209.85.216.193]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id D6B54689A2B for ; Fri, 31 Mar 2017 18:15:16 +0300 (EEST) Received: by mail-qt0-f193.google.com with SMTP id r5so10599433qtb.2 for ; Fri, 31 Mar 2017 08:15:17 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id; bh=0Yh1Wp9NsrszUgvutRMIg5EQhb3Si+INgjNAcGUu/9A=; b=bd+uwxpIGTYgUgBoiFmg0BSWsQn1+gLZ9tELaZi4Fpcb3ZTO2xaDRV+jJkHvSSK9Aa aEL8UdGaamHJZvqdDs7Oat1fgdl8RedAqHUrEFjdfDuOEVqTL/bE49U/UZBOz2ttIwxB VI2BQrQjeVRchF93nWxdY/ROq0SjoBqBZqPT30W5UJuMQnHndSHsVmJIPwZ3iq1xTKjq KMs7BWvM4dFFhA9Ef+WJD8m/TAZcpB0WiSa34vSwPUzcXiWChRM4qTe0ECCMovhfGxsk trO2kJ6audMvD6GR7U4yKP6zjY654Em4gK/5TJ7+9vbo/7/+Vi+SoovseeuJF9QoyyTd iM6Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id; bh=0Yh1Wp9NsrszUgvutRMIg5EQhb3Si+INgjNAcGUu/9A=; b=fTP+ImnKBX9ivNCYSVMM2gVibVeq6Vv96yIqqjw35vhyscgWMUiY1whmzX0Cd/Uy+Q KuXS7rnV7+eajIwYxsrDta6d28eNecNrwfbfgqGfu310x5jLKxx2m4zbMYnriPuCPtJO vunyd8x7r5KpaL08PfMsT39/3c+vlwqiExuIs/KoAG5IHtAlM3nDp3+jDQI1QodWxEIv 50lu4ywK39mq1ugQQrfey4uih1izuCuHmk28c3vQGF6b3cAmnsxIqPvzojG8CKi8svw2 C9z4a6j19cpXXCPfbtH4ebzunf7XkOeWoz2Dgh0T4z/vtoRnppwJth/RZQLhIU/UB0Do TJVQ== X-Gm-Message-State: AFeK/H1l7Ong5TmGIzUD0hXSffStYNxdzl9INyl02NMS1yYxRx2fPVwbq8EbKUJo2279aA== X-Received: by 10.237.37.41 with SMTP id v38mr3372786qtc.24.1490973316106; Fri, 31 Mar 2017 08:15:16 -0700 (PDT) Received: from localhost.localdomain ([65.206.95.146]) by smtp.gmail.com with ESMTPSA id q188sm3707110qkf.20.2017.03.31.08.15.15 (version=TLS1 cipher=AES128-SHA bits=128/128); Fri, 31 Mar 2017 08:15:15 -0700 (PDT) From: "Ronald S. Bultje" To: ffmpeg-devel@ffmpeg.org Date: Fri, 31 Mar 2017 11:15:14 -0400 Message-Id: <1490973314-58494-1-git-send-email-rsbultje@gmail.com> X-Mailer: git-send-email 2.8.1 Subject: [FFmpeg-devel] [PATCH] ffmpeg: make transcode_init_done atomic. X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: FFmpeg development discussions and patches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: FFmpeg development discussions and patches Cc: "Ronald S. Bultje" MIME-Version: 1.0 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" Should fix tsan warnings in fate-fifo-muxer-h264/wav: WARNING: ThreadSanitizer: data race (pid=26552) Write of size 4 at 0x000001e0d7c0 by main thread: #0 transcode_init src/ffmpeg.c:3761 (ffmpeg+0x00000050ca1c) [..] Previous read of size 4 at 0x000001e0d7c0 by thread T1: #0 decode_interrupt_cb src/ffmpeg.c:460 (ffmpeg+0x0000004fde19) --- ffmpeg.c | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/ffmpeg.c b/ffmpeg.c index 11faf0d..0814cd9 100644 --- a/ffmpeg.c +++ b/ffmpeg.c @@ -30,6 +30,7 @@ #include #include #include +#include #include #if HAVE_IO_H @@ -319,7 +320,7 @@ void term_exit(void) static volatile int received_sigterm = 0; static volatile int received_nb_signals = 0; -static volatile int transcode_init_done = 0; +static atomic_int transcode_init_done; static volatile int ffmpeg_exited = 0; static int main_return_code = 0; @@ -457,7 +458,7 @@ static int read_key(void) static int decode_interrupt_cb(void *ctx) { - return received_nb_signals > transcode_init_done; + return received_nb_signals > atomic_load(&transcode_init_done); } const AVIOInterruptCB int_cb = { decode_interrupt_cb, NULL }; @@ -612,7 +613,7 @@ static void ffmpeg_cleanup(int ret) if (received_sigterm) { av_log(NULL, AV_LOG_INFO, "Exiting normally, received signal %d.\n", (int) received_sigterm); - } else if (ret && transcode_init_done) { + } else if (ret && atomic_load(&transcode_init_done)) { av_log(NULL, AV_LOG_INFO, "Conversion failed!\n"); } term_exit(); @@ -3599,6 +3600,7 @@ static int transcode_init(void) InputStream *ist; char error[1024] = {0}; + atomic_init(&transcode_init_done, 0); for (i = 0; i < nb_filtergraphs; i++) { FilterGraph *fg = filtergraphs[i]; for (j = 0; j < fg->nb_outputs; j++) { @@ -3758,7 +3760,7 @@ static int transcode_init(void) return ret; } - transcode_init_done = 1; + atomic_store(&transcode_init_done, 1); return 0; }