PDA

View Full Version : Ubuntu, Broken Save system with Dukeplus (20090131)


Sinner
02-01-2009, 11:14 AM
I compiled eduke32 20090131 and installed dukeplus and I am still getting a segment fault every time I try to load a game. I cleaned out my autoload folder and reinstalled everything but I still receive an error. Oddly I though this was because I was using an older version on Linux but I borrowed a copy of windows XP from a friend of mine (yeah I know thats not legal). Installed it on Vbox and Windows XP doesn't have this problem even on older releases.

http://img186.imageshack.us/img186/594/user24781pic25921233506qt7.jpg

My autoload folder only includes the duke3d.grp, dukeplus and the high res pack, and I start the game with

eduke32 -game_dir /home/administrator/.eduke32/DukePlus

http://img207.imageshack.us/img207/6181/user24781pic25931233507ql7.jpg

Here is my eduke32.log file

EDuke32 1.5.0devel 20090131
Application parameters: -game_dir /home/administrator/.eduke32/DukePlus
addsearchpath(): Added /home/administrator/
addsearchpath(): Added /home/administrator/.eduke32/DukePlus/
addsearchpath(): Added /home/administrator/.eduke32/
Initializing SDL system interface (compiled against SDL version 1.2.12, found version 1.2.12)
Loading libGL.so.1
Loading libGLU.so.1
Using "x11" video driver
Using config file 'eduke32.cfg'.
Scanning for GRP files...
Using group file 'duke3d.grp' as main group file.
Compiling: EDUKE.CON (27 bytes)
Including: dpcons/DUKEPLUS.CON (515456 bytes)
Using DEF file: dukeplus.def.
Wrote eduke32.cfg
Wrote eduke32_binds.cfg
Using config file '/home/administrator/.eduke32/DukePlus/dp.cfg'.
Including: DEFS.CON (35992 bytes)
Including: USER.CON (45482 bytes)
Including: DukePlus/dpcons/DEFSPLUS.CON (35857 bytes)
Including: DukePlus/dpcons/USERPLUS.CON (52125 bytes)
Including: DukePlus/dpcons/HUDPLUS.CON (51046 bytes)
Including: DukePlus/dpcons/LIGHTS.CON (20760 bytes)
DukePlus/dpcons/LIGHTS.CON: In actor `SECTOR_CONTROLLER':
DukePlus/dpcons/LIGHTS.CON:384: warning: `nullop' found without `else'
Including: DukePlus/dpcons/PLAYERPLUS.CON (109288 bytes)
Resizing code buffer to 32768*8 bytes
Resizing code buffer to 65536*8 bytes
Resizing code buffer to 131072*8 bytes
dpcons/DUKEPLUS.CON: In event `EVENT_PROCESSINPUT':
dpcons/DUKEPLUS.CON:24322: warning: found `ifsound' outside of a local event.
dpcons/DUKEPLUS.CON:24330: warning: found `ifsound' outside of a local event.
Found 3 warning(s), 0 error(s).
Resizing code buffer to 95896*8 bytes
Script compiled in 1998ms
Compiled code size: 95888*8 bytes, version 1.4+
Pointer bitmap size: 11987 bytes
2724/11264 labels, 621/2048 variables
280/16384 quotes, 46 quote redefinitions
32/88 event definitions, 377 defined actors
Initialized 32.0M cache
Invalid frame name on line dukeplus.def:78
Definitions file 'dukeplus.def' loaded.
RTS file DUKE.RTS was not found
Initializing OSD...
1 joystick(s) found
1. Logitech Logitech RumblePad 2 USB
Joystick 1 has 6 axes, 12 buttons, and 0 hat(s).
Setting video mode 1280x1024 (32-bpp fullscreen)
OpenGL Information:
Version: 2.1.2 NVIDIA 180.22
Vendor: NVIDIA Corporation
Renderer: GeForce 9800 GT/PCI/SSE2
gltexinvalidateall()
gltexinvalidate8()
Cache contains -112585 bytes of garbage data
Initializing music...
Initializing sound...
Initializing MultiVoc...
- 32 voices, 512 byte mixing buffers
gltexinvalidateall()
gltexinvalidate8()
EOF: EDuke32
No cached tex for DUKEPLUS_RESOURCES/GRAPHICS/shell.png.
Writing cached tex 076451d6da45c47add5547281fd8d825-1ab9-00, offset 0x1743e69
No cached tex for DUKEPLUS_RESOURCES/GRAPHICS/shell.png.
Writing cached tex 076451d6da45c47add5547281fd8d825-1ab9-1001, offset 0x17441ef
No cached tex for DUKEPLUS_RESOURCES/GRAPHICS/shell.png.
Writing cached tex 076451d6da45c47add5547281fd8d825-1ab9-6003, offset 0x1744565
No cached tex for DUKEPLUS_RESOURCES/GRAPHICS/shell.png.
Writing cached tex 076451d6da45c47add5547281fd8d825-1ab9-f7009, offset 0x17448d8
No cached tex for DUKEPLUS_RESOURCES/GRAPHICS/shell2.png.
Writing cached tex 009fcd8a95ec7011a23eac25e607d5a5-1a84-00, offset 0x1744c4e
No cached tex for DUKEPLUS_RESOURCES/GRAPHICS/shell2.png.



Writing cached tex 009fcd8a95ec7011a23eac25e607d5a5-1a84-1001, offset 0x1744fd7
No cached tex for DUKEPLUS_RESOURCES/GRAPHICS/shell2.png.
Writing cached tex 009fcd8a95ec7011a23eac25e607d5a5-1a84-6003, offset 0x174534f
No cached tex for DUKEPLUS_RESOURCES/GRAPHICS/shell2.png.
Writing cached tex 009fcd8a95ec7011a23eac25e607d5a5-1a84-f7009, offset 0x17456ca
Cache time: 1164ms

What am I doing wrong on Ubuntu? The versions are the same but yet Windows XP is the only one that doesn't crash :mad: :mad:

Plagman
02-01-2009, 01:18 PM
You're trying to load savegames that were created using that same version, right?
Also, are you running a x86_64 distribution? Try compiling eduke32 with `make veryclean && make RELEASE=0` and run it with gdb (`gdb eduke32` then type `r`). When you load the savegame and it crashes, type `bt` in the gdb shell and post the output here.

Sinner
02-01-2009, 02:26 PM
You're trying to load savegames that were created using that same version, right?
Also, are you running a x86_64 distribution? Try compiling eduke32 with `make veryclean && make RELEASE=0` and run it with gdb (`gdb eduke32` then type `r`). When you load the savegame and it crashes, type `bt` in the gdb shell and post the output here.

Yes I am running 64-bit Ubuntu, and yes the savegames were created with 20090131, EVERYTHING is new. I ran gdb and here is the output

GNU gdb 6.8-debian
Copyright (C) 2008 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law. Type "show copying"
and "show warranty" for details.
This GDB was configured as "x86_64-linux-gnu"...
(gdb) r
Starting program: /home/administrator/Projects/eduke/eduke32_src_20090131/eduke32
[Thread debugging using libthread_db enabled]
[New Thread 0x7fb347aab6f0 (LWP 16780)]
[New Thread 0x425f5950 (LWP 16784)]

Program received signal SIGSEGV, Segmentation fault.
[Switching to Thread 0x7fb347aab6f0 (LWP 16780)]
0x000000000041a06c in A_InsertSprite (whatsect=258, s_x=384, s_y=44608,
s_z=-8448, s_pn=8005, s_s=0, s_xr=0, s_yr=0, s_a=0, s_ve=0, s_zv=0,
s_ow=448, s_ss=0) at source/game.c:4739
4739 s->extra = *actorscrptr[s_pn];
(gdb) bt
#0 0x000000000041a06c in A_InsertSprite (whatsect=258, s_x=384, s_y=44608,
s_z=-8448, s_pn=8005, s_s=0, s_xr=0, s_yr=0, s_a=0, s_ve=0, s_zv=0,
s_ow=448, s_ss=0) at source/game.c:4739
#1 0x000000000041a45c in A_Spawn (j=448, pn=8005) at source/game.c:4788
#2 0x0000000000479b22 in X_DoExecute () at source/gameexec.c:2002
#3 0x000000000048d625 in X_DoConditional (condition=0)
at source/gameexec.c:663
#4 0x0000000000482546 in X_DoExecute () at source/gameexec.c:4080
#5 0x0000000000476e8f in X_DoExecute () at source/gameexec.c:1338
#6 0x000000000048d5e2 in X_DoConditional (condition=1)
at source/gameexec.c:654
#7 0x00000000004824ec in X_DoExecute () at source/gameexec.c:4072
#8 0x0000000000476e61 in X_DoExecute () at source/gameexec.c:1331
#9 0x0000000000476e61 in X_DoExecute () at source/gameexec.c:1331
#10 0x000000000048d97b in A_Execute (iActor=448, iPlayer=0, lDist=12586)
at source/gameexec.c:4472
#11 0x000000000044f44f in G_MoveActors () at source/actors.c:4649
#12 0x000000000045daa8 in G_MoveWorld () at source/actors.c:7652
#13 0x00000000004344c0 in G_DoMoveThings () at source/game.c:12772
#14 0x0000000000431d3e in G_MoveLoop () at source/game.c:12063
#15 0x000000000042fdf0 in app_main (argc=1, argv=0x7fff4fad1ef8)
at source/game.c:11539
#16 0x000000000058249d in main (argc=1, argv=0x7fff4fad1ef8)
---Type <return> to continue, or q <return> to quit---
at src/sdlayer.c:204
(gdb)


Its an SDL problem isn't it?

Qbix
02-01-2009, 04:31 PM
no SDL in any line of your backtrace

Sinner
02-01-2009, 06:08 PM
no SDL in any line of your backtrace

I was making a shot in the dark related to sdlayer.c line 204 at the end of the debug output. However their are several other source files in the output as well.

Plagman
02-01-2009, 06:28 PM
Yeah; I looked at the code and it seems the savegame bits are still far from being x86_64 compatible. Lots of hardcoded sizes when reading and writing stuff to disk (i.e. what caused the problem in your case: kdfread(&actorscrptr[0],4,MAXTILES,fil)). I'll have to give Duke Plus a run on my x86_64 system and fix a bunch of stuff before savegames work properly. In the meantime, you can build a x86 binary and it should work fine (either build it in a chroot on that system assuming you have all he compatibility libs or from another system that's running the same distro in x86 flavour). Sorry...
Qbix: unless you want to give it a run first :p

Sinner
02-01-2009, 06:34 PM
Yeah; I looked at the code and it seems the savegame bits are still far from being x86_64 compatible. Lots of hardcoded sizes when reading and writing stuff to disk (i.e. what caused the problem in your case: kdfread(&actorscrptr[0],4,MAXTILES,fil)). I'll have to give Duke Plus a run on my x86_64 system and fix a bunch of stuff before savegames work properly. In the meantime, you can build a x86 binary and it should work fine (either build it in a chroot on that system assuming you have all he compatibility libs or from another system that's running the same distro in x86 flavour). Sorry...
Qbix: unless you want to give it a run first :p

Its never ending sadly :(

I compiled eduke32 under 32-bit Ubuntu and now the game crashes every time when I try and fire the SMG in dukeplus. Here is the new output

/usr/lib/gio/modules/libgioremote-volume-monitor.so: wrong ELF class: ELFCLASS64
Failed to load module: /usr/lib/gio/modules/libgioremote-volume-monitor.so
/usr/lib/gio/modules/libgiogconf.so: wrong ELF class: ELFCLASS64
Failed to load module: /usr/lib/gio/modules/libgiogconf.so
/usr/lib/gio/modules/libgvfsdbus.so: wrong ELF class: ELFCLASS64
Failed to load module: /usr/lib/gio/modules/libgvfsdbus.so
Caught SIGFPE at address 0x818abd2, code FPE_INTDIV (integer divide by zero). Aborting.
Aborted

Plagman
02-02-2009, 01:00 AM
Sounds like you've got x86_64 libs where they don't belong. Did you copy these manually somehow? I think on x86_64 Ubuntu, /usr/lib (also known as /usr/lib32) is for x86 compatibility libraries while the actual x86_64 libs go in /usr/lib64. I think it's the opposite for Red Hat, though I might be mixing the two. Make sure what I said is accurate and replace those libs with ones from the same path on your Ubuntu x86 system. Then EDuke32 shouldn't freak out when loading them.

Qbix
02-02-2009, 03:37 AM
thought I had saving and loading working at some point of time.:confused:

Plagman
02-02-2009, 06:04 AM
At the time, did we try saving and loading with a mod that uses EDuke32 CON files? That's what this crash is related to.

Qbix
02-02-2009, 09:21 AM
I don't recall clearly. I had dukeplus installed, but didn't know if I tried saving in there.

Sinner
02-02-2009, 10:05 AM
I don't recall clearly. I had dukeplus installed, but didn't know if I tried saving in there.

Saving and loading works on 64-bit, saving and loading on dukeplus is broken with 64-bit. I copied the x86 lib from 32-bit ubuntu and I received the same error when I attempted to shot the SMG machine gun.

Caught SIGFPE at address 0x818abd2, code FPE_INTDIV (integer divide by zero). Aborting.
Aborted

Bear with me, I am going to get a gdb output with the new error, but right now I have to go to college....... darn I have a life. :D