1
0
mirror of https://git.ffmpeg.org/ffmpeg.git synced 2026-10-24 02:09:03 +03:00
Files
Vincent Herbst 3a110e4168 avfilter/vf_yadif_videotoolbox: fix over-release of autoreleased Metal objects
call_kernel() obtains the command buffer and compute encoder from
property getters (mtlQueue.commandBuffer, buffer.computeCommandEncoder),
which return autoreleased references under the non-ARC build, and then
releases them via ff_objc_release(). That is an over-release: when the
enclosing autorelease pool is drained, the objects are released a second
time and the process crashes with EXC_BAD_ACCESS in objc_release.

On current macOS this is reproducible with the ffmpeg CLI itself. The
filter thread's thread-local autorelease pool is popped during pthread
TSD cleanup at thread exit, so any run that used yadif_videotoolbox
crashes when the filter thread terminates:

  ffmpeg -init_hw_device videotoolbox=vt -filter_hw_device vt \
    -f lavfi -i testsrc2=size=640x480:rate=30 \
    -vf setfield=tff,format=nv12,hwupload,yadif_videotoolbox,\
  hwdownload,format=nv12 -frames:v 20 -f null -

  Thread 11 Crashed:: vf#0:0
  0 libobjc.A.dylib  objc_release + 16
  1 libobjc.A.dylib  AutoreleasePoolPage::releaseUntil(objc_object**) + 204
  2 libobjc.A.dylib  objc_autoreleasePoolPop + 244
  3 libobjc.A.dylib  objc_tls_direct_base<...>::dtor_(void*) + 156
  4 libsystem_pthread.dylib  _pthread_tsd_cleanup + 620
  5 libsystem_pthread.dylib  _pthread_exit + 84

Host applications hit the same crash earlier, for example when a
dispatch queue drains its last-resort pool after a work item that ran
the filter.

Wrap the kernel invocation in @autoreleasepool and drop the manual
releases, making the pool pop the single balanced release and draining
the Metal transients once per frame. The ff_objc_release() calls on the
s->mtl* members in do_uninit() stay: those hold owned references
obtained from new* methods.

(cherry picked from commit 7f2e5cdd7c)
2026-10-20 02:00:56 +00:00
..
2025-12-07 15:54:59 +00:00
2025-12-07 15:54:59 +00:00
2023-11-18 19:55:42 +01:00
2024-09-02 11:55:20 +02:00
2024-09-02 11:55:22 +02:00
2024-08-19 21:48:04 +02:00
2024-08-19 21:48:04 +02:00
2024-08-19 21:48:04 +02:00
2024-08-19 21:48:04 +02:00
2024-08-19 21:48:04 +02:00
2024-08-19 21:48:04 +02:00
2024-08-19 21:48:04 +02:00
2024-08-19 21:48:04 +02:00
2023-11-16 20:53:18 +02:00
2024-08-19 21:48:04 +02:00
2024-08-19 21:48:04 +02:00
2024-08-19 21:48:04 +02:00
2024-08-19 21:48:04 +02:00
2024-08-19 21:48:04 +02:00
2024-08-19 21:48:04 +02:00
2024-08-19 21:48:04 +02:00
2024-08-19 21:48:04 +02:00
2024-08-19 21:48:04 +02:00
2024-08-19 21:48:04 +02:00
2024-08-19 21:48:04 +02:00
2024-08-19 21:48:04 +02:00
2024-08-19 21:48:04 +02:00
2024-08-19 21:48:04 +02:00
2024-08-19 21:48:04 +02:00
2024-08-19 21:48:04 +02:00
2024-08-19 21:48:04 +02:00
2024-08-19 21:48:04 +02:00
2024-08-19 21:48:04 +02:00
2024-08-19 21:48:04 +02:00
2024-08-19 21:48:04 +02:00
2024-08-19 21:48:04 +02:00
2024-08-19 21:48:04 +02:00
2024-08-19 21:48:04 +02:00
2024-08-19 21:48:04 +02:00
2024-08-19 21:48:04 +02:00
2024-08-19 21:48:04 +02:00
2024-08-19 21:48:04 +02:00
2024-08-19 21:48:04 +02:00
2024-08-19 21:48:04 +02:00
2024-08-19 21:48:04 +02:00
2024-08-19 21:48:04 +02:00
2024-08-19 21:48:04 +02:00
2024-08-19 21:48:04 +02:00
2024-08-19 21:48:04 +02:00
2024-08-19 21:48:04 +02:00
2024-08-19 21:48:04 +02:00
2024-08-19 21:48:04 +02:00
2024-08-19 21:48:04 +02:00
2024-08-19 21:48:04 +02:00
2024-08-19 21:48:04 +02:00
2024-08-19 21:48:04 +02:00
2024-08-19 21:48:04 +02:00
2024-08-19 21:48:04 +02:00
2024-08-19 21:48:04 +02:00
2024-08-19 21:48:04 +02:00
2024-08-19 21:48:04 +02:00
2024-09-02 11:55:20 +02:00
…
…
2024-08-19 21:48:04 +02:00
…
2024-08-19 21:48:04 +02:00
…
2024-08-19 21:48:04 +02:00
2024-08-19 21:48:04 +02:00
2024-08-19 21:48:04 +02:00
2024-08-19 21:48:04 +02:00
2024-08-19 21:48:04 +02:00
2024-08-19 21:48:04 +02:00
2024-08-19 21:48:04 +02:00
2024-08-19 21:48:04 +02:00
2024-08-19 21:48:04 +02:00
2024-08-19 21:48:04 +02:00
2024-08-19 21:48:04 +02:00
2024-08-19 21:48:04 +02:00
2024-08-19 21:48:04 +02:00
2024-08-19 21:48:04 +02:00
2022-07-30 11:42:06 +02:00
2022-07-30 11:42:06 +02:00
2024-09-02 11:55:20 +02:00
2024-09-02 11:55:20 +02:00
…
2024-08-19 21:48:04 +02:00
2024-08-19 21:48:04 +02:00
…
…
2024-08-19 21:48:04 +02:00
…
…
2025-12-07 15:54:59 +00:00
2024-07-01 22:31:02 +02:00
2024-08-19 21:48:04 +02:00
…
2025-12-07 15:54:59 +00:00
2024-08-19 21:48:04 +02:00
2024-08-19 21:48:04 +02:00
2025-12-07 15:54:59 +00:00
2024-08-19 21:48:04 +02:00
2024-08-19 21:48:04 +02:00
2024-08-19 21:48:04 +02:00
2024-08-19 21:48:04 +02:00
2024-08-19 21:48:04 +02:00
2024-08-19 21:48:04 +02:00
…
2025-12-07 15:54:59 +00:00
2024-08-19 21:48:04 +02:00
2024-02-16 21:34:38 +01:00
2024-08-19 21:48:04 +02:00
2024-08-19 21:48:04 +02:00
2024-08-19 21:48:04 +02:00
2024-08-19 21:48:04 +02:00
2024-08-19 21:48:04 +02:00
2024-08-19 21:48:04 +02:00
2024-08-19 21:48:04 +02:00
2024-08-19 21:48:04 +02:00
2024-08-19 21:48:04 +02:00
2024-08-19 21:48:04 +02:00
2024-08-19 21:48:04 +02:00
2024-08-19 21:48:04 +02:00
2024-08-19 21:48:04 +02:00
2024-08-19 21:48:04 +02:00
2024-08-19 21:48:04 +02:00
2024-08-19 21:48:04 +02:00
2024-08-19 21:48:04 +02:00
2024-08-19 21:48:04 +02:00
2024-08-19 21:48:04 +02:00
2024-08-19 21:48:04 +02:00
2024-08-19 21:48:04 +02:00
2024-08-19 21:48:04 +02:00
2024-08-19 21:48:04 +02:00
2024-08-19 21:48:04 +02:00
2024-08-19 21:48:04 +02:00
2024-08-19 21:48:04 +02:00
2024-08-19 21:48:04 +02:00
2024-08-19 21:48:04 +02:00
2024-08-19 21:48:04 +02:00
2024-08-19 21:48:04 +02:00
2024-08-19 21:48:04 +02:00
2024-08-19 21:48:04 +02:00
2024-08-19 21:48:04 +02:00
2024-08-19 21:48:04 +02:00
2024-08-19 21:48:04 +02:00
2024-08-19 21:48:04 +02:00
2024-08-19 21:48:04 +02:00
2024-08-19 21:48:04 +02:00
2024-08-19 21:48:04 +02:00
2024-08-19 21:48:04 +02:00
2024-08-19 21:48:04 +02:00
2024-08-19 21:48:04 +02:00
2024-08-19 21:48:04 +02:00
2024-08-19 21:48:04 +02:00
2024-08-19 21:48:04 +02:00
2024-08-19 21:48:04 +02:00
2024-08-19 21:48:04 +02:00
2024-08-19 21:48:04 +02:00
2024-08-19 21:48:04 +02:00
2024-08-19 21:48:04 +02:00
2024-08-19 21:48:04 +02:00
2024-08-19 21:48:04 +02:00
2024-08-19 21:48:04 +02:00
2024-08-19 21:48:04 +02:00
2024-08-19 21:48:04 +02:00
2024-08-19 21:48:04 +02:00
2024-08-19 21:48:04 +02:00
2024-08-19 21:48:04 +02:00
2024-08-19 21:48:04 +02:00
2024-08-19 21:48:04 +02:00
2024-08-19 21:48:04 +02:00
2024-08-19 21:48:04 +02:00
2024-08-19 21:48:04 +02:00
2024-08-19 21:48:04 +02:00
2024-08-19 21:48:04 +02:00
2024-08-19 21:48:04 +02:00
2024-08-19 21:48:04 +02:00
2024-08-19 21:48:04 +02:00
2024-08-19 21:48:04 +02:00
2024-08-19 21:48:04 +02:00
2024-08-19 21:48:04 +02:00
2024-08-19 21:48:04 +02:00
2024-08-19 21:48:04 +02:00
2024-08-19 21:48:04 +02:00
2024-08-19 21:48:04 +02:00
2024-08-19 21:48:04 +02:00
2024-08-19 21:48:04 +02:00
2024-08-19 21:48:04 +02:00
2024-08-19 21:48:04 +02:00
2024-08-19 21:48:04 +02:00
2024-08-19 21:48:04 +02:00
…
2024-08-19 21:48:04 +02:00
2024-08-19 21:48:04 +02:00
2024-08-19 21:48:04 +02:00
2024-08-19 21:48:04 +02:00
2024-08-19 21:48:04 +02:00
2024-08-19 21:48:04 +02:00
2024-08-19 21:48:04 +02:00
2024-08-19 21:48:04 +02:00
2024-08-19 21:48:04 +02:00
2024-08-19 21:48:04 +02:00
2024-08-19 21:48:04 +02:00
2024-08-19 21:48:04 +02:00
2024-08-19 21:48:04 +02:00
2024-08-19 21:48:04 +02:00
2024-08-19 21:48:04 +02:00
2024-08-19 21:48:04 +02:00
2025-12-07 15:54:59 +00:00
2024-08-19 21:48:04 +02:00
2024-08-19 21:48:04 +02:00
2024-08-19 21:48:04 +02:00
2024-08-19 21:48:04 +02:00
2024-08-19 21:48:04 +02:00
2024-08-19 21:48:04 +02:00
2024-08-19 21:48:04 +02:00
2024-08-19 21:48:04 +02:00
2024-08-19 21:48:04 +02:00
2024-08-19 21:48:04 +02:00
2024-08-19 21:48:04 +02:00
2024-08-19 21:48:04 +02:00
2024-08-19 21:48:04 +02:00
2024-08-19 21:48:04 +02:00
2024-08-19 21:48:04 +02:00
2024-08-19 21:48:04 +02:00
2024-08-19 21:48:04 +02:00
2024-08-19 21:48:04 +02:00
2024-08-19 21:48:04 +02:00
2025-12-07 15:54:59 +00:00
2024-08-19 21:48:04 +02:00
2024-08-19 21:48:04 +02:00
2024-08-19 21:48:04 +02:00
2024-08-19 21:48:04 +02:00
2024-08-19 21:48:04 +02:00
2024-08-19 21:48:04 +02:00
2024-08-19 21:48:04 +02:00
2024-08-19 21:48:04 +02:00
2024-08-19 21:48:04 +02:00
2024-08-19 21:48:04 +02:00
2024-08-19 21:48:04 +02:00
2024-08-19 21:48:04 +02:00
2024-07-05 18:06:14 +08:00
2024-08-19 21:48:04 +02:00
2024-08-19 21:48:04 +02:00
2024-08-19 21:48:04 +02:00
2024-08-19 21:48:04 +02:00
2024-08-19 21:48:04 +02:00
2024-08-19 21:48:04 +02:00
2024-08-19 21:48:04 +02:00
2024-08-19 21:48:04 +02:00
2024-08-19 21:48:04 +02:00
2024-08-19 21:48:04 +02:00
2024-08-19 21:48:04 +02:00
2024-08-19 21:48:04 +02:00
2024-08-19 21:48:04 +02:00
2024-08-19 21:48:04 +02:00
2024-08-19 21:48:04 +02:00
2024-08-19 21:48:04 +02:00
2024-08-19 21:48:04 +02:00
2024-08-19 21:48:04 +02:00
2024-08-19 21:48:04 +02:00
2024-08-19 21:48:04 +02:00
2024-08-19 21:48:04 +02:00
2024-08-19 21:48:04 +02:00
2024-08-19 21:48:04 +02:00
2024-08-19 21:48:04 +02:00
2024-08-19 21:48:04 +02:00
2024-08-19 21:48:04 +02:00
2024-08-19 21:48:04 +02:00
2024-08-19 21:48:04 +02:00
2024-08-19 21:48:04 +02:00
2024-08-19 21:48:04 +02:00
2024-08-19 21:48:04 +02:00
2024-08-19 21:48:04 +02:00
2024-08-19 21:48:04 +02:00
2024-08-19 21:48:04 +02:00
2024-08-19 21:48:04 +02:00
2024-08-19 21:48:04 +02:00
2024-08-19 21:48:04 +02:00
2024-08-19 21:48:04 +02:00
2024-08-19 21:48:04 +02:00
2024-09-08 17:51:37 +02:00
2024-08-19 21:48:04 +02:00
2024-08-19 21:48:04 +02:00
2024-08-19 21:48:04 +02:00
2024-08-19 21:48:04 +02:00
2024-08-19 21:48:04 +02:00
2024-08-19 21:48:04 +02:00
2024-08-19 21:48:04 +02:00
2024-08-19 21:48:04 +02:00
2024-08-19 21:48:04 +02:00
2024-08-19 21:48:04 +02:00
2024-08-19 21:48:04 +02:00
2024-08-19 21:48:04 +02:00
2024-08-19 21:48:04 +02:00
2024-08-19 21:48:04 +02:00
…
…
…
2024-09-08 17:51:37 +02:00
2024-08-19 21:48:04 +02:00