mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2024-12-07 11:13:41 +02:00
2170017a1c
Make the one-time initialization in av_get_cpu_flags() thread-safe. The static variables |flags|, |cpuflags_mask|, and |checked| in libavutil/cpu.c are read and written using normal load and store operations. These are considered as data races. The fix is to use atomic load and store operations. Remove the |checked| variable because the invalid value of -1 for |flags| can be used to indicate the same condition. Rename |flags| to |cpu_flags| and move it to file scope. The fix can be verified by running the libavutil/tests/cpu_init.c test program under ThreadSanitizer: ./configure --toolchain=clang-tsan make libavutil/tests/cpu_init libavutil/tests/cpu_init There should be no warnings from ThreadSanitizer. Co-author: Dmitry Vyukov of Google, who suggested the data race fix. Signed-off-by: Wan-Teh Chang <wtc@google.com>
23 lines
153 B
Plaintext
23 lines
153 B
Plaintext
/adler32
|
|
/aes
|
|
/atomic
|
|
/avstring
|
|
/base64
|
|
/blowfish
|
|
/cpu
|
|
/cpu_init
|
|
/crc
|
|
/des
|
|
/eval
|
|
/fifo
|
|
/float_dsp
|
|
/hmac
|
|
/lfg
|
|
/lls
|
|
/md5
|
|
/opt
|
|
/parseutils
|
|
/sha
|
|
/tree
|
|
/xtea
|