[FFmpeg-devel] [PATCH 1/3] lavc/pthread_frame: protect read state access in setup finish function

Clément Bœsch u at pkh.me
Mon Jan 16 11:44:52 EET 2017


On Fri, Jan 13, 2017 at 07:13:10PM +0100, wm4 wrote:
> On Fri, 13 Jan 2017 12:19:14 -0500
> "Ronald S. Bultje" <rsbultje at gmail.com> wrote:
> 
> > Hi,
> > 
> > On Fri, Jan 13, 2017 at 9:39 AM, wm4 <nfxjfg at googlemail.com> wrote:
> > 
> > > 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.
> > >  
> > 
> > But it's easy to resolve right?
> > 
> > lock();
> > int state = p->state;
> > ..
> > unlock();
> > if (state == ..)
> >   av_log(..);
> 
> I still don't see what the problem is. Why make it more complex than
> necessary?

2017-01-13 21:02:31     @ubitux wm4: BBB: so patch is ok as is, or i need to split the av_log out?
2017-01-13 21:03:47     @BBB    no it’s fine
2017-01-13 21:03:50     @BBB    just keep it
2017-01-13 21:04:02     @BBB    if assumption is that doing what I said is a bug, then no need to adjust to it
2017-01-13 21:08:20     +wm4    ok with me

patch applied

thanks

-- 
Clément B.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 488 bytes
Desc: not available
URL: <http://ffmpeg.org/pipermail/ffmpeg-devel/attachments/20170116/8318cf25/attachment.sig>


More information about the ffmpeg-devel mailing list