Mailing List Archive

Illegal instruction with AMD K6-II
I've got Red Hat Linux 7.3 running on an AMD K6-II 450MHz. I've finally
managed to get MythTV to compile. (I've taken copious notes that I'd
like to share when I finally get everything working). When I first
tried to execute mythtv, I got an "Illegal instruction" error message. I
determined that I needed to change -march=pentiumpro to -march=k6 in
settings.pro.

Now, when I try to execute mythtv, I get another "Illegal instruction."
I'm a linux newbie, but I've picked up enough to try a gdb on mythtv.
The output is below:

[jford@russell mythtv]$ mythtv
Probed: Television
Probed: Composite1
Changing from None to WatchingLiveTV
libavcodec: CPU flags: mmx 3dnow
using rtjpeg
strange error flushing buffer ...
Using XV port 55
Illegal instruction

[jford@russell mythtv]$ gdb mythtv
GNU gdb Red Hat Linux (5.2-2)
Copyright 2002 Free Software Foundation, Inc.
GDB is free software, covered by the GNU General Public License, and you
are welcome to change it and/or distribute copies of it under certain
conditions.
Type "show copying" to see the conditions.
There is absolutely no warranty for GDB. Type "show warranty" for
details.
This GDB was configured as "i386-redhat-linux"...
(gdb) run
Starting program: /usr/local/bin/mythtv
[New Thread 1024 (LWP 9533)]
Probed: Television
Probed: Composite1
[New Thread 2049 (LWP 9535)]
[New Thread 1026 (LWP 9536)]
Changing from None to WatchingLiveTV
libavcodec: CPU flags: mmx 3dnow
[New Thread 2051 (LWP 9537)]
using rtjpeg
[New Thread 3076 (LWP 9538)]
[New Thread 4101 (LWP 9539)]
strange error flushing buffer ...
[New Thread 5126 (LWP 9540)]
only read 3072 from 4096 bytes from '/dev/dsp'
read audio: Interrupted system call
VIDIOCSYNC0: Interrupted system call
[New Thread 6151 (LWP 9541)]
only read 3072 from 4096 bytes from '/dev/dsp'
read audio: Interrupted system call
VIDIOCSYNC0: Interrupted system call
[New Thread 7176 (LWP 9542)]
only read -1 from 4096 bytes from '/dev/dsp'
read audio: Interrupted system call
VIDIOCSYNC1: Interrupted system call
Using XV port 55

Program received signal SIGILL, Illegal instruction.
[Switching to Thread 5126 (LWP 9540)]
0x08070f50 in linearBlendYUV420 ()
(gdb)

Any ideas? I found a call to emms() in libNuppelVideo/effects.cpp, where
linearBlendYUV420 resides. To me, it was the only thing that looked like
it could cause trouble.

I've recompiled lame using the -march=k6 option, but I couldn't find
such an option for freetype1.

xawtv works fine. I've been able use mythfrontend and mythepg. I think
I even recorded a show, but I can't tell until mythtv is working. Once
everything is working, I will build a new computer dedicated to running
mythtv. I just want to get it working on this old system before I
invest in a new one.

Thanks,
Jason Ford

P.S. Great work on the project! It looks very nice. =)
Re: Illegal instruction with AMD K6-II [ In reply to ]
On Thursday 03 October 2002 07:43 pm, Jason Ford wrote:
> I've got Red Hat Linux 7.3 running on an AMD K6-II 450MHz. I've finally
> managed to get MythTV to compile. (I've taken copious notes that I'd
> like to share when I finally get everything working). When I first
> tried to execute mythtv, I got an "Illegal instruction" error message. I
> determined that I needed to change -march=pentiumpro to -march=k6 in
> settings.pro.
>
> Now, when I try to execute mythtv, I get another "Illegal instruction."
> I'm a linux newbie, but I've picked up enough to try a gdb on mythtv.
> The output is below:
<snip>
> Any ideas? I found a call to emms() in libNuppelVideo/effects.cpp, where
> linearBlendYUV420 resides. To me, it was the only thing that looked like
> it could cause trouble.

Easiest thing to do would be to turn off deinterlacing in the settings file.
Otherwise, you'll need to modify libNuppelVideo/effects.cpp and stick an
#undef MMX at the top of it.. It's actually using MMX2 instructions in
there, not just MMX.

Isaac
Re: Illegal instruction with AMD K6-II [ In reply to ]
Thanks, Isaac. The settings.txt option worked like a charm!