Altivec detection broken on G3 (multiple packages)
Bug #74282 reported by
MenTaLguY
This bug affects 1 person
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
ffmpeg (Ubuntu) |
Fix Released
|
Undecided
|
Unassigned | ||
mplayer (Debian) |
Fix Released
|
Unknown
|
|||
mplayer (Ubuntu) |
Fix Released
|
Undecided
|
Unassigned |
Bug Description
Most of the media player applications on my G3 iBook no longer work after upgrading to Edgy. Affected applications include totem, mplayer, vlc, and any application using ffmpeg.
All of the affected applications die with SIGILL at an mtrsave instruction when trying to detect whether the CPU supports Altivec.
I suspect the intent in the code is set up a SIGILL handler to catch this case, but the handler is not getting correctly set up, so the application is terminated instead.
Related branches
Changed in mplayer: | |
status: | Unknown → New |
Changed in mplayer: | |
status: | New → Incomplete |
Changed in mplayer (Debian): | |
status: | Incomplete → Confirmed |
Changed in mplayer (Debian): | |
status: | Confirmed → Fix Released |
Changed in mplayer (Debian): | |
status: | Fix Released → Confirmed |
Changed in mplayer (Debian): | |
status: | Confirmed → Fix Committed |
Changed in mplayer (Debian): | |
status: | Fix Committed → Fix Released |
To post a comment you must log in.
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. libavcodec. so.0d
0x0c7c603c in ff_er_frame_end () from /usr/lib/
#0 0x0c7c603c in ff_er_frame_end () from /usr/lib/ libavcodec. so.0d decode_ frame () from /usr/lib/ libavcodec. so.0d decode_ video () from /usr/lib/ libavcodec. so.0d
#1 0x0c7f5bc8 in ff_h263_
#2 0x0c6bac28 in avcodec_
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/libgstffmp eg.so
#0 0x0d0ff34c in ff_er_frame_end () gstreamer- 0.10/libgstffmp eg.so decode_ frame () gstreamer- 0.10/libgstffmp eg.so decode_ video () gstreamer- 0.10/libgstffmp eg.so
from /usr/lib/
#1 0x0d1baff8 in ff_h263_
from /usr/lib/
#2 0x0d038a18 in avcodec_
from /usr/lib/
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.