Jump to content
Sign in to follow this  
Gorch

Segmentation fault with linux dedicated

Recommended Posts

As the topic indicates, the OFP dedicated server (1.91c) first ran on a Suse 8.0 linux system. It worked fine, no problems at all.

After upgrading the linux operating system (Suse 8.0 -> 8.2) the problems started. When trying to start the dedicated server from the console i get

17:28:00 Dedicated server created, memory used: 4296 KB

Segmentation fault

Installing the OFP server from scratch doesnt help, i get the same error. I also tried to install the OFP server on a diffrent machine running Suse 8.2, with the same result.

After reading several topics on 'linux server problems', i tried strace. This are the last lines of output:

open("/lib/libc.so.6", O_RDONLY) = 38

read(38, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0pY\1\000"..., 1024) = 1024

fstat64(38, {st_mode=S_IFREG|0755, st_size=1491599, ...}) = 0

old_mmap(NULL, 1268004, PROT_READ|PROT_EXEC, MAP_PRIVATE, 38, 0) = 0x580dd000

mprotect(0x5820c000, 26916, PROT_NONE) = 0

old_mmap(0x5820c000, 16384, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED, 38, 0x12f000) = 0x5820c000

old_mmap(0x58210000, 10532, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x58210000

close(38) = 0

open("/lib/ld-linux.so.2", O_RDONLY) = 38

read(38, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\200\n\0"..., 1024) = 1024

fstat64(38, {st_mode=S_IFREG|0755, st_size=97518, ...}) = 0

old_mmap(NULL, 83576, PROT_READ|PROT_EXEC, MAP_PRIVATE, 38, 0) = 0x58213000

mprotect(0x58227000, 1656, PROT_NONE) = 0

old_mmap(0x58227000, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED, 38, 0x14000) = 0x58227000

close(38) = 0

--- SIGSEGV (Segmentation fault) @ 0 (0) ---

+++ killed by SIGSEGV +++

I cant figure out what the problem is with this...

Someone noted there may be prolems with some versions of gcc (compiler? library?). Suse 8.2 is using gcc version 3.3 (20030226 prerelease version). Could this be the problem? Is there any way to give the OFP server some other, working version of gcc without having to resetup the whole linux system?

Share this post


Link to post
Share on other sites

The compiler problems were only affecting the compilation of the tolower tool while installing the server, not running it.

Do you know of any changes Suse might have made? Maybe some of those kernel security patches? I have read through the documentation of some of those patches and there are patches that break functionality for example

<table border="0" align="center" width="95%" cellpadding="0" cellspacing="0"><tr><td>Code Sample </td></tr><tr><td id="CODE">

XFree86 still will not operate correctly with this option enabled, so DO NOT CHOOSE Y IF YOU USE XFree86.

or

<table border="0" align="center" width="95%" cellpadding="0" cellspacing="0"><tr><td>Code Sample </td></tr><tr><td id="CODE">

Enabling this feature could make certain apps like VMWare stop working, as they need to write to other locations in /dev/mem.

or (Non-executable Mem-Pages from GR-Security-Patch, seems to be the most likely to me, but i am not really an expert)

<table border="0" align="center" width="95%" cellpadding="0" cellspacing="0"><tr><td>Code Sample </td></tr><tr><td id="CODE">

This will also break programs that rely on the old behaviour and expect that dynamically allocated memory via the malloc() family of functions is executable (which it is not). Notable examples are the XFree86 4.x server, the java runtime and wine.

Try getting an unpatched kernel from ftp.kernel.org and using that... or switch to debian or (even better) gentoo ;)

Share this post


Link to post
Share on other sites

Here is my log on the RH version 9 linux server:

18:32:45 Roles assigned

18:32:45 Reading mission ...

18:33:05 Mission read

18:33:06 Admin [iCM]-Moore logged in.

18:34:07 Game started

18:48:29 Player [iCM]-Moore disconnected

18:48:29 Admin [iCM]-Moore logged out.

18:51:55 Player Cpt Moore connecting

18:52:01 Player Cpt Moore connected (id=195)

Segmentation fault

[root@ ofp]#

It appears they we are also getting this same error on Red HAT 9.

-Adammo

Share this post


Link to post
Share on other sites

For Segmentation Fault user

Is know that the original glibc version 2.3.2 have a bit problems with some applications.

Some new released distro (redhat,suse,....) use the libc customize

and this can give some problem with server ofp.

In the our case first of update distro look for version glibc installed if

>2.3.2 the server start well

This problem is possible resolve only with optimize the source code server ofp for new glibc.

REDHAT 7.3 ---> Ok

REDHAT 8.0 ---> Ok

REDHAT 9.x ---> Failed

SUSE 8.0 -------> Ok

SUSE 8.2 -------> Failed

Getoo -----------> Ok

Trustix 2.0 -----> Failed

Trustix 1.5 ------> OK

Vesuvio [MCY]

Share this post


Link to post
Share on other sites

Vesuvio, are you trying to say that if the version of glibc is LESS than 2.3.2 then the server will work?

2.3.2 is the highest version available so even though your post suggests it. You can't have a higher version than 2.3.2.

I'm getting segmentation faults on my linux box with 2.3.1 btw.

I think it only works with version 2.3 =\

Share this post


Link to post
Share on other sites

No, i think he is trying to say that some distros use modified glibc. Gentoo uses 2.3.2 too and it works there. I seem to recall something about some newer redhat and/or suse distros using threads by default, maybe it's got something to do with that, but i am just guessing here...

Share this post


Link to post
Share on other sites

Ah, I see. Well Mandrake 9.0 doesn't seem to like the server binary either. I'm going to try Debian 3.0 see if that works.

Share this post


Link to post
Share on other sites

The segmentation fault on some Linux system is possible resolve only with optimizing the source code of the server ofp for that glibc.

See Halflife linux server smile_o.gif

Quote[/b] ] » Fixed DMC powerup bug where the invisibility ring would make people glow red.

» Fixed rcon bug in HLTV.

» Fixed delay being reset to default value during changelevel.

» Fixed a problem with propagating HLTV banners.

» Fixed client freeze on exit.

» Fixed framerate problem on some ATI video cards.

» Fixed MaxPing filter not being saved correctly.

» Fixed sky box bug.

» Fixed TFC spy disguise menu bug.

» Fixed DMC view model animation bug.

» Fixed bug using "exec " on large files (e.g. banned.cfg).

» Linux: Fixed server using 64 MB more memory than it needed to.

» Linux: Fixed 'undefined symbol: __strtouq_internal' on some Linux systems.

» Linux: Fixed segmentation fault on some Linux systems

Share this post


Link to post
Share on other sites

I have setup a Windows box for my OFP server until I can get this figured out or BIS releases a server update. With OFP2 coming out on the horizon though, I doubt BIS will do much more for the OFP server sad_o.gif

Share this post


Link to post
Share on other sites
I have setup a Windows box for my OFP server until I can get this figured out or BIS releases a server update. With OFP2 coming out on the horizon though, I doubt BIS will do much more for the OFP server sad_o.gif

There just was a new ofp dedicated (1.94) one day ago. And quite frankly, as much as i love linux, if you use a linux brand that is binary incompatible to the version before you have to live with things like that. There are lots of linux brands that still work, so it's more the fault of the suse/redhat version you use than of bis.

I use gentoo, which always installs the newest versions of everything available and ofp works for me. If suse/redhat use some modified versions which are not compatible (anyone remember redhat using an inofficial gcc version for some versions of their linux?) and you are unhappy about it then switch to a vendor which is compatible...

Share this post


Link to post
Share on other sites

yeah benu  smile_o.gif I agree with you.

The MCY have now 1.94 Linux Server for test wink_o.gif

Vesuvio [McY]

Share this post


Link to post
Share on other sites

Here is a thought..

I run redhat 9 and get the error

I run redhat 8.0 and get the error..

I don't beleive I have gotten the error after a reboot and then start the server... seems clean...

if I stop the server and restart it.. this seems to increase my chance of getting the error..

I sent a strace to BI to look at while I was getting the error and found that the server thought that these ports were still in use.

Maybe the process is not shutting down or timing out prompt enough.. so when then serve is restarted the server crashes..

just a thought.

Share this post


Link to post
Share on other sites

My server (hardware) gets restarted once in a month at max. I have ni problems restarting the ofp server. I have a 5 second pause in the restart script between the killing of the old processes and the starting of the new ones.

Share this post


Link to post
Share on other sites
As the topic indicates, the OFP dedicated server (1.91c) first ran on a Suse 8.0 linux system. It worked fine, no problems at all.

After upgrading the linux operating system (Suse 8.0 -> 8.2) the problems started. When trying to start the dedicated server from the console i get

17:28:00 Dedicated server created, memory used: 4296 KB

Segmentation fault

Installing the OFP server from scratch doesnt help, i get the same error. I also tried to install the OFP server on a diffrent machine running Suse 8.2, with the same result.

After reading several topics on 'linux server problems', i tried strace. This are the last lines of output:

open("/lib/libc.so.6", O_RDONLY)        = 38

read(38, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0pY\1\000"..., 1024) = 1024

fstat64(38, {st_mode=S_IFREG|0755, st_size=1491599, ...}) = 0

old_mmap(NULL, 1268004, PROT_READ|PROT_EXEC, MAP_PRIVATE, 38, 0) = 0x580dd000

mprotect(0x5820c000, 26916, PROT_NONE)  = 0

old_mmap(0x5820c000, 16384, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED, 38, 0x12f000) = 0x5820c000

old_mmap(0x58210000, 10532, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x58210000

close(38)                               = 0

open("/lib/ld-linux.so.2", O_RDONLY)    = 38

read(38, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\200\n\0"..., 1024) = 1024

fstat64(38, {st_mode=S_IFREG|0755, st_size=97518, ...}) = 0

old_mmap(NULL, 83576, PROT_READ|PROT_EXEC, MAP_PRIVATE, 38, 0) = 0x58213000

mprotect(0x58227000, 1656, PROT_NONE)   = 0

old_mmap(0x58227000, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED, 38, 0x14000) = 0x58227000

close(38)                               = 0

--- SIGSEGV (Segmentation fault) @ 0 (0) ---

+++ killed by SIGSEGV +++

I cant figure out what the problem is with this...

Someone noted there may be prolems with some versions of gcc (compiler? library?). Suse 8.2 is using gcc version 3.3 (20030226 prerelease version). Could this be the problem? Is there any way to give the OFP server some other, working version of gcc without having to resetup the whole linux system?

Problem:

Linux Dedicated OFP Server under SuSE8.2 cannot be created.

Error: Segmentation fault

Solution:

<table border="0" align="center" width="95%" cellpadding="0" cellspacing="0"><tr><td>Code Sample </td></tr><tr><td id="CODE">Define dedicated OFP User incl. Home Environment

Useradd ofpadmin -m

<table border="0" align="center" width="95%" cellpadding="0" cellspacing="0"><tr><td>Code Sample </td></tr><tr><td id="CODE">Inst. OFPLinux Server like default into $HOME/ofplinux

<table border="0" align="center" width="95%" cellpadding="0" cellspacing="0"><tr><td>Code Sample </td></tr><tr><td id="CODE">Run unshar server-xxx.shar to install and LowerCase the Directory

<table border="0" align="center" width="95%" cellpadding="0" cellspacing="0"><tr><td>Code Sample </td></tr><tr><td id="CODE">Mkdir $HOME/ofplinux/lib

<table border="0" align="center" width="95%" cellpadding="0" cellspacing="0"><tr><td>Code Sample </td></tr><tr><td id="CODE">Copy the following Libs from Suse8.0  /lib to $HOME/ofplinux/lib, and change Ownership to ofpadmin:users

ld-linux.so.2

libc.so.6

libnss_dns.so.2

libnss_files.so.2

libresolv.so.2

Don't copy them into /lib !!!

Now u must edit the following section in the OFPSERVER Script:

Code:::

++++++++++++++++++++++++++++++++++++++++++++++

   cd ${OFP_DIR}

   echo >>${LOGFILE} "WATCHDOG ($$): [$(date)] Starting server (port ${PORT})..."

   (export LD_LIBRARY_PATH=/home/ofpadmin/ofplinux/lib;${SERVER} >>${LOGFILE} 2>&1 -server -config=${CONFIG} -port=${PORT} -pid=${PIDFILE})

   if [ -f ${RUNFILE} ]; then

echo >>${LOGFILE} "WATCHDOG ($$): [$(date)] Server died, waiting to restart..."

unset LD_LIBRARY_PATH

sleep 5s

   else

echo >>${LOGFILE} "WATCHDOG ($$): [$(date)] Server shutdown intentional, watchdog terminating"

unset LD_LIBRARY_PATH

   fi

done    

;;

++++++++++++++++++++++++++++++++++++++++++++++

Run the Server with user:

Ofpadmin

And Startscript:<table border="0" align="center" width="95%" cellpadding="0" cellspacing="0"><tr><td>Code Sample </td></tr><tr><td id="CODE"> ofpserver start

DON'T DO THIS WITH UR ROOT ACCOUNT!!!!!

PS: I upload the Source Files this evening onto my WebSpace.

This 'workaround' is equivalent to other Linux Distributions.

Ive tested the Server 8h, and it works fine *gg*.

@BIS: plz. upgrade the SERVER binary to libc 2.3.2

Thats it folks!!

Regards,

Shortylaforge

OFP rulez!!!

Share this post


Link to post
Share on other sites
@BIS: plz. upgrade the SERVER binary to libc 2.3.2

OFP works fine on my gentoo using libc 2.3.2. Suse just ships a broken version.

Share this post


Link to post
Share on other sites

But it isn't an only SuSE Problem. Ive heared about RedHat 9 ect...

Its only a workaround for guys which can't change the Linux Distribution like me. biggrin_o.gif

Share this post


Link to post
Share on other sites

Afaik ONLY with new suse and redhat versions. And those two are well-known for modifying core components like kernel, gcc, etc...

Share this post


Link to post
Share on other sites

@ Suma

Please report at developer staff server linux of optimize server for glibc 2.3.2. On Some distro linux not work the server. Look on debug libc.so.6. Thx

Now all the know new linux distro use glibc 2.3.2.

Imao benu

Who have do the tests writed on ? biggrin_o.gif

Vesuvio [MCY]

Share this post


Link to post
Share on other sites

Gentoo uses glibc 2.3.2. OFP works on gentoo. -> OFP works with glibc 2.3.2.

Suse and Redhat modify the kernel/gcc/libc. OFP does not work with Suse and Redhat. -> Use a linux distri that is not broken.

Share this post


Link to post
Share on other sites

You try NSCD demon on.

Now On our server run redhat9.0 we have first update with new glibc package relesead of redhat, (resolve much problems) and after abilitated nscd demon.

Remember Nscd is a daemon that provides a cacheing of glibc and for the passwd, group, and hosts databases through standard libc interfaces, such as getpwnam, getpwuid, getgrnam, getgrgid, gethostbyname, and others. Each cache has a separate TTL (time-to-live) for its data; modifying the local database (/etc/passwd, and so forth) causes the cache to become invalidated within fifteen seconds. Note that the shadow file is specifically not cached. getspnam calls remain uncached as a result.

Vesuvio [McY]

smile_o.gif

Share this post


Link to post
Share on other sites

I just had time (and especially space on my harddrive) to test on gentoo again, and i have to retract my previous statement: ofp does not work there anymore (using glibc -2.3.2-r3).

This does not really affect me, as GDT server is running on debian, but for the record...

BTW: i do not use nscd (never did, even when the server was still running with redhat) and it always worked...

Share this post


Link to post
Share on other sites

Yeah I am having issues aswell, even using; ENV LD_ASSUME_KERNEL=2.4.1; (See first few chapters of SuSe 9.1 Professional Admin Guide for information, maybe try Google aswell on LD_ASSUME_KERNEL)

Get Segmentation Fault when not using -nomap (and it tries to use around 256mb when loading)

Get Sockets error when using -nomap (and it uses exactly 4096 kb when loading)

Server name has no spaces or hyphens, just; twilightofp

I heavily doubt the DNS / hostname is incorrectly setup, is there anything anyone knows of that might be causing the issue though ?

Tried with Firewall off aswell.

Might be due do newer Kernels reserving memory (or LD_ASSUME_KERNEL is doing jack all for ofpserver), and only letting it use 4096 kb (without -nomap) and this thus leads to problems.

I am getting to the point where I am thinking of installing a 2.4.1 Kernel under a http://www.vmware.com virtual machine ?

Any confirmed 100% OFP 1.96 working Linux Distros we know of ? (do I need to dig up Red Hat 7.2 for example) ?

I read that someone in these forums was getting 55fps using SuSe 9.0 (or 9.1) Professional... might be a load of bull, maybe they know something we don't.

Share this post


Link to post
Share on other sites

Using Fedora Core 2/x86_64 here on a 2.6.x kernel with a LD_LIBRARY_PATH "trick" in conjunction with a set of older libs.

That trick is described here: "1.96 on Suse"

And yes, it would be very nice to have the linux server be recompiled with more up to date compilers and libs. Also, to get the 1.96a Win32 fixes in there.

Share this post


Link to post
Share on other sites

I am using gentoo with kernel 2.6.7 (2.6.8 after next server reboot) and LD_LIBRARY_PATH. No problems here. Server uses 111/122mb of memory.

The kernels from redhat and suse are heavily modified with inofficial patches, try a vanilla from ftp.kernel.org. But afaik suse has modified the rest of the distro also, so you may get troubles when using an unmodified linux kernel. You can argue if you want to call suse still linux tounge_o.gif

Share this post


Link to post
Share on other sites

Please sign in to comment

You will be able to leave a comment after signing in



Sign In Now
Sign in to follow this  

×