[FFmpeg-cvslog] pthread: Fix crash due to fctx->delaying not being cleared.

Dale Curtis git at videolan.org
Fri Apr 13 22:12:31 CEST 2012


ffmpeg | branch: master | Dale Curtis <dalecurtis at chromium.org> | Thu Apr 12 17:12:27 2012 -0700| [97ae370078e5ee8e78269fe4d7b4f457e82bd758] | committer: Ronald S. Bultje

pthread: Fix crash due to fctx->delaying not being cleared.

Reproducible with test case and ffplay -threads 2. Stack trace:
http://pastebin.com/PexZ4Uc0

Test case:
http://commondatastorage.googleapis.com/dalecurtis-shared/crash.ogm

Signed-off-by: Dale Curtis <dalecurtis at chromium.org>
Signed-off-by: Ronald S. Bultje <rsbultje at gmail.com>

> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=97ae370078e5ee8e78269fe4d7b4f457e82bd758
---

 libavcodec/pthread.c |    5 +++--
 1 files changed, 3 insertions(+), 2 deletions(-)

diff --git a/libavcodec/pthread.c b/libavcodec/pthread.c
index ee7bdb5..dc9220a 100644
--- a/libavcodec/pthread.c
+++ b/libavcodec/pthread.c
@@ -603,11 +603,12 @@ int ff_thread_decode_frame(AVCodecContext *avctx,
      * If we're still receiving the initial packets, don't return a frame.
      */
 
-    if (fctx->delaying && avpkt->size) {
+    if (fctx->delaying) {
         if (fctx->next_decoding >= (avctx->thread_count-1)) fctx->delaying = 0;
 
         *got_picture_ptr=0;
-        return avpkt->size;
+        if (avpkt->size)
+            return avpkt->size;
     }
 
     /*



More information about the ffmpeg-cvslog mailing list