Преглед изворни кода

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;
 	packet.clock = clock;
 
 
 	if (demuxer->audio_decoder != NULL) {
 	if (demuxer->audio_decoder != NULL) {
+		ff_clock_retain(clock);
 		packet_queue_put(&demuxer->audio_decoder->packet_queue,
 		packet_queue_put(&demuxer->audio_decoder->packet_queue,
 				&packet);
 				&packet);
-		ff_clock_retain(clock);
 	}
 	}
 
 
 	if (demuxer->video_decoder != NULL) {
 	if (demuxer->video_decoder != NULL) {
+		ff_clock_retain(clock);
 		packet_queue_put(&demuxer->video_decoder->packet_queue,
 		packet_queue_put(&demuxer->video_decoder->packet_queue,
 				&packet);
 				&packet);
-		ff_clock_retain(clock);
 	}
 	}
 }
 }