[FFmpeg-trac] #11456(undetermined:new): ffvp9 race
FFmpeg
trac at avcodec.org
Thu Feb 6 21:28:14 EET 2025
#11456: ffvp9 race
-------------------------------------+-------------------------------------
Reporter: Ronald S. | Type: defect
Bultje |
Status: new | Priority: normal
Component: | Version:
undetermined | unspecified
Keywords: | Blocked By:
Blocking: | Reproduced by developer: 0
Analyzed by developer: 0 |
-------------------------------------+-------------------------------------
From https://bugzilla.mozilla.org/show_bug.cgi?id=1941137
Reproduced on b9c99baced8f2cfe30b85080e19a39e15511e5ca (Feb 2nd, 2025)
Relevant input file: https://searchfox.org/mozilla-
central/source/dom/media/test/gizmo.webm
Regression found on 252fc2e047297697dea78e63aa908377b47c2136, not present
either on 240fd04db231efa4abad3abbd808140b4112324a or on 0957d62f (unclear
from upstream report).
Compile FFmpeg with thread sanitizer:
{{{
$ while true; do ./ffmpeg -threads 4 -i ~/Downloads/gizmo.webm -an -f md5
-v error -nostats -y /tmp/out.log || break; x=`cat /tmp/out.log`; if [ $x
!= "MD5=a08e3e064e3589e5610bc2ccc2a4ab4c" ]; then break; fi; done
ffmpeg(7971,0x1144a1600) malloc: nano zone abandoned due to inability to
preallocate reserved vm space.
[opus @ 0x7b5c00000700] Error parsing Opus packet header.
[these messages repeat a couple of times]
==================
WARNING: ThreadSanitizer: data race (pid=8053)
Read of size 1 at 0x7bb40003cb88 by thread T4 (mutexes: write M257):
#0 <null> <null>:2 (ffmpeg:x86_64+0x10187043f)
#1 ff_vp9_fill_mv <null>:2 (ffmpeg:x86_64+0x10186bcae)
#2 ff_vp9_decode_block <null>:2 (ffmpeg:x86_64+0x1017ac8b9)
#3 <null> <null>:2 (ffmpeg:x86_64+0x1017a21f9)
#4 <null> <null>:2 (ffmpeg:x86_64+0x10178f210)
#5 ff_decode_receive_frame_internal <null>:2
(ffmpeg:x86_64+0x100b75044)
#6 <null> <null>:2 (ffmpeg:x86_64+0x101429909)
Previous write of size 1 at 0x7bb40003cb88 by thread T3 (mutexes: write
M255):
#0 ff_vp9_decode_block <null>:2 (ffmpeg:x86_64+0x1017a8305)
#1 <null> <null>:2 (ffmpeg:x86_64+0x1017a21f9)
#2 <null> <null>:2 (ffmpeg:x86_64+0x10178f210)
#3 ff_decode_receive_frame_internal <null>:2
(ffmpeg:x86_64+0x100b75044)
#4 <null> <null>:2 (ffmpeg:x86_64+0x101429909)
Location is heap block of size 37504 at 0x7bb40003c000 allocated by
thread T1:
#0 posix_memalign <null>:3
(libclang_rt.tsan_osx_dynamic.dylib:x86_64h+0x53603)
#1 av_malloc <null>:2 (ffmpeg:x86_64+0x101e2173a)
#2 av_refstruct_pool_get <null>:2 (ffmpeg:x86_64+0x101e36ce4)
#3 <null> <null>:2 (ffmpeg:x86_64+0x10178b915)
#4 ff_decode_receive_frame_internal <null>:2
(ffmpeg:x86_64+0x100b75044)
#5 <null> <null>:2 (ffmpeg:x86_64+0x101429909)
Mutex M257 (0x7b6800000510) created at:
#0 pthread_mutex_init <null>:3
(libclang_rt.tsan_osx_dynamic.dylib:x86_64h+0x2cd05)
#1 ff_pthread_init <null>:2 (ffmpeg:x86_64+0x101f4e4e1)
#2 <null> <null>:2 (ffmpeg:x86_64+0x101f4e7f4)
#3 ff_frame_thread_init <null>:2 (ffmpeg:x86_64+0x101428d4b)
#4 ff_thread_init <null>:2 (ffmpeg:x86_64+0x101426b55)
#5 avcodec_open2 <null>:2 (ffmpeg:x86_64+0x1009dcca9)
#6 <null> <null>:2 (ffmpeg:x86_64+0x100002e80)
#7 dec_init <null>:2 (ffmpeg:x86_64+0x100002361)
#8 ist_use <null>:2 (ffmpeg:x86_64+0x1000079f9)
#9 ist_filter_add <null>:2 (ffmpeg:x86_64+0x100007b03)
#10 <null> <null>:2 (ffmpeg:x86_64+0x100014da1)
#11 fg_create_simple <null>:2 (ffmpeg:x86_64+0x100014b77)
#12 <null> <null>:2 (ffmpeg:x86_64+0x100029b96)
#13 <null> <null>:2 (ffmpeg:x86_64+0x100025ed8)
#14 of_open <null>:2 (ffmpeg:x86_64+0x1000200be)
#15 ffmpeg_parse_options <null>:2 (ffmpeg:x86_64+0x10002d451)
#16 main <null>:2 (ffmpeg:x86_64+0x1000463a4)
Mutex M255 (0x7b6800000398) created at:
#0 pthread_mutex_init <null>:3
(libclang_rt.tsan_osx_dynamic.dylib:x86_64h+0x2cd05)
#1 ff_pthread_init <null>:2 (ffmpeg:x86_64+0x101f4e4e1)
#2 <null> <null>:2 (ffmpeg:x86_64+0x101f4e7f4)
#3 ff_frame_thread_init <null>:2 (ffmpeg:x86_64+0x101428d4b)
#4 ff_thread_init <null>:2 (ffmpeg:x86_64+0x101426b55)
#5 avcodec_open2 <null>:2 (ffmpeg:x86_64+0x1009dcca9)
#6 <null> <null>:2 (ffmpeg:x86_64+0x100002e80)
#7 dec_init <null>:2 (ffmpeg:x86_64+0x100002361)
#8 ist_use <null>:2 (ffmpeg:x86_64+0x1000079f9)
#9 ist_filter_add <null>:2 (ffmpeg:x86_64+0x100007b03)
#10 <null> <null>:2 (ffmpeg:x86_64+0x100014da1)
#11 fg_create_simple <null>:2 (ffmpeg:x86_64+0x100014b77)
#12 <null> <null>:2 (ffmpeg:x86_64+0x100029b96)
#13 <null> <null>:2 (ffmpeg:x86_64+0x100025ed8)
#14 of_open <null>:2 (ffmpeg:x86_64+0x1000200be)
#15 ffmpeg_parse_options <null>:2 (ffmpeg:x86_64+0x10002d451)
#16 main <null>:2 (ffmpeg:x86_64+0x1000463a4)
Thread T4 (tid=7141103, running) created by main thread at:
#0 pthread_create <null>:3
(libclang_rt.tsan_osx_dynamic.dylib:x86_64h+0x2bb6f)
#1 <null> <null>:2 (ffmpeg:x86_64+0x101f4e9d0)
#2 ff_frame_thread_init <null>:2 (ffmpeg:x86_64+0x101428d4b)
#3 ff_thread_init <null>:2 (ffmpeg:x86_64+0x101426b55)
#4 avcodec_open2 <null>:2 (ffmpeg:x86_64+0x1009dcca9)
#5 <null> <null>:2 (ffmpeg:x86_64+0x100002e80)
#6 dec_init <null>:2 (ffmpeg:x86_64+0x100002361)
#7 ist_use <null>:2 (ffmpeg:x86_64+0x1000079f9)
#8 ist_filter_add <null>:2 (ffmpeg:x86_64+0x100007b03)
#9 <null> <null>:2 (ffmpeg:x86_64+0x100014da1)
#10 fg_create_simple <null>:2 (ffmpeg:x86_64+0x100014b77)
#11 <null> <null>:2 (ffmpeg:x86_64+0x100029b96)
#12 <null> <null>:2 (ffmpeg:x86_64+0x100025ed8)
#13 of_open <null>:2 (ffmpeg:x86_64+0x1000200be)
#14 ffmpeg_parse_options <null>:2 (ffmpeg:x86_64+0x10002d451)
#15 main <null>:2 (ffmpeg:x86_64+0x1000463a4)
Thread T3 (tid=7141102, running) created by main thread at:
#0 pthread_create <null>:3
(libclang_rt.tsan_osx_dynamic.dylib:x86_64h+0x2bb6f)
#1 <null> <null>:2 (ffmpeg:x86_64+0x101f4e9d0)
#2 ff_frame_thread_init <null>:2 (ffmpeg:x86_64+0x101428d4b)
#3 ff_thread_init <null>:2 (ffmpeg:x86_64+0x101426b55)
#4 avcodec_open2 <null>:2 (ffmpeg:x86_64+0x1009dcca9)
#5 <null> <null>:2 (ffmpeg:x86_64+0x100002e80)
#6 dec_init <null>:2 (ffmpeg:x86_64+0x100002361)
#7 ist_use <null>:2 (ffmpeg:x86_64+0x1000079f9)
#8 ist_filter_add <null>:2 (ffmpeg:x86_64+0x100007b03)
#9 <null> <null>:2 (ffmpeg:x86_64+0x100014da1)
#10 fg_create_simple <null>:2 (ffmpeg:x86_64+0x100014b77)
#11 <null> <null>:2 (ffmpeg:x86_64+0x100029b96)
#12 <null> <null>:2 (ffmpeg:x86_64+0x100025ed8)
#13 of_open <null>:2 (ffmpeg:x86_64+0x1000200be)
#14 ffmpeg_parse_options <null>:2 (ffmpeg:x86_64+0x10002d451)
#15 main <null>:2 (ffmpeg:x86_64+0x1000463a4)
Thread T1 (tid=7141100, running) created by main thread at:
#0 pthread_create <null>:3
(libclang_rt.tsan_osx_dynamic.dylib:x86_64h+0x2bb6f)
#1 <null> <null>:2 (ffmpeg:x86_64+0x101f4e9d0)
#2 ff_frame_thread_init <null>:2 (ffmpeg:x86_64+0x101428d4b)
#3 ff_thread_init <null>:2 (ffmpeg:x86_64+0x101426b55)
#4 avcodec_open2 <null>:2 (ffmpeg:x86_64+0x1009dcca9)
#5 <null> <null>:2 (ffmpeg:x86_64+0x100002e80)
#6 dec_init <null>:2 (ffmpeg:x86_64+0x100002361)
#7 ist_use <null>:2 (ffmpeg:x86_64+0x1000079f9)
#8 ist_filter_add <null>:2 (ffmpeg:x86_64+0x100007b03)
#9 <null> <null>:2 (ffmpeg:x86_64+0x100014da1)
#10 fg_create_simple <null>:2 (ffmpeg:x86_64+0x100014b77)
#11 <null> <null>:2 (ffmpeg:x86_64+0x100029b96)
#12 <null> <null>:2 (ffmpeg:x86_64+0x100025ed8)
#13 of_open <null>:2 (ffmpeg:x86_64+0x1000200be)
#14 ffmpeg_parse_options <null>:2 (ffmpeg:x86_64+0x10002d451)
#15 main <null>:2 (ffmpeg:x86_64+0x1000463a4)
SUMMARY: ThreadSanitizer: data race (ffmpeg:x86_64+0x10187043f)
==================
==================
WARNING: ThreadSanitizer: data race (pid=8053)
Read of size 4 at 0x7bb40003cb80 by thread T4 (mutexes: write M257):
#0 <null> <null>:2 (ffmpeg:x86_64+0x1018706d6)
#1 ff_vp9_fill_mv <null>:2 (ffmpeg:x86_64+0x10186bcae)
#2 ff_vp9_decode_block <null>:2 (ffmpeg:x86_64+0x1017ac8b9)
#3 <null> <null>:2 (ffmpeg:x86_64+0x1017a21f9)
#4 <null> <null>:2 (ffmpeg:x86_64+0x10178f210)
#5 ff_decode_receive_frame_internal <null>:2
(ffmpeg:x86_64+0x100b75044)
#6 <null> <null>:2 (ffmpeg:x86_64+0x101429909)
Previous write of size 4 at 0x7bb40003cb80 by thread T3 (mutexes: write
M255):
#0 ff_vp9_decode_block <null>:2 (ffmpeg:x86_64+0x1017a832a)
#1 <null> <null>:2 (ffmpeg:x86_64+0x1017a21f9)
#2 <null> <null>:2 (ffmpeg:x86_64+0x10178f210)
#3 ff_decode_receive_frame_internal <null>:2
(ffmpeg:x86_64+0x100b75044)
#4 <null> <null>:2 (ffmpeg:x86_64+0x101429909)
Location is heap block of size 37504 at 0x7bb40003c000 allocated by
thread T1:
#0 posix_memalign <null>:3
(libclang_rt.tsan_osx_dynamic.dylib:x86_64h+0x53603)
#1 av_malloc <null>:2 (ffmpeg:x86_64+0x101e2173a)
#2 av_refstruct_pool_get <null>:2 (ffmpeg:x86_64+0x101e36ce4)
#3 <null> <null>:2 (ffmpeg:x86_64+0x10178b915)
#4 ff_decode_receive_frame_internal <null>:2
(ffmpeg:x86_64+0x100b75044)
#5 <null> <null>:2 (ffmpeg:x86_64+0x101429909)
Mutex M257 (0x7b6800000510) created at:
#0 pthread_mutex_init <null>:3
(libclang_rt.tsan_osx_dynamic.dylib:x86_64h+0x2cd05)
#1 ff_pthread_init <null>:2 (ffmpeg:x86_64+0x101f4e4e1)
#2 <null> <null>:2 (ffmpeg:x86_64+0x101f4e7f4)
#3 ff_frame_thread_init <null>:2 (ffmpeg:x86_64+0x101428d4b)
#4 ff_thread_init <null>:2 (ffmpeg:x86_64+0x101426b55)
#5 avcodec_open2 <null>:2 (ffmpeg:x86_64+0x1009dcca9)
#6 <null> <null>:2 (ffmpeg:x86_64+0x100002e80)
#7 dec_init <null>:2 (ffmpeg:x86_64+0x100002361)
#8 ist_use <null>:2 (ffmpeg:x86_64+0x1000079f9)
#9 ist_filter_add <null>:2 (ffmpeg:x86_64+0x100007b03)
#10 <null> <null>:2 (ffmpeg:x86_64+0x100014da1)
#11 fg_create_simple <null>:2 (ffmpeg:x86_64+0x100014b77)
#12 <null> <null>:2 (ffmpeg:x86_64+0x100029b96)
#13 <null> <null>:2 (ffmpeg:x86_64+0x100025ed8)
#14 of_open <null>:2 (ffmpeg:x86_64+0x1000200be)
#15 ffmpeg_parse_options <null>:2 (ffmpeg:x86_64+0x10002d451)
#16 main <null>:2 (ffmpeg:x86_64+0x1000463a4)
Mutex M255 (0x7b6800000398) created at:
#0 pthread_mutex_init <null>:3
(libclang_rt.tsan_osx_dynamic.dylib:x86_64h+0x2cd05)
#1 ff_pthread_init <null>:2 (ffmpeg:x86_64+0x101f4e4e1)
#2 <null> <null>:2 (ffmpeg:x86_64+0x101f4e7f4)
#3 ff_frame_thread_init <null>:2 (ffmpeg:x86_64+0x101428d4b)
#4 ff_thread_init <null>:2 (ffmpeg:x86_64+0x101426b55)
#5 avcodec_open2 <null>:2 (ffmpeg:x86_64+0x1009dcca9)
#6 <null> <null>:2 (ffmpeg:x86_64+0x100002e80)
#7 dec_init <null>:2 (ffmpeg:x86_64+0x100002361)
#8 ist_use <null>:2 (ffmpeg:x86_64+0x1000079f9)
#9 ist_filter_add <null>:2 (ffmpeg:x86_64+0x100007b03)
#10 <null> <null>:2 (ffmpeg:x86_64+0x100014da1)
#11 fg_create_simple <null>:2 (ffmpeg:x86_64+0x100014b77)
#12 <null> <null>:2 (ffmpeg:x86_64+0x100029b96)
#13 <null> <null>:2 (ffmpeg:x86_64+0x100025ed8)
#14 of_open <null>:2 (ffmpeg:x86_64+0x1000200be)
#15 ffmpeg_parse_options <null>:2 (ffmpeg:x86_64+0x10002d451)
#16 main <null>:2 (ffmpeg:x86_64+0x1000463a4)
Thread T4 (tid=7141103, running) created by main thread at:
#0 pthread_create <null>:3
(libclang_rt.tsan_osx_dynamic.dylib:x86_64h+0x2bb6f)
#1 <null> <null>:2 (ffmpeg:x86_64+0x101f4e9d0)
#2 ff_frame_thread_init <null>:2 (ffmpeg:x86_64+0x101428d4b)
#3 ff_thread_init <null>:2 (ffmpeg:x86_64+0x101426b55)
#4 avcodec_open2 <null>:2 (ffmpeg:x86_64+0x1009dcca9)
#5 <null> <null>:2 (ffmpeg:x86_64+0x100002e80)
#6 dec_init <null>:2 (ffmpeg:x86_64+0x100002361)
#7 ist_use <null>:2 (ffmpeg:x86_64+0x1000079f9)
#8 ist_filter_add <null>:2 (ffmpeg:x86_64+0x100007b03)
#9 <null> <null>:2 (ffmpeg:x86_64+0x100014da1)
#10 fg_create_simple <null>:2 (ffmpeg:x86_64+0x100014b77)
#11 <null> <null>:2 (ffmpeg:x86_64+0x100029b96)
#12 <null> <null>:2 (ffmpeg:x86_64+0x100025ed8)
#13 of_open <null>:2 (ffmpeg:x86_64+0x1000200be)
#14 ffmpeg_parse_options <null>:2 (ffmpeg:x86_64+0x10002d451)
#15 main <null>:2 (ffmpeg:x86_64+0x1000463a4)
Thread T3 (tid=7141102, running) created by main thread at:
#0 pthread_create <null>:3
(libclang_rt.tsan_osx_dynamic.dylib:x86_64h+0x2bb6f)
#1 <null> <null>:2 (ffmpeg:x86_64+0x101f4e9d0)
#2 ff_frame_thread_init <null>:2 (ffmpeg:x86_64+0x101428d4b)
#3 ff_thread_init <null>:2 (ffmpeg:x86_64+0x101426b55)
#4 avcodec_open2 <null>:2 (ffmpeg:x86_64+0x1009dcca9)
#5 <null> <null>:2 (ffmpeg:x86_64+0x100002e80)
#6 dec_init <null>:2 (ffmpeg:x86_64+0x100002361)
#7 ist_use <null>:2 (ffmpeg:x86_64+0x1000079f9)
#8 ist_filter_add <null>:2 (ffmpeg:x86_64+0x100007b03)
#9 <null> <null>:2 (ffmpeg:x86_64+0x100014da1)
#10 fg_create_simple <null>:2 (ffmpeg:x86_64+0x100014b77)
#11 <null> <null>:2 (ffmpeg:x86_64+0x100029b96)
#12 <null> <null>:2 (ffmpeg:x86_64+0x100025ed8)
#13 of_open <null>:2 (ffmpeg:x86_64+0x1000200be)
#14 ffmpeg_parse_options <null>:2 (ffmpeg:x86_64+0x10002d451)
#15 main <null>:2 (ffmpeg:x86_64+0x1000463a4)
Thread T1 (tid=7141100, running) created by main thread at:
#0 pthread_create <null>:3
(libclang_rt.tsan_osx_dynamic.dylib:x86_64h+0x2bb6f)
#1 <null> <null>:2 (ffmpeg:x86_64+0x101f4e9d0)
#2 ff_frame_thread_init <null>:2 (ffmpeg:x86_64+0x101428d4b)
#3 ff_thread_init <null>:2 (ffmpeg:x86_64+0x101426b55)
#4 avcodec_open2 <null>:2 (ffmpeg:x86_64+0x1009dcca9)
#5 <null> <null>:2 (ffmpeg:x86_64+0x100002e80)
#6 dec_init <null>:2 (ffmpeg:x86_64+0x100002361)
#7 ist_use <null>:2 (ffmpeg:x86_64+0x1000079f9)
#8 ist_filter_add <null>:2 (ffmpeg:x86_64+0x100007b03)
#9 <null> <null>:2 (ffmpeg:x86_64+0x100014da1)
#10 fg_create_simple <null>:2 (ffmpeg:x86_64+0x100014b77)
#11 <null> <null>:2 (ffmpeg:x86_64+0x100029b96)
#12 <null> <null>:2 (ffmpeg:x86_64+0x100025ed8)
#13 of_open <null>:2 (ffmpeg:x86_64+0x1000200be)
#14 ffmpeg_parse_options <null>:2 (ffmpeg:x86_64+0x10002d451)
#15 main <null>:2 (ffmpeg:x86_64+0x1000463a4)
SUMMARY: ThreadSanitizer: data race (ffmpeg:x86_64+0x1018706d6)
==================
[opus @ 0x7b5c00000700] Error parsing Opus packet header.
ThreadSanitizer: reported 2 warnings
Abort trap: 6
}}}
--
Ticket URL: <https://trac.ffmpeg.org/ticket/11456>
FFmpeg <https://ffmpeg.org>
FFmpeg issue tracker
More information about the FFmpeg-trac
mailing list