I'm having what sounds like the same problem as the previous
reports. The packaged POV-Ray binary (I tried 3.6.1-3) crashes with
SIGILL early in the processing of even a simple file. Like the
previous posters, my machine is a K7 (an 2-processor Athlon MP 2600+,
to be precise). However, if I recompile from the source package (using
all the defaults on my sid machine), the resulting binary works fine.
With GDB, I can see the particular instruction that's failing:
Program received signal SIGILL, Illegal instruction.
0x0805f84c in ?? ()
(gdb) disass 0x0805f84c 0x0805f860
Dump of assembler code from 0x805f84c to 0x805f860:
0x0805f84c <[EMAIL PROTECTED]>: cvtsd2ss 0x81813b0,%xmm0
0x0805f854 <[EMAIL PROTECTED]>: jmp 0x805f2a3 <[EMAIL PROTECTED]>
0x0805f859 <[EMAIL PROTECTED]>: push %eax
0x0805f85a <[EMAIL PROTECTED]>: cvtsd2ss 0x81813c0,%xmm0
I suspect the problem is that the packaged binary was compiled with
processor-specific instructions supported by the build machine but not
my processor: for instance, SSE2 if the build machine is a Pentium 4
(my processor supports only the original generation SSE). My guess as
to the culprit is some lines in the configure script that guess GCC
flags based on /proc/cpuinfo. From line 885 of configure.ac:
if test -r /proc/cpuinfo ; then # Linux
pov_cpuinfo=/proc/cpuinfo
elif test -r /compat/linux/proc/cpuinfo ; then # FreeBSD using linprocfs
pov_cpuinfo=/compat/linux/proc/cpuinfo
elif test "`dmesg 2> /dev/null`"; then # FreeBSD 4.9 at least
pov_modelname=`dmesg | grep CPU | $head_1 | cut -d: -f2 | tr A-Z a-z`
pov_cpuflags=`dmesg | grep Features | $head_1 | cut -d'<' -f2 | sed 's
/[,>]/ /g' | tr A-Z a-z`
pov_vendorid=`dmesg | grep Origin | $head_1 | cut -d'"' -f2`
fi
fi
if test "$pov_cpuinfo"; then
pov_modelname=`cat $pov_cpuinfo | grep 'model name' | $head_1 | cut -d:
-f2 | tr A-Z a-z`
pov_cpuflags=`cat $pov_cpuinfo | grep flags | $head_1 | cut -d: -f2`
pov_cpuflags=`echo $pov_cpuflags` # remove leading/trailing blanks
pov_vendorid=`cat $pov_cpuinfo | grep vendor_id | $head_1 | cut -d: -f2`
pov_vendorid=`echo $pov_vendorid`
fi
In any case, the architecture selection flags in debian/rules aren't
correctly taking effect: "cvtsd2ss" is some sort of SSE[23]?
instruction, definitely not something compatible back to the 486. On
my machine, I could see "-msse" being passed to GCC during the source
build. I suspect this problem actually makes the binary unusable on
any older processor.
-- Stephen
--
To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]