[Ffmpeg-devel] SIGFPE Arithmetic exception in h263.c

Dario Andrade dario
Fri Jul 29 23:30:56 CEST 2005


 

Another fatal error has occurred (which seems that the bitstream is
corrupted in anyhow), but now in h263.c (read previous post on SIGSEGV in
h264.c).

 

Program received signal SIGFPE, Arithmetic exception.

[Switching to thread 1292.0x220]

0x656ec78d in __udivmoddi4 ()

(gdb) bt

#0  0x656ec78d in __udivmoddi4 ()

#1  0x656ec678 in __divdi3 ()

#2  0x6556c83b in decode_vop_header (s=0x3d209d0, gb=0x3d22544) at
h263.c:5854

#3  0x65554c99 in ff_h263_decode_frame (avctx=0xe74680, data=0x4e1fd70,

    data_size=0x4e1fd6c, buf=0x625fdd0 "", buf_size=16906) at h263dec.c:493

#4  0x6548380a in avcodec_decode_video (avctx=0xe74680, picture=0x4e1fd70,

    got_picture_ptr=0x4e1fd6c, buf=0x625fdd0 "", buf_size=16906) at
utils.c:747

#5  0x0061042f in ?? ()

#6  0x00660378 in ?? ()

#7  0x00661146 in ?? ()

#8  0x0065a885 in ?? ()

#9  0x00626e76 in ?? ()

#10 0x00626b3c in ?? ()

#11 0x7c80b50b in $R000000 ()

 

(gdb) list h263.c:5854

5849            s->pb_field_time= (  ROUNDED_DIV(s->time, s->t_frame)

5850                               - ROUNDED_DIV(s->last_non_b_time -
s->pp_time, s->t_frame))*2;

5851        }

5852    //av_log(s->avctx, AV_LOG_DEBUG, "last nonb %Ld last_base %d time
%Ld pp %d pb %d t %d ppf %d pbf %d\n", s->last_non_b_time, s->last_time_base

, s->time, s->pp_time, s->pb_time, s->t_frame, s->pp_field_time,
s->pb_field_time);

5853

5854        s->current_picture_ptr->pts= (s->time +
s->avctx->time_base.num/2) / s->avctx->time_base.num;

5855        if(s->avctx->debug&FF_DEBUG_PTS)

5856            av_log(s->avctx, AV_LOG_DEBUG, "MPEG4 PTS: %Ld\n",
s->current_picture_ptr->pts);

5857

5858 check_marker(gb, "before vop_coded");





(gdb) disass $pc-32 $pc+32

Dump of assembler code from 0x656ec76d to 0x656ec7ad:

0x656ec76d <__udivmoddi4+125>:  rorb   0x4589e875(%ecx)

0x656ec773 <__udivmoddi4+131>:  in     (%dx),%al

0x656ec774 <__udivmoddi4+132>:  mov    0xffffffec(%ebp),%edx

0x656ec777 <__udivmoddi4+135>:  mov    0xffffffe8(%ebp),%eax

0x656ec77a <__udivmoddi4+138>:  add    $0x2c,%esp

0x656ec77d <__udivmoddi4+141>:  pop    %ebx

0x656ec77e <__udivmoddi4+142>:  pop    %esi

0x656ec77f <__udivmoddi4+143>:  pop    %edi

0x656ec780 <__udivmoddi4+144>:  pop    %ebp

0x656ec781 <__udivmoddi4+145>:  ret

0x656ec782 <__udivmoddi4+146>:  test   %eax,%eax

0x656ec784 <__udivmoddi4+148>:  jne    0x656ec791 <__udivmoddi4+161>

0x656ec786 <__udivmoddi4+150>:  mov    $0x1,%eax

0x656ec78b <__udivmoddi4+155>:  xor    %edx,%edx

0x656ec78d <__udivmoddi4+157>:  div    %esi

0x656ec78f <__udivmoddi4+159>:  mov    %eax,%esi

0x656ec791 <__udivmoddi4+161>:  mov    %edi,%eax

0x656ec793 <__udivmoddi4+163>:  mov    0xffffffdc(%ebp),%edx

0x656ec796 <__udivmoddi4+166>:  div    %esi

0x656ec798 <__udivmoddi4+168>:  mov    %eax,0xffffffd0(%ebp)

0x656ec79b <__udivmoddi4+171>:  mov    0xffffffd8(%ebp),%eax

0x656ec79e <__udivmoddi4+174>:  div    %esi

---Type <return> to continue, or q <return> to quit---

0x656ec7a0 <__udivmoddi4+176>:  mov    %edx,0xffffffd8(%ebp)

0x656ec7a3 <__udivmoddi4+179>:  mov    %eax,0xffffffd4(%ebp)

0x656ec7a6 <__udivmoddi4+182>:  jmp    0x656ec746 <__udivmoddi4+86>

0x656ec7a8 <__udivmoddi4+184>:  cmp    %ebx,0xffffffdc(%ebp)

0x656ec7ab <__udivmoddi4+187>:  jbe    0x656ec7d0 <__udivmoddi4+224>

End of assembler dump.

 

(gdb) info all-registers

eax            0x1      1

ecx            0x9      9

edx            0x0      0

ebx            0x0      0

esp            0x4e1f96c        0x4e1f96c

ebp            0x4e1f9a4        0x4e1f9a4

esi            0x0      0

edi            0x0      0

eip            0x656ec78d       0x656ec78d

eflags         0x10246  66118

cs             0x1b     27

ss             0x23     35

ds             0x23     35

es             0x23     35

fs             0x3b     59

gs             0x0      0

st0            -nan(0x8061816380667e65) (raw 0xffff8061816380667e65)

st1            -nan(0x0817e7f81)        (raw 0xffff00000000817e7f81)

st2            -nan(0x080808080)        (raw 0xffff0000000080808080)

st3            -nan(0x08081807e)        (raw 0xffff000000008081807e)

st4            -nan(0x80647f6480648164) (raw 0xffff80647f6480648164)

st5            -nan(0x810080007e007d)   (raw 0xffff00810080007e007d)

st6            -nan(0x7e007e007e007e)   (raw 0xffff007e007e007e007e)

---Type <return> to continue, or q <return> to quit---

st7            1        (raw 0x3fff8000000000000000)

fctrl          0xffff027f       -64897

fstat          0xffff0000       -65536

ftag           0xffffffff       -1

fiseg          0x1b     27

fioff          0x7483216f       1954750831

foseg          0xffff0023       -65501

fooff          0x3d25c20        64117792

fop            0x4cc    1228

 

(gdb) info frame

Stack level 0, frame at 0x4e1f9a4:

 eip = 0x656ec78d in __udivmoddi4; saved eip 0x656ec678

 called by frame at 0x4e1fa04

 Arglist at 0x4e1f9a4, args:

 Locals at 0x4e1f9a4, Previous frame's sp is 0x0

 Saved registers:

  ebx at 0x4e1f998, ebp at 0x4e1f9a4, esi at 0x4e1f99c, edi at 0x4e1f9a0,

  eip at 0x4e1f9a8

 

Is there any hint for me to find out what could be going on?

i.e. corrupted packet, packet loss, missing vopheader, anythiing! ;-)

 

Thanks a lot again,

 

 

Dario Andrade

Executive Director

DATSCOM

Mobile +55.21.9453.5005

Office +55.21.2141.9525

 





More information about the ffmpeg-devel mailing list