From patchwork Wed Mar 29 00:11:52 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: 3160 Delivered-To: ffmpegpatchwork@gmail.com Received: by 10.103.44.195 with SMTP id s186csp860183vss; Tue, 28 Mar 2017 17:12:05 -0700 (PDT) X-Received: by 10.28.129.212 with SMTP id c203mr16228259wmd.19.1490746325896; Tue, 28 Mar 2017 17:12:05 -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 y12si6382339wrc.12.2017.03.28.17.12.05; Tue, 28 Mar 2017 17:12:05 -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 3E742689980; Wed, 29 Mar 2017 03:11:40 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-qk0-f194.google.com (mail-qk0-f194.google.com [209.85.220.194]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 4AE2B688307 for ; Wed, 29 Mar 2017 03:11:33 +0300 (EEST) Received: by mail-qk0-f194.google.com with SMTP id f11so68127qkb.2 for ; Tue, 28 Mar 2017 17:11:55 -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=kPmo//hRqaE4AxVbJWmNNO7F1mGhIAOIRPPwO+yUJyQ=; b=cOpgBt5eFy+KXW5Ct6fiuJ+/SqCpbVgINrMJAcGS0sWYMi9PDE2eyPn7g0oJd2t9Pm nJJJUV3qE6wytGjdpPKgfPn42zSu+fV5L8dMF7Q0hMj4fo7pRycqKyd88JjCDGFHgoWo v/3gkvoOKsZ3AoxakgFz6dV5FMAFdFNc8SdIggn2hms3xoQkzsbdSmRKCkBEvy/HQQO+ XHh/XKX9IQJP7p4bA16LCmIiHhR+6+b4N590O5Zdbf9C+N7gJ3oiqItK+Vkh+sbwUzPG g26c+ecrbNr5KbaWNsBS6vXfylGKScbTGerj6XJaPCka8j07uSoiJGkmigOdlsp5UuKH vxjQ== 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=kPmo//hRqaE4AxVbJWmNNO7F1mGhIAOIRPPwO+yUJyQ=; b=Sm8MD9dTzfa0si+Si11YnCtmsW/PF5RvCgNe7FVvsCYx5aBQIAxwjsAeVwY8IdQTYP HqjRgi4/6sht8aAiXFCC1R77RjWK6fH9dP0vxkmIIYr5EEhWNouKtfxlDqUeexLu4RN9 f5anDnoBP97tCIVa+6mjCdtUW9/VVTL/O1cQk91Kz34snlYkad0aX04OZhe+0NffiLZE ez6AVAlmQvSix2JlWLa/vvFpCqiD4rKPZRfd0kRSCZ+NSBX632p5qg6gzpAXwCY2mN8w 6dfzWksGH/IJDJC7jUVQxgQi0LMbcfh6A6KQQcYwiBITZG+ciqJ0CZTDDu00v7B7dV/R BHMA== X-Gm-Message-State: AFeK/H22dw2pLNJmQqPyCdw/tkb3AytkstJBTQYgqZ75khFhCiEn+ktTkuh8nQrJnGKvzQ== X-Received: by 10.55.137.7 with SMTP id l7mr29081793qkd.11.1490746314536; Tue, 28 Mar 2017 17:11:54 -0700 (PDT) Received: from Macintosh-7.home (pool-96-246-175-85.nycmny.fios.verizon.net. [96.246.175.85]) by smtp.gmail.com with ESMTPSA id x9sm3796323qkb.29.2017.03.28.17.11.53 (version=TLS1 cipher=AES128-SHA bits=128/128); Tue, 28 Mar 2017 17:11:53 -0700 (PDT) From: "Ronald S. Bultje" To: ffmpeg-devel@ffmpeg.org Date: Tue, 28 Mar 2017 20:11:52 -0400 Message-Id: <1490746312-62158-1-git-send-email-rsbultje@gmail.com> X-Mailer: git-send-email 2.8.1 Subject: [FFmpeg-devel] [PATCH] lagarith: assign correct per-thread value to LagarithContext::avctx. 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" This fixes race conditions reported by tsan in fate-lagarith. The races were because each thread's LagarithContext::avctx was set to the first thread's AVCodecContext. --- libavcodec/lagarith.c | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/libavcodec/lagarith.c b/libavcodec/lagarith.c index f03305f..469eec4 100644 --- a/libavcodec/lagarith.c +++ b/libavcodec/lagarith.c @@ -730,6 +730,16 @@ static av_cold int lag_decode_init(AVCodecContext *avctx) return 0; } +#if HAVE_THREADS +static av_cold int lag_decode_init_thread_copy(AVCodecContext *avctx) +{ + LagarithContext *l = avctx->priv_data; + l->avctx = avctx; + + return 0; +} +#endif + static av_cold int lag_decode_end(AVCodecContext *avctx) { LagarithContext *l = avctx->priv_data; @@ -746,6 +756,7 @@ AVCodec ff_lagarith_decoder = { .id = AV_CODEC_ID_LAGARITH, .priv_data_size = sizeof(LagarithContext), .init = lag_decode_init, + .init_thread_copy = ONLY_IF_THREADS_ENABLED(lag_decode_init_thread_copy), .close = lag_decode_end, .decode = lag_decode_frame, .capabilities = AV_CODEC_CAP_DR1 | AV_CODEC_CAP_FRAME_THREADS,