From a9b9b26afd2f41da01245446ec286ca814aa419e Mon Sep 17 00:00:00 2001 From: sorayuki Date: Wed, 6 Apr 2016 15:43:31 +0800 Subject: [PATCH] libff: Fix a race condition crash when handling clocks How to crash: 1. Use recent ffmpeg shared libraries. 2. Add a ffmpeg_source, a small static picture (e.g. jpeg) with loop 3. After a while of high cpu usage, it crashed. Seems reproduced more easily on faster computer Closes #533 --- deps/libff/libff/ff-demuxer.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/deps/libff/libff/ff-demuxer.c b/deps/libff/libff/ff-demuxer.c index e635f272e..00f41cd04 100644 --- a/deps/libff/libff/ff-demuxer.c +++ b/deps/libff/libff/ff-demuxer.c @@ -342,15 +342,15 @@ void ff_demuxer_reset(struct ff_demuxer *demuxer) packet.clock = clock; if (demuxer->audio_decoder != NULL) { + ff_clock_retain(clock); packet_queue_put(&demuxer->audio_decoder->packet_queue, &packet); - ff_clock_retain(clock); } if (demuxer->video_decoder != NULL) { + ff_clock_retain(clock); packet_queue_put(&demuxer->video_decoder->packet_queue, &packet); - ff_clock_retain(clock); } }