Duke4.net Forums: eduke32 crash issue - Duke4.net Forums

Jump to content

Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

eduke32 crash issue  "game crash"

#1

Hello, i just want to know is anybody have the same issue as I?

The game crashes both on hrp and grp when i try to quit security cameras view.
Tried many different settings, everything works fine except that bug with cameras.

My config Ubuntu 9.10
Linux LinuxOS 2.6.31-17-generic-pae #54-Ubuntu SMP Thu Dec 10 17:23:29 UTC 2009 i686 GNU/Linux

Gf GTX275
Core 2 Duo E6600
4Gb ram

last 10 line from eduke32.log:

Setting video mode 800x600 (32-bpp windowed)
OpenGL Information:
Version: 3.2.0 NVIDIA 190.53
Vendor: NVIDIA Corporation
Renderer: GeForce GTX 275/PCI/SSE2
Cache contains 3404 bytes of garbage data
Initializing music...
Initializing sound...
EOF: EDuke32
Cache time: 2487ms


My last actions
1. Start eduke32 with HRP support
2. Load last saved game near security cameras.
3. Use terminal
4. Try to get back from terminal
5. Game crashed.

With Regards and thanks in advance.
0

User is offline   The Commander 

  • I used to be a Brown Fuzzy Fruit, but I've changed bro...

#2

It probably would help if you posted the whole of the eduke32 log, I do know that the was some sort security camera issue that was fixed with Linux some time last month.
0

#3

View PostThe Commander, on Dec 30 2009, 08:17 AM, said:

It probably would help if you posted the whole of the eduke32 log, I do know that the was some sort security camera issue that was fixed with Linux some time last month.


EDuke32 2.0.0devel 20091215
Application parameters: -g Duke3D.grp -h duke3d_hrp.zip
addsearchpath(): Added /tmp/123/eduke32/polymer/eduke32/
addsearchpath(): Added /home/dukie/.eduke32/
Initializing SDL system interface (compiled against SDL version 1.2.13, found version 1.2.13)
Loading libGL.so.1
Loading libGLU.so.1
Using "x11" video driver
Using config file 'eduke32.cfg'.
Scanning for GRP files...
Warning: could not find main group file 'duke3d.grp'!
Using group file 'Duke3D.grp'.
Using group file 'duke3d_hrp.zip'.
Compiling: GAME.CON (151190 bytes)
Including: DEFS.CON (35992 bytes)
Including: USER.CON (45482 bytes)
GAME.CON: In actor `ORGANTIC':
GAME.CON:3968: warning: found `else' with no `if'.
GAME.CON: In state `pigshootenemystate':
GAME.CON:5891: warning: found `else' with no `if'.
Found 2 warning(s), 0 error(s).
Resizing code buffer to 16187*4 bytes
Script compiled in 19ms
Compiled code size: 16179*4 bytes, version 1.4+
Pointer bitmap size: 2024 bytes
1918/11264 labels, 321/2048 variables
125/16384 quotes, 0 quote redefinitions
0/88 event definitions, 207 defined actors
Initialized 32.0M cache
Loading 'duke3d.def'
Definitions file 'duke3d.def' loaded.
RTS file DUKE.RTS was not found
Initializing OSD...
0 joystick(s) found
Setting video mode 800x600 (32-bpp windowed)
OpenGL Information:
Version: 3.2.0 NVIDIA 190.53
Vendor: NVIDIA Corporation
Renderer: GeForce GTX 275/PCI/SSE2
Cache contains 3404 bytes of garbage data
Initializing music...
Initializing sound...

That's all i've got in eduke32.log...
0

User is offline   LeoD 

  • Duke4.net topic/3513

#4

This is a known issue with the GNU C-compiler rev4.4.x. However, you seem to be the first one to encounter this on a LINUX machine.

http://forums.duke4.net/index.php?showtopi...60&start=60

Try to build build eduke32 with gcc-4.3.x.
0

#5

View PostLeoD, on Dec 30 2009, 08:38 AM, said:

This is a known issue with the GNU C-compiler rev4.4.x. However, you seem to be the first one to encounter this on a LINUX machine.

http://forums.duke4.net/index.php?showtopi...60&start=60

Try to build build eduke32 with gcc-4.3.x.



Tried with gcc-4.3 and even with gcc-4.2 the same problem.

compiled with DEBUG mode, gdb output:

Temporary breakpoint 1, 0x081ade83 in main ()
Continuing.
[New Thread 0xa6172b70 (LWP 12776)]
[Thread 0xa6172b70 (LWP 12776) exited]
[New Thread 0xa6172b70 (LWP 12777)]
[New Thread 0xa5971b70 (LWP 12778)]

Program received signal SIGSEGV, Segmentation fault.
0x08141f07 in squarerotatetile ()

void squarerotatetile(int16_t tilenume) in engine.c source file.

is there any solution from developers how to correct this function for correct work?
0

#6

sorry, forgot to rebuild object file with gcc-4.3, now it seems to work fine. Thanks for advices.
Regards
0

#7

i don't know, maybe this information will help someone with gcc-4.4.x:

in eduke32/source/premap.c line number 541 in function "xyzmirror(int32_t i,int32_t wn)"
in line:

squarerotatetile(wn);

need to comment this line with two slashes should look as follow:

//squarerotatetile(wn);

This function will be called only when you are trying to use security cameras. Inside this function there are asm inserts. They are trying to swap some data by wrong addresses in memory. I don't know what exactly this function doing, but after excluding it from code. game start to work fine even with gcc-4.4.x.

Reagards.
0

User is offline   LeoD 

  • Duke4.net topic/3513

#8

Fix/Workaround confirmed for WinXP/GCC 4.4.1 TDM-1.
Good work, dd. Should be helpful to the eduke developers.
0

User is offline   porcho 

#9

Changing gcc version didn't work, but dungeonduke's workaround worked just fine under Ubuntu 9.10 as well.

Thanks!
0

User is offline   TerminX 

  • el fundador

  #10

It looks like the botched optimizations by gcc can by bypassed by disabling them for that specific function; replace squarerotatetile in engine.c with this:

//
// squarerotatetile
//
#ifdef __GNUC__
#define GCC_VERSION (__GNUC__ * 10000 + __GNUC_MINOR__ * 100 + __GNUC_PATCHLEVEL__)
#if (GCC_VERSION >= 40400)
#pragma GCC optimize("0")
#endif
#endif
void squarerotatetile(int16_t tilenume)
{
	int32_t siz;

	//supports square tiles only for rotation part
	if ((siz = tilesizx[tilenume]) == tilesizy[tilenume])
	{
		int32_t i = siz-1;

		for (; i>=0; i--)
		{
			int32_t j=(i>>1)-1;
			char *ptr1 = (char *)(waloff[tilenume]+i*(siz+1)), *ptr2 = ptr1;
			if (i&1) swapchar(--ptr1, (ptr2 -= siz));
			for (; j>=0; j--) swapchar2((ptr1 -= 2), (ptr2 -= (siz<<1)), siz);
		}
	}
}
#ifdef __GNUC__
#if (GCC_VERSION >= 40400)
#pragma GCC reset_options
#endif
#undef GCC_VERSION
#endif

Who knows what gcc is doing wrong, but this will work until a future version fixes it. I was hoping that shuffling things around in the function by hand a bit would trip up whatever optimization is faulty and allow things to work without disabling optimizations for the function altogether, but no go.
0

Share this topic:


Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic


All copyrights and trademarks not owned by Voidpoint, LLC are the sole property of their respective owners. Play Ion Fury! ;) © Voidpoint, LLC

Enter your sign in name and password


Sign in options