PDA

Bekijk Volledige Versie : COD 1.1 linux Thuis wel werkend op de VPS Segmentatie fout



bjorn86
12/04/11, 17:00
Beste lezers,
Ik zit met een brandende vraag.
Ik heb het uiteindelijk voor mekaar gekregen om Call of duty op linux te draaien. Alleen wanneer ik op mijn VPS precies hetzelfde doe krijg ik een Segmentatie fout.

Allebei Debian 6.0 (dit was eerst nog verschillend)
Zelfde library's.

Dus kan dat aan het feit liggen dat het een VPS is?

BReady
12/04/11, 17:21
Zou je misschien de exacte logs erbij kunnen plaatsen? (/var/log/syslog). Dat zegt al heel wat meer dan alleen 'segmentatie fout'.

MikeN
12/04/11, 17:23
Beter gewoon even strace installeren en de binary draaien met strace ervoor, dat geeft wat nuttigere info dan een segfault melding uit de dmesg.

bjorn86
12/04/11, 19:22
ok dat wist ik niet ik kom hier morgen op terug :P moet even de game weer uploaden.
zoiezo al fijn van de snelle reactie

Mikey
12/04/11, 19:39
Welk virtualisatie platform gebruikt je vps ? En zijn er bekende limits op open files, sockets, geheugen etc etc ?

bjorn86
14/04/11, 00:16
strace ./start_epic.sh
execve("./start_epic.sh", ["./start_epic.sh"], [/* 16 vars */]) = -1 ENOEXEC (Exec format error)
dup(2) = 3
fcntl64(3, F_GETFL) = 0x8002 (flags O_RDWR|O_LARGEFILE)
fstat64(3, {st_mode=S_IFCHR|0600, st_rdev=makedev(136, 0), ...}) = 0
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb7706000
_llseek(3, 0, 0xbfd51358, SEEK_CUR) = -1 ESPIPE (Illegal seek)
write(3, "strace: exec: Exec format error\n", 32strace: exec: Exec format error
) = 32
close(3) = 0
munmap(0xb7706000, 4096) = 0
exit_group(1) = ?

strace output

MikeN
14/04/11, 09:25
Mjah, je probeert een shell script te starten. Je moet de binary zelf starten als je nuttige uitvoer wil krijgen.

bjorn86
14/04/11, 12:29
Ik weet niet wat je precies bedoelt :) ben nog niet zover met linux. Kun je uitleggen hoe je dat doet?

dit is de sh die ik uitvoer

cd /hdd2/cod;
LD_LIBRARY_PATH=/lib/gcc3:. ./cod_lnxded +set dedicated 2 +set net_port 28960 +set ttycon 0 +exec cfg/epic.cfg +map_rotate &

The-BosS
14/04/11, 15:52
Ik weet niet wat je precies bedoelt :) ben nog niet zover met linux. Kun je uitleggen hoe je dat doet?

dit is de sh die ik uitvoer

cd /hdd2/cod;
LD_LIBRARY_PATH=/lib/gcc3:. ./cod_lnxded +set dedicated 2 +set net_port 28960 +set ttycon 0 +exec cfg/epic.cfg +map_rotate &

Doe dit dan even manueel, dus:


1) cd /hdd2/cod
2) strace ./cod_lnxded +set dedicated 2 +set net_port 28960 +set ttycon 0 +exec cfg/epic.cfg +map_rotate

Let er even op dat je de "&" weg laat zodat hij in de foreground blijft runnen, dat is altijd wat handiger om te debuggen.

bjorn86
15/04/11, 01:08
Doe dit dan even manueel, dus:


1) cd /hdd2/cod
2) strace ./cod_lnxded +set dedicated 2 +set net_port 28960 +set ttycon 0 +exec cfg/epic.cfg +map_rotate

Let er even op dat je de "&" weg laat zodat hij in de foreground blijft runnen, dat is altijd wat handiger om te debuggen.

web:/hdd2/cod# strace ./cod_lnxded +set dedicated 2 +set net_port 28960 +set tty con 0 +exec cfg/epic.cfg +map_rotate
execve("./cod_lnxded", ["./cod_lnxded", "+set", "dedicated", "2", "+set", "net_p ort", "28960", "+set", "ttycon", "0", "+exec", "cfg/epic.cfg", "+map_rotate"], [ /* 16 vars */]) = 0
brk(0) = 0x8973000
access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory)
mmap2(NULL, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb7 784000
access("/etc/ld.so.preload", R_OK) = -1 ENOENT (No such file or directory)
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb7 783000
set_thread_area({entry_number:-1 -> 6, base_addr:0xb7783680, limit:1048575, seg_ 32bit:1, contents:0, read_exec_only:0, limit_in_pages:1, seg_not_present:0, usea ble:1}) = 0
--- SIGSEGV (Segmentation fault) @ 0 (0) ---
+++ killed by SIGSEGV +++
Segmentation fault

Dan krijg ik deze output

Domenico
15/04/11, 01:31
Bjorn het is handig als je de code tags gebruikt.

Mikey
15/04/11, 08:44
Ik heb het je al eerder gevraagd:

Welk virtualisatie platform gebruikt je vps ? En zijn er bekende limits op open files, sockets, geheugen etc etc ?

Beetje zonde van iedereen zijn tijd als blijkt dat je een vps gehuurd hebt met 64MB geheugen oid.....

bjorn86
15/04/11, 14:14
Bjorn het is handig als je de code tags gebruikt.



Is goed zal ik in het vervolg doen.


Ik heb het je al eerder gevraagd:

Welk virtualisatie platform gebruikt je vps ? En zijn er bekende limits op open files, sockets, geheugen etc etc ?

Beetje zonde van iedereen zijn tijd als blijkt dat je een vps gehuurd hebt met 64MB geheugen oid.....

Ik heb een VPS bij tilaa 768MB
http://www.tilaa.nl/pages/vps
Andere details die niet op de site staan zou ik moeten vragen.

Ik heb deze week ook een dedicated opgeleverd gekregen bij leaseweb.
Helaas was het updaten van debian 5.0 naar debian 6.0 fout gaan dus ik kan hem nog niet in gebruik nemen.
Grubloader is kapot gegaan.

Hoop dat je hiermee voldoende info hebt

bjorn86
17/04/11, 20:21
De dedicated heeft exact hetzelfde probleem.....

The-BosS
17/04/11, 20:49
De dedicated heeft exact hetzelfde probleem.....

Probeer eens het volgende:


./hdd2/cod/cod_lnxded +set net_ip XXX.XXX.XXX.XXX +set net_port 28960 +set fs_homepath /hdd2/cod +set sv_savepath /hdd2/cod

en kijk wat dit geeft, je kan ook nog volgende proberen


./hdd2/cod/cod_lnxded +set net_ip XXX.XXX.XXX.XXX +set net_port 28960 +set fs_homepath /hdd2/cod +set sv_savepath /hdd2/cod +exec /hdd2/cod/cfg/epic.cfg

En terug eventueel de fouten hier pasten (gewoon run + strace run)

PS: XXX.XXX.XXX.XXX wel even vervangen door je ip adres ;)

bjorn86
17/04/11, 21:01
Probeer eens het volgende:


./hdd2/cod/cod_lnxded +set net_ip XXX.XXX.XXX.XXX +set net_port 28960 +set fs_homepath /hdd2/cod +set sv_savepath /hdd2/cod

en kijk wat dit geeft, je kan ook nog volgende proberen


./hdd2/cod/cod_lnxded +set net_ip XXX.XXX.XXX.XXX +set net_port 28960 +set fs_homepath /hdd2/cod +set sv_savepath /hdd2/cod +exec /hdd2/cod/cfg/epic.cfg

En terug eventueel de fouten hier pasten (gewoon run + strace run)

PS: XXX.XXX.XXX.XXX wel even vervangen door je ip adres ;)


root@localhost:~# strace ./hdd2/cod/cod_lnxded +set net_ip 94.75.217.67 +set net_port 28960 +set fs_homepath /hdd2/cod +set sv_savepath /hdd2/cod
strace: ./hdd2/cod/cod_lnxded: command not found
root@localhost:~# cd /hdd2/
root@localhost:/hdd2# cd cod/
root@localhost:/hdd2/cod# strace ./cod_lnxded +set net_ip 94.75.217.67 +set net_port 28960 +set fs_homepath /hdd2/cod +set sv_savepath /hdd2/cod
execve("./cod_lnxded", ["./cod_lnxded", "+set", "net_ip", "94.75.217.67", "+set", "net_port", "28960", "+set", "fs_homepath", "/hdd2/cod", "+set", "sv_savepath", "/hdd2/cod"], [/* 15 vars */]) = 0
brk(0) = 0x9474000
access("/etc/ld.so.nohwcap", F_OK) = 0
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb78d9000
access("/etc/ld.so.preload", R_OK) = 0
open("/etc/ld.so.preload", O_RDONLY) = 3
fstat64(3, {st_mode=S_IFREG|S_ISVTX|0777, st_size=0, ...}) = 0
close(3) = 0
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb78d8000
set_thread_area({entry_number:-1 -> 6, base_addr:0xb78d8680, limit:1048575, seg_32bit:1, contents:0, read_exec_only:0, limit_in_pages:1, seg_not_present:0, useable:1}) = 0
--- SIGSEGV (Segmentation fault) @ 0 (0) ---
+++ killed by SIGSEGV +++
Segmentation fault


en bij de 2e



strace ./cod_lnxded +set net_ip 94.75.217.67 +set net_port 28960 +set fs_homepath /hdd2/cod +set sv_savepath /hdd2/cod +exec /hdd2/cod/cfg/epic.cfg
execve("./cod_lnxded", ["./cod_lnxded", "+set", "net_ip", "94.75.217.67", "+set", "net_port", "28960", "+set", "fs_homepath", "/hdd2/cod", "+set", "sv_savepath", "/hdd2/cod", "+exec", "/hdd2/cod/cfg/epic.cfg"], [/* 15 vars */]) = 0
brk(0) = 0x8d9c000
access("/etc/ld.so.nohwcap", F_OK) = 0
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb7738000
access("/etc/ld.so.preload", R_OK) = 0
open("/etc/ld.so.preload", O_RDONLY) = 3
fstat64(3, {st_mode=S_IFREG|S_ISVTX|0777, st_size=0, ...}) = 0
close(3) = 0
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb7737000
set_thread_area({entry_number:-1 -> 6, base_addr:0xb7737680, limit:1048575, seg_32bit:1, contents:0, read_exec_only:0, limit_in_pages:1, seg_not_present:0, useable:1}) = 0
--- SIGSEGV (Segmentation fault) @ 0 (0) ---
+++ killed by SIGSEGV +++
Segmentation fault

The-BosS
17/04/11, 23:41
Het valt mij nu eigenlijk nog maar op moet ik zeggen, maar zie ik het nu goed dat je dit als "root" runt. Want dat is een absolute no-no, begin dus even helemaal opnieuw met je gameserver onder een user account met een fresh download/install met een default config.

bjorn86
18/04/11, 00:46
Hij is weer aan het uploaden van de cd's Battlefield 1942 doet het trouwens wel.
Blijf het wel raar vinden dezelfde manier werkte het bij een andere PC wel..

Wat betekend die strace error nou dan?

The-BosS
18/04/11, 02:58
Battlefield 1942 doet het trouwens wel.

Toch niet onder root mag ik hopen.

bjorn86
18/04/11, 09:47
ook onder een andere user account krijg ik dezelfde error..

Piwi-Web
18/04/11, 09:52
Wat krijg je van melding als je zonder strace de game probeert op te starten? Heb je gcc geinstalleerd? (sorry, ken dat strace niet dus weet niet wat hij wel/niet laat zien :p)

bjorn86
18/04/11, 10:14
Wat krijg je van melding als je zonder strace de game probeert op te starten? Heb je gcc geinstalleerd? (sorry, ken dat strace niet dus weet niet wat hij wel/niet laat zien :p)

Dan krijg je gewoon


Segmentation fault

gcc staat erop v3.4 moest het hebben.


IF YOU HAVE A PROBLEM WITH "LIBSTDC++.SO.5" ...
(This is a frequent-enough problem to merit discussion in the introduction.)

If you are reading this, it's probably because you tried to start your Linux
server and saw this message:

./cod2_lnxded: error while loading shared libraries: libstdc++.so.5:
cannot open shared object file: No such file or directory

COD2 is a C++ program built with gcc 3.3.4, which means it needs a
system library specific to gcc 3.3. Older Linux systems won't have
this installed, and we're starting to see newer Linux distributions that
don't have this either, since they are supplying an incompatible
gcc 3.4 version. The good news is that you can drop the needed library
into your system without breaking anything else.

Here is the library you need, if your Linux distribution doesn't supply it:
http://icculus.org/updates/cod/gcc3-libs.tar.bz2

You want to unpack that somewhere that the dynamic linker will see it
(if you are sure it won't overwrite any files, you can even use /lib).

The brave can put it in the same directory as the game and run the server
like this:
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:. ./cod2_lnxded

Now the server will start.
Voor cod2 en 1 geldt hetzelfde

bjorn86
18/04/11, 11:10
Cod versie 1.5 werkt wel.. en ik zet hem weer terug naar 1.1 en hij start..