Explorar o código

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 %!s(int64=9) %!d(string=hai) anos
pai
achega
a9b9b26afd
Modificáronse 1 ficheiros con 2 adicións e 2 borrados
  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);
 	}
 }