From patchwork Mon Apr 30 15:40:19 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Kevin Wheatley X-Patchwork-Id: 8699 Delivered-To: ffmpegpatchwork@gmail.com Received: by 2002:a02:155:0:0:0:0:0 with SMTP id c82-v6csp3628824jad; Mon, 30 Apr 2018 08:47:43 -0700 (PDT) X-Google-Smtp-Source: AB8JxZpQavlboViFbE9Koz5FjsH3L0FHkA7efS3dfjvZgFGe7Lwj5Vvuxye0fBpcvbF+hF1hIWMV X-Received: by 10.28.148.129 with SMTP id w123mr7574544wmd.116.1525103262935; Mon, 30 Apr 2018 08:47:42 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1525103262; cv=none; d=google.com; s=arc-20160816; b=t6V2rGwybBVyAnGFJM1lLc6zQNDyyW2SNn2meyOK3LYyOhn3iYbt+jWigrJOz5wu3f B87LfMMcLpx5r7OuZEVXxK2bp2DxHcVcH2zWKGoDTDE1+SjSHxrnJHk9xBuQHKANH6dD 5RAtfvFGSksA8PponyxomL8Tlv79r5mLSBzrWz3sIIr5MJo2C71ELarqFSCf2DkpGHbn c5/99IjisJvTv9498/DnGWqs7TEIwjulFJWDHvcQsUUOXaV8W3WI60zJ4dy887rNs9Qk mmjra3WfBtBoOdqt7YIPJYGAnArmtgbYUpLpIneBPxPO+jer8ovoZ0qbDAfecjJbvJ9O gUEA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:reply-to:list-subscribe:list-help:list-post :list-archive:list-unsubscribe:list-id:precedence:subject:to :message-id:date:from:mime-version:dkim-signature:delivered-to :arc-authentication-results; bh=tyMuj+O5r03F0LQu7ibqEejczg6njXtkEXq6dK0Qmck=; b=jKTebkIKZjZH5HPMDxjdC7q4mFNlWFJVMQeldqIaOtvyGgRRYgYai28f7ySFs8pD6v U3wm1MN7Mgl8YfFgXtufNppnohfKyZhLgMM0fPQW0qOoSRdwCDPyUqdfFoCBWLxyAW1y W+4cwIfps91o26xkt3fXFJ59eTF6rEFy6Wh8TQ2B240i9togaMTXuIv7Ruf8VQXMniAC QVLuDbT37o/DTaFHKRVwHllbianC7SsFG5S/rr/pwEFTP20W7X0U40Zb6tltIzFiW9+w uCCbjyUXGxwkUZCUEQQHmUrAH9k9LNKS2vKq3AjyaTLUm6IjcuvCPltXYqt8tIv2Eyn6 L4Xg== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20161025 header.b=mBhKx4/O; 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=QUARANTINE dis=NONE) header.from=gmail.com Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id b65si2240650wmi.158.2018.04.30.08.47.42; Mon, 30 Apr 2018 08:47:42 -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 header.s=20161025 header.b=mBhKx4/O; 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=QUARANTINE 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 B277368A2FA; Mon, 30 Apr 2018 18:47:08 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-ot0-f182.google.com (mail-ot0-f182.google.com [74.125.82.182]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 93F6C68A148 for ; Mon, 30 Apr 2018 18:47:02 +0300 (EEST) Received: by mail-ot0-f182.google.com with SMTP id i5-v6so9983933oth.1 for ; Mon, 30 Apr 2018 08:47:34 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:from:date:message-id:subject:to; bh=ykPkCk2y1WT+omLbHz+UsjX2yhY3SLXzqthg9m/ZJF0=; b=mBhKx4/O+3W3CITxwLs9lCytlrOPhBri2i8bgUNHapD9Afh/Tzu+u5xxenotVoZJEQ J7M7TKfFIBWXjLWnLd4TKxAiaBGgC7GDTqJ5uO8Hhf4jiVt44H63e/i5Bui8X1zsFzkC 46+F95qBUKW5Jy57Ugpl5J/7dXksDCo5I+QOIFN6AK8Dehl7uvlp4Tzbcau8yPxp4wLF Fu5IXOr5eJaRqh7wouW0qeaDZqMftpQi7zrSFFBtIACqZLnIsysSdyHOaWU6dNq3UhDB Y9qAlK+gh7WMYC0hhQxEYXNwGa6Td+xqprlG+HYb37TCDuhxZWgvM8BlhtWAPeZdBz3x FGLw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:from:date:message-id:subject:to; bh=ykPkCk2y1WT+omLbHz+UsjX2yhY3SLXzqthg9m/ZJF0=; b=G/g9yBNyDtJsXcxBBlG+2WPjA59GOdRZnSFpJsQSzEuv/CvXYR0wlfnkzRAGuDpLQS PNBXj4JIc8jr52YIpsXg/srp+VgeVRdTRlx0FtZNabbVZuYoLuEb4HpJ+JSHE/SNU1Zd RcrWNZYS9WEn2I2fR8xBJxRrvr8rQdjv4Us9vSgz2PwBqPF/fyJnOoLxtet45IGfVq1F SGB+HCWrFcS5O+od2bfmQURyOkd7xIu9Cgd+F+gTDARfQh+4qFmM96CLYNA6sD6/Nykc 4ckyFm/NceVyfl7CdsgN42b6irDJvcphNCRacSjRY47Vw6UZ9kAzZz6FFF3M2+2IFEhk l/DA== X-Gm-Message-State: ALQs6tA7ED588a70WQRNuwsn+7DNqMEj2XKroFAmTULy71FG1QaRBDkc rC/lru4h1oivEgUSS8D4xgNtmVP77hhOyHwIaV4GQA== X-Received: by 2002:a9d:1d92:: with SMTP id y18-v6mr7381268otd.304.1525102819764; Mon, 30 Apr 2018 08:40:19 -0700 (PDT) MIME-Version: 1.0 Received: by 10.74.153.234 with HTTP; Mon, 30 Apr 2018 08:40:19 -0700 (PDT) From: Kevin Wheatley Date: Mon, 30 Apr 2018 16:40:19 +0100 Message-ID: To: FFmpeg development discussions and patches Subject: [FFmpeg-devel] [PATCH] libavfilter/vf_libvmaf.c The libvmaf filter tried to join on an invalid thread id 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 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" Following on from my report in the user list here is a better than a quick hack suggestion to avoid trying to join on an invalid thread id. This may not be the best solution, but it does avoid the SEGV on linux when calling pthread_join() Kevin From a94d0cb7ff4202487ea980a029fa613c58d6d7c3 Mon Sep 17 00:00:00 2001 From: Kevin Wheatley Date: Mon, 30 Apr 2018 16:33:51 +0100 Subject: [PATCH] The libvmaf filter tried to join on an invalid thread id The thread id was invalid because it was not initialised during the calls to init_complex_filtergraph. This adds a flag to check for initialisation before trying to peform the join. Signed-off-by: Kevin Wheatley --- libavfilter/vf_libvmaf.c | 9 ++++++++- 1 files changed, 8 insertions(+), 1 deletions(-) diff --git a/libavfilter/vf_libvmaf.c b/libavfilter/vf_libvmaf.c index 42c6b66..5d47a74 100644 --- a/libavfilter/vf_libvmaf.c +++ b/libavfilter/vf_libvmaf.c @@ -43,6 +43,7 @@ typedef struct LIBVMAFContext { int width; int height; double vmaf_score; + int vmaf_thread_created; pthread_t vmaf_thread; pthread_mutex_t lock; pthread_cond_t cond; @@ -228,6 +229,7 @@ static av_cold int init(AVFilterContext *ctx) s->gmain = av_frame_alloc(); s->error = 0; + s->vmaf_thread_created = 0; pthread_mutex_init(&s->lock, NULL); pthread_cond_init (&s->cond, NULL); @@ -275,6 +277,7 @@ static int config_input_ref(AVFilterLink *inlink) av_log(ctx, AV_LOG_ERROR, "Thread creation failed.\n"); return AVERROR(EINVAL); } + s->vmaf_thread_created = 1; return 0; } @@ -317,7 +320,11 @@ static av_cold void uninit(AVFilterContext *ctx) pthread_cond_signal(&s->cond); pthread_mutex_unlock(&s->lock); - pthread_join(s->vmaf_thread, NULL); + if (s->vmaf_thread_created) + { + pthread_join(s->vmaf_thread, NULL); + s->vmaf_thread_created = 0; + } av_frame_free(&s->gref); av_frame_free(&s->gmain); -- 1.7.1