Port-m68k archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: Xamiga segfaults with 16 bit on CV64


I'm crossposting to port-m68k, because gcc4 compiler bugs may be interesting
for all 68k ports.

Here are some more information about my Xserver crash.

Stack frame backtrace:

#0  0x00091be2 in cfb16FillBoxTile32sCopy ()
#1  0x0008a8b0 in cfb16FillBoxTileOdd ()
#2  0x00088222 in cfb16PaintWindow ()
#3  0x0010ed34 in miWindowExposures ()
#4  0x00025fc0 in MapWindow ()
#5  0x00026106 in InitRootWindow ()
#6  0x0000686a in main ()
#7  0x00005de4 in __start ()

The registers:

d0             0x0      0
d1             0x2      2
d2             0x1      1
d3             0x178500 1541376
d4             0x5      5
d5             0xdffecb4        234876084
d6             0x60dec  396780
d7             0x2037c  131964
a0             0x0      0x0
a1             0x178500 0x178500
a2             0x178500 0x178500
a3             0xdffebe0        0xdffebe0
a4             0x0      0x0
a5             0x0      0x0
fp             0xdffeb08        0xdffeb08
sp             0xdffea9c        0xdffea9c
ps             0x4      0x4
pc             0x91be2  0x91be2
fpcontrol      0x0      0x0
fpstatus       0x8      0x8
fpiaddr        0x81b60ce        0x81b60ce

Disassembly of the crash location:
0x91bd4 <cfb16FillBoxTile32sCopy+56>:   moveal %a1@(16),%a0
0x91bd8 <cfb16FillBoxTile32sCopy+60>:   movel %a1,%sp@-
0x91bda <cfb16FillBoxTile32sCopy+62>:   moveal %a0@(372),%a0
0x91bde <cfb16FillBoxTile32sCopy+66>:   jsr %a0@
0x91be0 <cfb16FillBoxTile32sCopy+68>:   addql #4,%sp
0x91be2 <cfb16FillBoxTile32sCopy+70>:   movel %a0@(32),%fp@(-24)  <-- HERE

The code looks to me like a compiler bug (unless the sub-routine is meant to
return a result in a0). Register a0 is reused for deferencing after a sub-
routine call, although it is definitely a volatile register (and zero after
returning from the sub-routine). Additionally it was already overwritten with
a function pointer before.

While compiling Gnome and SDL for NetBSD/amiga in the last three weeks I had
several compiler bugs and internal compiler errors in gcc4. Some files could
only be compiled without optimization.

Seems we cannot trust gcc4 for 68k code generation... :|
I'm not a fan of gcc4 anyway.

My original posting:
> Hi,
> either it's me having done something stupid, or the Xamiga of 4.0 no
> longer supports 16 bit screen depths. This is what I did:
> ---8<---
> frank@phoenix grfconfig /dev/grf5
> 1: 800x600x8   57.0kHz @ 92Hz flags: +hsync +vsync
> 2: 800x600x16  57.8kHz @ 90Hz flags: +hsync +vsync
> 3: 1024x768x8  72.8kHz @ 92Hz flags: default
> 4: 1024x768x16 67.2kHz @ 83Hz flags: default
> 5: 1152x900x8  68.9kHz @ 74Hz flags: default
> 6: 1152x900x16 62.1kHz @ 66Hz flags: default
> Console: 640x480 (80x60)        31.2kHz @ 59Hz flags: default
> frank@phoenix cat .xserverrc 
> X -dev /dev/grf5 -mode 2
> frank@phoenix startx
> The XKEYBOARD keymap compiler (xkbcomp) reports:
>> Error:            Can't find file "amiga" for symbols include
>>                   Exiting
>>                   Abandoning symbols file "usa1"
> Errors from xkbcomp are not fatal to the X server Could not init font path
> element /usr/X11R6/lib/X11/fonts/CID/, removing from list! X connection to
> :0.0 broken (explicit kill or server shutdown). [1] Segmentation fault X
> -dev /dev/grf5... ---8<---
> Further experiments have shown that it segfaults for mode 2, 4 and 6, but
> works with mode 1, 3 and 5, i.e. 8-bit works, 16-bit doesn't.
> Has anobody made the same observations?

    _  Frank Wille (frank%phoenix.owl.de@localhost)
 _ //  http://sun.hasenbraten.de/~frank/
 \X/   Phx @ #AmigaGer

Home | Main Index | Thread Index | Old Index