mplayer crashes with illegal instruction
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
mplayer2 (Ubuntu) |
Fix Released
|
Undecided
|
Unassigned | ||
Oneiric |
Fix Released
|
Undecided
|
Unassigned | ||
Precise |
Fix Released
|
Undecided
|
Unassigned | ||
Quantal |
Fix Released
|
Undecided
|
Unassigned |
Bug Description
SRU explanation:
[Impact]
This bug makes mplayer2 (and gnome-mplayer which use it by default) unusable with some CPU (some Penthium3 and 4). As it's the video player by default on Lubuntu, it affects a large number of users (see also all the duplicate bugs : #934774, #928793, #858226, #974774, #987734, #1014279).
The patch only changes the way compiler flags are used, the same way it's used on mplayer source package.
[Test Case]
Open mplayer2 on an affected system.
See the crash.
[Regression Potential]
* It may affect performance on all architectures, since we are touching the compiler flags and optimization.
* It may also affect the non affected architectures for the same reasons above.
* However, since the same mechanism is used on mplayer source package without any problem reported, it should be quite safe.
Original bug report:
On a fresh install of Lubuntu 12.04 Beta on a HP Compaq Evo N610c, mplayer crashes with an illegal instruction. It can be reproduced with the command line mplayer or GNOME MPlayer (GNOME MPlayer itself does not crash, but goes to "Stopped" state). The reason for the crash is that a fisttpll instruction, a PNI (Prescott New Instructions), which requires SSE3, is executed, but my CPU (Pentium 4 Mobile) does not support SSE3 (it CPU flags are fpu vme de pse tsc msr pae mce cx8 mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe up pebs bts cid xtpr). Maybe this bug is related to https:/
$ gdb --args mplayer -noautosub InFlames_
GNU gdb (Ubuntu/Linaro 7.4-2012.
(gdb) r
Starting program: /usr/bin/mplayer -noautosub InFlames_
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/i386-
Program received signal SIGILL, Illegal instruction.
0x080dd52e in parse_flag (opt=0x824743c, name=..., param=...,
ambiguous_
118 m_option.c: No such file or directory.
(gdb) bt
#0 0x080dd52e in parse_flag (opt=0x824743c, name=..., param=...,
ambiguous_
#1 0x080d95c4 in m_option_parse (dst=<optimized out>, ambiguous_
param=..., name=..., opt=<optimized out>) at m_option.h:450
#2 m_config_
ambiguous_
#3 0x0809c11b in m_config_
argv=
#4 0x08086df4 in main (argc=3, argv=0xbffff424) at mplayer.c:4023
(gdb) disas
(..)
=> 0x080dd52e <+510>: fisttpl (%edx)
$ gdb --args mplayer InFlames_
(gdb) r
Starting program: /usr/bin/mplayer InFlames_
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/i386-
MPlayer2 UNKNOWN (C) 2000-2011 MPlayer Team
mplayer: could not connect to socket
mplayer: No such file or directory
Failed to open LIRC support. You will not be able to use your remote control.
Playing InFlames_
Detected file format: MPEG-PS format (libavformat)
[mpeg @ 0x1a27d80]
[lavf] stream 0: video (mpeg1video), -vid 0
[lavf] stream 1: audio (mp2), -aid 0
VIDEO: [mpg1] 352x288 0bpp 25.000 fps 1150.0 kbps (140.4 kbyte/s)
Load subtitles in .
Program received signal SIGILL, Illegal instruction.
0x081586b3 in demux_lavf_
at libmpdemux/
790 libmpdemux/
(gdb) bt
#0 0x081586b3 in demux_lavf_
at libmpdemux/
#1 0x08146932 in demux_fill_buffer (ds=0x8416328, demux=0x841a940)
at libmpdemux/
#2 ds_get_next_pts (ds=0x8416328) at libmpdemux/
#3 0x08088711 in print_file_
mpctx=
#4 main (argc=2, argv=0xbffff434) at mplayer.c:4866
(gdb) disas
(..)
=> 0x081586b3 <+499>: fisttpll 0x8018(%esi)
ProblemType: Bug
DistroRelease: Ubuntu 12.04
Package: mplayer2 2.0-426-gc32b3ed-2
ProcVersionSign
Uname: Linux 3.2.0-21-generic i686
ApportVersion: 2.0-0ubuntu4
Architecture: i386
Date: Thu Apr 5 12:16:34 2012
InstallationMedia: Lubuntu 12.04 "Precise Pangolin" - Beta i386 (20120328)
ProcEnviron:
PATH=(custom, no user)
LANG=en_US.UTF-8
SHELL=/bin/bash
SourcePackage: mplayer2
UpgradeStatus: No upgrade log present (probably fresh install)
description: | updated |
Changed in mplayer2 (Ubuntu Oneiric): | |
status: | Confirmed → New |
Changed in mplayer2 (Ubuntu Precise): | |
status: | Confirmed → New |
Changed in mplayer2 (Ubuntu Quantal): | |
status: | Confirmed → New |
tags: |
added: verification-done removed: verification-needed |
This happens to me on a Pentium 4 without even passing any parameters:
% mplayer
zsh: illegal hardware instruction (core dumped) mplayer
Running through gdb as above shows:
(gdb) r linux-gnu/ libthread_ db.so.1" .
Starting program: /usr/bin/mplayer
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/i386-
Program received signal SIGILL, Illegal instruction. parse_config_ file ()
0x080dd52e in ?? ()
(gdb) bt
#0 0x080dd52e in ?? ()
#1 0x080d95c4 in ?? ()
#2 0x080e1404 in m_config_
#3 0x08086cfd in main ()
(gdb) disas
No function contains program counter for selected frame.
(gdb)
I reported this as bug #974774 before looking more carefully at this one.