Comment 1 for bug 74282

Revision history for this message
MenTaLguY (mental-deactivatedaccount) wrote :

Actually, it seems to be a bit more complex than that. I've stepped through it more carefully in gdb, and vlc does correctly trap SIGLL from mtvrsave and lvx in its has_altivec(). The real problem comes later on in ff_er_frame_end().

 Program received signal SIGILL, Illegal instruction.
 0x0c7c603c in ff_er_frame_end () from /usr/lib/libavcodec.so.0d

 #0 0x0c7c603c in ff_er_frame_end () from /usr/lib/libavcodec.so.0d
 #1 0x0c7f5bc8 in ff_h263_decode_frame () from /usr/lib/libavcodec.so.0d
 #2 0x0c6bac28 in avcodec_decode_video () from /usr/lib/libavcodec.so.0d

 0x0c7c603c <ff_er_frame_end+8>: vxor v0,v0,v0

Attempting to play the same movie in totem gives me:

 0x0d0ff34c in ff_er_frame_end () from /usr/lib/gstreamer-0.10/libgstffmpeg.so

 #0 0x0d0ff34c in ff_er_frame_end ()
   from /usr/lib/gstreamer-0.10/libgstffmpeg.so
 #1 0x0d1baff8 in ff_h263_decode_frame ()
   from /usr/lib/gstreamer-0.10/libgstffmpeg.so
 #2 0x0d038a18 in avcodec_decode_video ()
   from /usr/lib/gstreamer-0.10/libgstffmpeg.so

 0x0d0ff34c <ff_er_frame_end+8>: vxor v0,v0,v0

ffmpeg appears to be the common factor in all cases. It appears that ffmpeg is incorrectly using Altivec instructions on machines which do not support it.