[lug] povray on fedora core 4

D. Stimits stimits at comcast.net
Tue Sep 13 10:47:20 MDT 2005

Zan Lynx wrote:
> I just tested a build on x86_64, with GCC 4.0.1 and had no errors.  Why
> don't you post the machine instruction that it failed on?  You should be
> able to use GDB and after it dies, enter "disass" and look for the
> instruction at the address where it failed.

This is 32 bit, pentium 3, so I doubt a 64 bit system is valid. A 
pentium 4 might be valid...I'm probably the last person in the world to 
be running a P3 or older. I'll do the disassembly in a moment.

> I suspect that you did something like set the wrong march or mcpu
> options, or you're using a weird CPU that looks like i686 but isn't
> really, like some of the Cyrix chips.  Did you tell GCC to
> auto-vectorize the code?  Does the CPU support SSE2?

Povray is an autoconf project. I could not possibly be at fault by using 
"./configure". It isn't possible. This is plain vanilla pentium 3, I 
didn't write any of the povray code, I'm just an end user. This same 
code works perfectly fine on compat gcc 3.2, it only fails under gcc 4. 
I've found other bugs in gcc4 which are verified bugs that did not exist 
in earlier releases, but those bugs came up with internal compiler error 
(which is a lot easier to report).

> Actually, just post what CFLAGS were used to build, what the CPU is, and
> the disassembly of the instruction where it dies.

I used ./configure, I didn't adjust anything...but 64 bit systems are 
not valid for the test, it needs to be 32 bit, preferably P3. An illegal 
instruction really sounds like either someone hand coded asm and it 
isn't portable, or else the compiler itself is buggy...since I traced 
the line down to a simple variable initialization, it almost has to be a 
gcc 4 bug, initializing a floating point variable to "0.0" is trivial.

I have not bothered to learn asm (I really should though, if for no 
other reason than entertainment), but the disassembly after it core dump 
follows at the end of the email (note that this cuts off part of the 
disassembly, actual output was longer, but this should probably be 
enough...I can post the whole thing if it helps). I *really* wish 
someone with a P3 and gcc4, preferably fedora core 4, would see if 
povray runs after the compile.

D. Stimits, stimits AT comcast DOT net

Program received signal SIGILL, Illegal instruction.
0x0806750f in pov::init_vars ()
(gdb) disas
Dump of assembler code for function _ZN3pov9init_varsEv:
0x08067500 <_ZN3pov9init_varsEv+0>:     push   %ebp
0x08067501 <_ZN3pov9init_varsEv+1>:     mov    $0x3,%eax
0x08067506 <_ZN3pov9init_varsEv+6>:     pxor   %xmm0,%xmm0
0x0806750a <_ZN3pov9init_varsEv+10>:    mov    %esp,%ebp
0x0806750c <_ZN3pov9init_varsEv+12>:    sub    $0x28,%esp
0x0806750f <_ZN3pov9init_varsEv+15>:    movsd  %xmm0,0x817f0e8
0x08067517 <_ZN3pov9init_varsEv+23>:    mov    %eax,0x8179fc4
0x0806751c <_ZN3pov9init_varsEv+28>:    mov    0x8179fcc,%eax
0x08067521 <_ZN3pov9init_varsEv+33>:    xor    %edx,%edx
0x08067523 <_ZN3pov9init_varsEv+35>:    mov    $0x19,%ecx
0x08067528 <_ZN3pov9init_varsEv+40>:    movsd  %xmm0,0x817f100
0x08067530 <_ZN3pov9init_varsEv+48>:    mov    %ecx,0x817f118
0x08067536 <_ZN3pov9init_varsEv+54>:    xor    %ecx,%ecx
0x08067538 <_ZN3pov9init_varsEv+56>:    mov    %edx,0x8179fd0
0x0806753e <_ZN3pov9init_varsEv+62>:    mov    $0x3ff00000,%edx
0x08067543 <_ZN3pov9init_varsEv+67>:    mov    %eax,0x817f070
0x08067548 <_ZN3pov9init_varsEv+72>:    mov    $0x1,%eax
0x0806754d <_ZN3pov9init_varsEv+77>:    mov    %eax,0x8179fcc
0x08067552 <_ZN3pov9init_varsEv+82>:    mov    $0x3,%eax
0x08067557 <_ZN3pov9init_varsEv+87>:    mov    %eax,0x817f05c
0x0806755c <_ZN3pov9init_varsEv+92>:    mov    $0x33333333,%eax
0x08067561 <_ZN3pov9init_varsEv+97>:    mov    %eax,0x817f060
0x08067566 <_ZN3pov9init_varsEv+102>:   mov    $0x3fd33333,%eax
0x0806756b <_ZN3pov9init_varsEv+107>:   mov    %eax,0x817f064
0x08067570 <_ZN3pov9init_varsEv+112>:   xor    %eax,%eax
0x08067572 <_ZN3pov9init_varsEv+114>:   mov    %eax,0x817f0dc
0x08067577 <_ZN3pov9init_varsEv+119>:   xor    %eax,%eax
0x08067579 <_ZN3pov9init_varsEv+121>:   mov    %eax,0x817f0f8
0x0806757e <_ZN3pov9init_varsEv+126>:   mov    $0x64,%eax
0x08067583 <_ZN3pov9init_varsEv+131>:   mov    %eax,0x8183084
0x08067588 <_ZN3pov9init_varsEv+136>:   mov    $0x64,%eax
0x0806758d <_ZN3pov9init_varsEv+141>:   mov    %eax,0x8183088
0x08067592 <_ZN3pov9init_varsEv+146>:   xor    %eax,%eax
0x08067594 <_ZN3pov9init_varsEv+148>:   mov    %eax,0x81a44b0
0x08067599 <_ZN3pov9init_varsEv+153>:   xor    %eax,%eax
0x0806759b <_ZN3pov9init_varsEv+155>:   mov    %eax,0x81a4ddc
0x080675a0 <_ZN3pov9init_varsEv+160>:   mov    $0x169,%eax
0x080675a5 <_ZN3pov9init_varsEv+165>:   mov    %eax,0x817f110
0x080675aa <_ZN3pov9init_varsEv+170>:   mov    $0xffffffff,%eax
0x080675af <_ZN3pov9init_varsEv+175>:   mov    %eax,0x817f0e0
0x080675b4 <_ZN3pov9init_varsEv+180>:   xor    %eax,%eax
0x080675b6 <_ZN3pov9init_varsEv+182>:   mov    %eax,0x817f0f0
0x080675bb <_ZN3pov9init_varsEv+187>:   mov    $0x3ff00000,%eax
0x080675c0 <_ZN3pov9init_varsEv+192>:   mov    %eax,0x817f0f4
0x080675c5 <_ZN3pov9init_varsEv+197>:   mov    $0xffffffff,%eax
0x080675ca <_ZN3pov9init_varsEv+202>:   mov    %eax,0x817f0fc

0x080675cf <_ZN3pov9init_varsEv+207>:   xor    %eax,%eax
0x080675d1 <_ZN3pov9init_varsEv+209>:   mov    %eax,0x817f108
0x080675d6 <_ZN3pov9init_varsEv+214>:   mov    $0x1,%eax
0x080675db <_ZN3pov9init_varsEv+219>:   mov    %eax,0x817f124
0x080675e0 <_ZN3pov9init_varsEv+224>:   xor    %eax,%eax
0x080675e2 <_ZN3pov9init_varsEv+226>:   mov    %ecx,0x817f068
0x080675e8 <_ZN3pov9init_varsEv+232>:   mov    $0x3ff00000,%ecx
0x080675ed <_ZN3pov9init_varsEv+237>:   mov    %edx,0x817f06c
0x080675f3 <_ZN3pov9init_varsEv+243>:   mov    $0x1,%edx
0x080675f8 <_ZN3pov9init_varsEv+248>:   mov    %eax,0x817f074
0x080675fd <_ZN3pov9init_varsEv+253>:   xor    %eax,%eax
0x080675ff <_ZN3pov9init_varsEv+255>:   mov    %ecx,0x817f10c
0x08067605 <_ZN3pov9init_varsEv+261>:   mov    $0x5904,%ecx
0x0806760a <_ZN3pov9init_varsEv+266>:   mov    %edx,0x817f120
0x08067610 <_ZN3pov9init_varsEv+272>:   mov    $0x8,%edx
0x08067615 <_ZN3pov9init_varsEv+277>:   movb   $0x8,0x8179fd4
0x0806761c <_ZN3pov9init_varsEv+284>:   movb   $0x30,0x817a044
0x08067623 <_ZN3pov9init_varsEv+291>:   mov    %eax,0x817f0d8
0x08067628 <_ZN3pov9init_varsEv+296>:   mov    $0x40,%eax
0x0806762d <_ZN3pov9init_varsEv+301>:   movsd  %xmm0,0x817f130
0x08067635 <_ZN3pov9init_varsEv+309>:   mov    %eax,0x81766f0
0x0806763a <_ZN3pov9init_varsEv+314>:   xor    %eax,%eax
0x0806763c <_ZN3pov9init_varsEv+316>:   movsd  %xmm0,0x817f140
0x08067644 <_ZN3pov9init_varsEv+324>:   mov    %eax,0x817a030
0x08067649 <_ZN3pov9init_varsEv+329>:   xor    %eax,%eax
0x0806764b <_ZN3pov9init_varsEv+331>:   mov    %eax,0x81a4de0
0x08067650 <_ZN3pov9init_varsEv+336>:   xor    %eax,%eax
0x08067652 <_ZN3pov9init_varsEv+338>:   mov    %eax,0x817a02c
0x08067657 <_ZN3pov9init_varsEv+343>:   xor    %eax,%eax
0x08067659 <_ZN3pov9init_varsEv+345>:   mov    %eax,0x817a04c
0x0806765e <_ZN3pov9init_varsEv+350>:   mov    $0x9,%eax
0x08067663 <_ZN3pov9init_varsEv+355>:   mov    %eax,0x817f11c
0x08067668 <_ZN3pov9init_varsEv+360>:   mov    $0xfc,%eax
0x0806766d <_ZN3pov9init_varsEv+365>:   mov    %eax,0x817f058
0x08067672 <_ZN3pov9init_varsEv+370>:   xor    %eax,%eax
0x08067674 <_ZN3pov9init_varsEv+372>:   mov    %eax,0x817f128
0x08067679 <_ZN3pov9init_varsEv+377>:   mov    $0x1,%eax
0x0806767e <_ZN3pov9init_varsEv+382>:   mov    %eax,0x817f13c
0x08067683 <_ZN3pov9init_varsEv+387>:   xor    %eax,%eax
0x08067685 <_ZN3pov9init_varsEv+389>:   mov    %eax,0x817f150
0x0806768a <_ZN3pov9init_varsEv+394>:   mov    $0x3ff00000,%eax
0x0806768f <_ZN3pov9init_varsEv+399>:   mov    %eax,0x817f154
0x08067694 <_ZN3pov9init_varsEv+404>:   mov    $0xffffffff,%eax
0x08067699 <_ZN3pov9init_varsEv+409>:   mov    %eax,0x817f158
0x0806769e <_ZN3pov9init_varsEv+414>:   xor    %eax,%eax
0x080676a0 <_ZN3pov9init_varsEv+416>:   mov    %eax,0x817f160
0x080676a5 <_ZN3pov9init_varsEv+421>:   mov    $0xbff00000,%eax

0x080676aa <_ZN3pov9init_varsEv+426>:   mov    %ecx,0x817a040
0x080676b0 <_ZN3pov9init_varsEv+432>:   mov    $0xffffffff,%ecx
0x080676b5 <_ZN3pov9init_varsEv+437>:   mov    %edx,0x817a048
0x080676bb <_ZN3pov9init_varsEv+443>:   xor    %edx,%edx
0x080676bd <_ZN3pov9init_varsEv+445>:   mov    %eax,0x817f164
0x080676c2 <_ZN3pov9init_varsEv+450>:   mov    $0xffffffff,%eax
0x080676c7 <_ZN3pov9init_varsEv+455>:   mov    %ecx,0x817f148
0x080676cd <_ZN3pov9init_varsEv+461>:   xor    %ecx,%ecx
0x080676cf <_ZN3pov9init_varsEv+463>:   mov    %edx,0x817f14c
0x080676d5 <_ZN3pov9init_varsEv+469>:   mov    $0xbff00000,%edx
0x080676da <_ZN3pov9init_varsEv+474>:   mov    %eax,0x817f168
0x080676df <_ZN3pov9init_varsEv+479>:   xor    %eax,%eax
0x080676e1 <_ZN3pov9init_varsEv+481>:   mov    %ecx,0x817f170
0x080676e7 <_ZN3pov9init_varsEv+487>:   mov    $0x3fe00000,%ecx
0x080676ec <_ZN3pov9init_varsEv+492>:   mov    %edx,0x817f174
0x080676f2 <_ZN3pov9init_varsEv+498>:   mov    $0xeb851eb8,%edx
0x080676f7 <_ZN3pov9init_varsEv+503>:   movb   $0x6e,0x817a046
0x080676fe <_ZN3pov9init_varsEv+510>:   movb   $0x0,0x817d050
0x08067705 <_ZN3pov9init_varsEv+517>:   movb   $0x0,0x817b050
0x0806770c <_ZN3pov9init_varsEv+524>:   movb   $0x0,0x817c050
0x08067713 <_ZN3pov9init_varsEv+531>:   movb   $0x33,0x817a045
0x0806771a <_ZN3pov9init_varsEv+538>:   movl   $0x400ccccd,0x817f050
0x08067724 <_ZN3pov9init_varsEv+548>:   movb   $0x0,0x818184c
0x0806772b <_ZN3pov9init_varsEv+555>:   movl   $0x3ee8ba2e,0x817f054
0x08067735 <_ZN3pov9init_varsEv+565>:   movb   $0x0,0x817f178
0x0806773c <_ZN3pov9init_varsEv+572>:   movb   $0x0,0x817f179
0x08067743 <_ZN3pov9init_varsEv+579>:   mov    %eax,0x817f180
0x08067748 <_ZN3pov9init_varsEv+584>:   mov    $0x3ff00000,%eax
0x0806774d <_ZN3pov9init_varsEv+589>:   movsd  %xmm0,0x817f190
0x08067755 <_ZN3pov9init_varsEv+597>:   mov    %eax,0x817f184
0x0806775a <_ZN3pov9init_varsEv+602>:   mov    $0x23,%eax
0x0806775f <_ZN3pov9init_varsEv+607>:   movsd  %xmm0,0x817f1a0
0x08067767 <_ZN3pov9init_varsEv+615>:   mov    %eax,0x817f188
0x0806776c <_ZN3pov9init_varsEv+620>:   mov    $0xcccccccd,%eax
0x08067771 <_ZN3pov9init_varsEv+625>:   mov    %eax,0x817f198
0x08067776 <_ZN3pov9init_varsEv+630>:   mov    $0x3ffccccc,%eax
0x0806777b <_ZN3pov9init_varsEv+635>:   mov    %eax,0x817f19c
0x08067780 <_ZN3pov9init_varsEv+640>:   xor    %eax,%eax
0x08067782 <_ZN3pov9init_varsEv+642>:   mov    %eax,0x817f1a8
0x08067787 <_ZN3pov9init_varsEv+647>:   mov    $0x3f8eb851,%eax
0x0806778c <_ZN3pov9init_varsEv+652>:   mov    %eax,0x817f1b4
0x08067791 <_ZN3pov9init_varsEv+657>:   mov    $0x5,%eax
0x08067796 <_ZN3pov9init_varsEv+662>:   mov    %eax,0x817f1b8
0x0806779b <_ZN3pov9init_varsEv+667>:   mov    $0x3,%eax
0x080677a0 <_ZN3pov9init_varsEv+672>:   mov    %eax,0x817f1bc
0x080677a5 <_ZN3pov9init_varsEv+677>:   mov    $0x6,%eax
0x080677aa <_ZN3pov9init_varsEv+682>:   mov    %eax,0x817f1c0

0x080677af <_ZN3pov9init_varsEv+687>:   mov    $0x1,%eax
0x080677b4 <_ZN3pov9init_varsEv+692>:   mov    %eax,0x817f1c4
0x080677b9 <_ZN3pov9init_varsEv+697>:   mov    $0x1,%eax
0x080677be <_ZN3pov9init_varsEv+702>:   mov    %eax,0x817f1c8
0x080677c3 <_ZN3pov9init_varsEv+707>:   xor    %eax,%eax
0x080677c5 <_ZN3pov9init_varsEv+709>:   mov    %eax,0x817f1d4
0x080677ca <_ZN3pov9init_varsEv+714>:   xor    %eax,%eax
0x080677cc <_ZN3pov9init_varsEv+716>:   mov    %eax,0x817f1e8
0x080677d1 <_ZN3pov9init_varsEv+721>:   mov    $0xbff00000,%eax
0x080677d6 <_ZN3pov9init_varsEv+726>:   mov    %eax,0x817f1ec
0x080677db <_ZN3pov9init_varsEv+731>:   mov    $0x47ae147b,%eax
0x080677e0 <_ZN3pov9init_varsEv+736>:   mov    %eax,0x817f1f0
0x080677e5 <_ZN3pov9init_varsEv+741>:   mov    $0x3f847ae1,%eax
0x080677ea <_ZN3pov9init_varsEv+746>:   mov    %eax,0x817f1f4
0x080677ef <_ZN3pov9init_varsEv+751>:   xor    %eax,%eax
0x080677f1 <_ZN3pov9init_varsEv+753>:   mov    %eax,0x817f1f8
0x080677f6 <_ZN3pov9init_varsEv+758>:   mov    $0x3fb47ae1,%eax
0x080677fb <_ZN3pov9init_varsEv+763>:   mov    %eax,0x817f214
0x08067800 <_ZN3pov9init_varsEv+768>:   mov    $0x47ae147b,%eax
0x08067805 <_ZN3pov9init_varsEv+773>:   mov    %eax,0x817f218
0x0806780a <_ZN3pov9init_varsEv+778>:   mov    $0x3fa47ae1,%eax
0x0806780f <_ZN3pov9init_varsEv+783>:   mov    %ecx,0x817f1ac
0x08067815 <_ZN3pov9init_varsEv+789>:   xor    %ecx,%ecx
0x08067817 <_ZN3pov9init_varsEv+791>:   mov    %eax,0x817f21c
0x0806781c <_ZN3pov9init_varsEv+796>:   xor    %eax,%eax
0x0806781e <_ZN3pov9init_varsEv+798>:   mov    %edx,0x817f1b0
0x08067824 <_ZN3pov9init_varsEv+804>:   mov    $0x1,%edx
0x08067829 <_ZN3pov9init_varsEv+809>:   mov    %ecx,0x817f1cc
0x0806782f <_ZN3pov9init_varsEv+815>:   xor    %ecx,%ecx
0x08067831 <_ZN3pov9init_varsEv+817>:   mov    %eax,0x817f200
0x08067836 <_ZN3pov9init_varsEv+822>:   xor    %eax,%eax
0x08067838 <_ZN3pov9init_varsEv+824>:   mov    %edx,0x817f1d0
0x0806783e <_ZN3pov9init_varsEv+830>:   mov    $0x47ae147b,%edx
0x08067843 <_ZN3pov9init_varsEv+835>:   mov    %ecx,0x817f1fc
0x08067849 <_ZN3pov9init_varsEv+841>:   xor    %ecx,%ecx
0x0806784b <_ZN3pov9init_varsEv+843>:   mov    %eax,0x817f204
0x08067850 <_ZN3pov9init_varsEv+848>:   mov    $0x1,%eax
0x08067855 <_ZN3pov9init_varsEv+853>:   mov    %edx,0x817f210
0x0806785b <_ZN3pov9init_varsEv+859>:   mov    %eax,0x817f208
0x08067860 <_ZN3pov9init_varsEv+864>:   mov    %ecx,0x818311c
0x08067866 <_ZN3pov9init_varsEv+870>:   movb   $0x0,0x817f20c
0x0806786d <_ZN3pov9init_varsEv+877>:   movl   $0x8182c80,(%esp)
0x08067874 <_ZN3pov9init_varsEv+884>:   movsd  %xmm0,0xffffffe8(%ebp)
0x08067879 <_ZN3pov9init_varsEv+889>:   call   0x8070130 
0x0806787e <_ZN3pov9init_varsEv+894>:   movl   $0x8182880,(%esp)
0x08067885 <_ZN3pov9init_varsEv+901>:   call   0x8070130 
0x0806788a <_ZN3pov9init_varsEv+906>:   mov    $0x502e5443,%eax

More information about the LUG mailing list