浏览代码

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
sorayuki 9 年之前
父节点
当前提交
a9b9b26afd
共有 1 个文件被更改,包括 2 次插入2 次删除
  1. 2 2
      deps/libff/libff/ff-demuxer.c

+ 2 - 2
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);
 	}
 }