[FFmpeg-cvslog] avutil/utils: Remove racy check from avutil_version()

Andreas Rheinhardt git at videolan.org
Wed Jan 12 02:50:50 EET 2022

ffmpeg | branch: release/4.4 | Andreas Rheinhardt <andreas.rheinhardt at outlook.com> | Sun Sep 26 10:56:49 2021 +0200| [ecd4490dd06cccb15bc1a547d15bdbfbd853929c] | committer: Andreas Rheinhardt

avutil/utils: Remove racy check from avutil_version()

avutil_version() currently performs several checks before
just returning the version. There is a static int that aims
to ensure that these tests are run only once. The reason is that
there used to be a slightly expensive check, but it has been removed
in 92e3a6fdac73f7e1d69d69717219a7538877d7a0. Today running only
once is unnecessary and can be counterproductive: GCC 10 optimizes
all the actual checks away, but the checks_done variable and the code
setting it has been kept. Given that this check is inherently racy
(it uses non-atomic variables), it is best to just remove it.

Reviewed-by: Paul B Mahol <onemda at gmail.com>
Reviewed-by: James Almer <jamrial at gmail.com>
Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt at outlook.com>
(cherry picked from commit ff800903747325f15056444c11053279e391d60b)

> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=ecd4490dd06cccb15bc1a547d15bdbfbd853929c

 libavutil/utils.c | 5 -----
 1 file changed, 5 deletions(-)

diff --git a/libavutil/utils.c b/libavutil/utils.c
index c1cd452eee..ea9b5097b8 100644
--- a/libavutil/utils.c
+++ b/libavutil/utils.c
@@ -37,10 +37,6 @@ const char *av_version_info(void)
 unsigned avutil_version(void)
-    static int checks_done;
-    if (checks_done)
-        return LIBAVUTIL_VERSION_INT;
     av_assert0(AV_SAMPLE_FMT_DBLP == 9);
     av_assert0(AVMEDIA_TYPE_ATTACHMENT == 4);
     av_assert0(AV_PICTURE_TYPE_BI == 7);
@@ -58,7 +54,6 @@ unsigned avutil_version(void)
         av_log(NULL, AV_LOG_ERROR, "Libavutil has been linked to a broken llrint()\n");
-    checks_done = 1;

More information about the ffmpeg-cvslog mailing list