[FFmpeg-devel] [PATCH 1/3] lavc/pthread_frame: protect read state access in setup finish function
wm4
nfxjfg at googlemail.com
Fri Jan 13 16:39:13 EET 2017
On Fri, 13 Jan 2017 09:07:48 -0500
"Ronald S. Bultje" <rsbultje at gmail.com> wrote:
> Hi,
>
> On Jan 13, 2017 6:40 AM, "Clément Bœsch" <u at pkh.me> wrote:
>
> From: Clément Bœsch <cboesch at gopro.com>
>
> ---
> libavcodec/pthread_frame.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/libavcodec/pthread_frame.c b/libavcodec/pthread_frame.c
> index 7ef5e9f6be..cb6d76284e 100644
> --- a/libavcodec/pthread_frame.c
> +++ b/libavcodec/pthread_frame.c
> @@ -509,11 +509,11 @@ void ff_thread_finish_setup(AVCodecContext *avctx) {
>
> if (!(avctx->active_thread_type&FF_THREAD_FRAME)) return;
>
> + pthread_mutex_lock(&p->progress_mutex);
> if(p->state == STATE_SETUP_FINISHED){
> av_log(avctx, AV_LOG_WARNING, "Multiple ff_thread_finish_setup()
> calls\n");
> }
>
> - pthread_mutex_lock(&p->progress_mutex);
>
>
> This has a problem in that we're potentially calling an I/O function that
> potentially directly enters application space with a lock held.
I think the user should be taking care of this (or just don't spam
av_log in a performance critical function). The log call here seems
more like an internal warning though, and I've never seen it happening.
> Can the av_log call be moved under a local variable for the condition to
> after the lock is released?
More information about the ffmpeg-devel
mailing list