[FFmpeg-devel] [PATCH] avcodec/pthread_slice: Don't use static variable, fix race

Anton Khirnov anton at khirnov.net
Wed Dec 2 13:40:23 EET 2020


Quoting Andreas Rheinhardt (2020-11-29 00:28:51)
> ff_slice_thread_init() uses a static variable to hold a function
> pointer, although the value of said pointer needn't be saved between
> different runs of this function at all;
> 
> The reason for this being so is probably that said pointer points to
> a static function (if used); but storage class specifiers like "static"
> are not part of the type of an object and so including it in the pointer
> declaration is wrong (anyway, "static" means different things in both
> contexts: for the function declaration it affects linkage, for the
> variable storage duration).
> 
> Using a static variable here can lead to races, e.g. when initializing
> VP9 (for which said function pointer was added) and H.264 with slice
> threading. The latter has the FF_CODEC_CAP_INIT_THREADSAFE flag set and
> is therefore unaffected by the lock guarding initializations of
> decoders.
> 
> Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt at gmail.com>
> ---

Looks very good.

-- 
Anton Khirnov


More information about the ffmpeg-devel mailing list