[FFmpeg-trac] #474(avcodec:new): SIG SEV in clear_blocks_sse in ff_h263_decode_mb

FFmpeg trac at avcodec.org
Fri Sep 16 01:39:46 CEST 2011


#474: SIG SEV  in clear_blocks_sse in ff_h263_decode_mb
---------------------------------+-------------------------------------
             Reporter:  sgarcia  |                     Type:  defect
               Status:  new      |                 Priority:  important
            Component:  avcodec  |                  Version:  git
             Keywords:           |               Blocked By:
             Blocking:           |  Reproduced by developer:  0
Analyzed by developer:  0        |
---------------------------------+-------------------------------------
 Hi,

 I am using libavcodec in my mcu project and I am latelly getting some
 random seg faults.

 I have traced it down to be in clear_blocks_sse called by
 ff_h263_decode_mb.

 Here is the gdb info:

 (gdb) bt
 #0  0x00e7fb63 in clear_blocks_sse (blocks=0xb36202e0) at
 libavcodec/x86/dsputil_mmx.c:539
 #1  0x00c7d5e9 in ff_h263_decode_mb (s=0xb3600a60, block=0xb36202e0) at
 libavcodec/ituh263dec.c:634
 #2  0x00bcd9af in decode_slice (s=0xb3600a60) at libavcodec/h263dec.c:215
 #3  0x00bceb11 in ff_h263_decode_frame (avctx=0xb3600520, data=0xb3600940,
 data_size=0xb15fbc40, avpkt=0xb15fbbfc) at libavcodec/h263dec.c:671
 #4  0x00dea531 in avcodec_decode_video2 (avctx=0xb3600520,
 picture=0xb3600940, got_picture_ptr=0xb15fbc40, avpkt=0xb15fbbfc) at
 libavcodec/utils.c:769
 #5  0x080c493d in H263Decoder::DecodePacket (this=0xb36004c8,
 in=0xb15fbcc4 "", inLen=1393, lost=0, last=1) at
 /usr/local/src/mcu/media/src/h263/h263codec.cpp:476
 #6  0x08077852 in VideoStream::RecVideo (this=0xb6a2ad70) at
 /usr/local/src/mcu/media/src/videostream.cpp:668
 #7  0x08076b17 in VideoStream::startReceivingVideo (par=0xb6a2ad70) at
 /usr/local/src/mcu/media/src/videostream.cpp:190
 #8  0x001239e9 in start_thread () from /lib/libpthread.so.0
 #9  0x00662f3e in clone () from /lib/libc.so.6
 (gdb) list
 534         );
 535     }
 536
 537     static void clear_blocks_sse(DCTELEM *blocks)
 538     {\
 539         __asm__ volatile(
 540             "xorps  %%xmm0, %%xmm0  \n"
 541             "mov     %1, %%"REG_a"  \n"
 542             "1:                     \n"
 543             "movaps %%xmm0,    (%0, %%"REG_a") \n"
 (gdb) print blocks
 $5 = (DCTELEM *) 0xb36202e0
 (gdb) print *blocks
 $6 = 0
 (gdb) up
 #1  0x00c7d5e9 in ff_h263_decode_mb (s=0xb3600a60, block=0xb36202e0) at
 libavcodec/ituh263dec.c:634
 634             s->dsp.clear_blocks(s->block[0]);
 (gdb) print *(s->blocks)
 $7 = {{0 <repeats 64 times>}, {0 <repeats 64 times>}, {0 <repeats 32
 times>, 41, 41, 41, 40, 40, 40, 39, 39, 41, 41, 41, 41, 40, 40, 40, 40,
 42, 41, 41, 41, 41, 40, 40,
     40, 42, 42, 41, 41, 41, 40, 40, 40}, {39, 40, 40, 41, 41, 40, 40, 39,
 39, 40, 40, 41, 41, 40, 40, 39, 39, 40, 40, 41, 41, 40, 40, 39, 40
 <repeats 16 times>, 41, 40,
     40, 39, 39, 40, 40, 41, 41, 40, 40, 39, 39, 40, 40, 41, 41, 40, 40,
 39, 39, 40, 40, 41}, {130, 133, 132, 127, 127, 132, 134, 132, 130, 132,
 131, 128, 128, 131, 132,
     130, 131, 130, 129, 127, 128, 129, 131, 131, 133, 129, 126, 125, 126,
 128, 131, 135, 132, 127, 124, 126, 128, 129, 132, 135, 129, 126, 126, 129,
 132, 132, 131, 131,
     129, 128, 129, 132, 134, 133, 130, 127, 132, 130, 130, 132, 134, 133,
 129, 125}, {132, 131, 131, 134, 134, 131, 131, 132, 132, 131, 132, 134,
 134, 132, 131, 132, 132,
     131, 132, 133, 133, 132, 131, 132, 131, 131, 132, 133, 133, 132, 131,
 131, 131, 132, 132, 133, 133, 132, 132, 131, 131, 132, 133, 132, 132, 133,
 132, 131, 130, 132,
     133, 132, 132, 133, 132, 130, 130, 133, 133, 132, 132, 133, 133, 130},
 {0 <repeats 64 times>}, {0 <repeats 64 times>}}
 (gdb) down
 #0  0x00e7fb63 in clear_blocks_sse (blocks=0xb36202e0) at
 libavcodec/x86/dsputil_mmx.c:539
 539         __asm__ volatile(


 Best regards
 Sergio

-- 
Ticket URL: <https://ffmpeg.org/trac/ffmpeg/ticket/474>
FFmpeg <http://ffmpeg.org>
FFmpeg issue tracker


More information about the FFmpeg-trac mailing list