#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
_______________________________________________ FFmpeg-trac mailing list FFmpeg-trac@avcodec.org https://ffmpeg.org/mailman/listinfo/ffmpeg-trac To unsubscribe, visit link above, or email ffmpeg-trac-requ...@ffmpeg.org with subject "unsubscribe".