From patchwork Fri Mar 31 15:45:44 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: 3226 Delivered-To: ffmpegpatchwork@gmail.com Received: by 10.103.44.195 with SMTP id s186csp2100846vss; Fri, 31 Mar 2017 08:45:59 -0700 (PDT) X-Received: by 10.28.87.6 with SMTP id l6mr3499342wmb.109.1490975159546; Fri, 31 Mar 2017 08:45:59 -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 e193si3979498wma.33.2017.03.31.08.45.59; Fri, 31 Mar 2017 08:45:59 -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 E0369689A66; Fri, 31 Mar 2017 18:45:55 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-qk0-f181.google.com (mail-qk0-f181.google.com [209.85.220.181]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 9BC9E6897EE for ; Fri, 31 Mar 2017 18:45:49 +0300 (EEST) Received: by mail-qk0-f181.google.com with SMTP id p22so70019303qka.3 for ; Fri, 31 Mar 2017 08:45:50 -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:in-reply-to:references; bh=CxBY9Yp5MKxcketK9MdM7Y/jNzErgIsMv5gJxqCcYUs=; b=APMPNKutEg/FHtkOFjKoyp4TXlQZjy709lJzLCR1HfgKdJDoq1LKbciEPuqTSGmfZA ZmB/3dFhxj1DgcfqLuZj6L0P6frLLl1yyshhQIWIdt2H9+WVmyEUmoJ+Kvtiwso3Y2Sd 2JkK442LxkSCGAWVrmHiJ9kTEhuUvJ4EOy/WzZRxBAm06LRrsDbHp6kKK50LapP2GQR7 VIT++AO6q2TWfD/D/iRTStYGmmUCdkqX1t5zBVK1MOYsy3c1yUYqmwfTOJ48iFpjlUIm 1lHQfSPoAsgBaNVDwqND11Cxc4u/ecZMlVgA0M8FRWMDl44fFujXrF8vKwZE08LY/Q4T BVeA== 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:in-reply-to :references; bh=CxBY9Yp5MKxcketK9MdM7Y/jNzErgIsMv5gJxqCcYUs=; b=XH76X+g2AlFolHJPEmC31wjV34vO7JjRf74jEnfyBQGoJ01Xph8/tVI252PEkDz7VE iBaGnwbdamVYPLzFrclpbT1cwaNM5EFTC06fvEAAsdX2T8Haq9ipsWW4bxBUabJJdhWp gmtwh7orZT6MKW1bBT5wr3VH61L31RvFy3RGmGpEn4wyHJRoYpsnsGUzSI8cMdUqlZ27 5k0Hb+JQwaO7hgJhkiXRn3tRVBp5olbo5qpLaDOG+vad/m3MqzqF3P+WUWNsD3bwYtMR zFQgdDeKAIQDrWSoHF5nWcIP+W69rH+icPoGMhkjxF0mpv78oaYCjoVMKaodX5sLUfCH RVqw== X-Gm-Message-State: AFeK/H3Ptu1rcrsBF9uas1Tmbyr3HMK4I4mpDg6eTp8ABaQCZWn8F1mAozZsmmAEDI7e1A== X-Received: by 10.55.79.200 with SMTP id d191mr3519741qkb.172.1490975148918; Fri, 31 Mar 2017 08:45:48 -0700 (PDT) Received: from localhost.localdomain ([65.206.95.146]) by smtp.gmail.com with ESMTPSA id y33sm3767314qta.27.2017.03.31.08.45.48 (version=TLS1 cipher=AES128-SHA bits=128/128); Fri, 31 Mar 2017 08:45:48 -0700 (PDT) From: "Ronald S. Bultje" To: ffmpeg-devel@ffmpeg.org Date: Fri, 31 Mar 2017 11:45:44 -0400 Message-Id: <1490975144-58932-1-git-send-email-rsbultje@gmail.com> X-Mailer: git-send-email 2.8.1 In-Reply-To: <1490973314-58494-1-git-send-email-rsbultje@gmail.com> References: <1490973314-58494-1-git-send-email-rsbultje@gmail.com> 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 | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/ffmpeg.c b/ffmpeg.c index 11faf0d..ea03179 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 = ATOMIC_VAR_INIT(0); 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(); @@ -3758,7 +3759,7 @@ static int transcode_init(void) return ret; } - transcode_init_done = 1; + atomic_store(&transcode_init_done, 1); return 0; }