EpochModTeam / Epoch

Epoch Survival Game Mode for ARMA 3
http://epochmod.com/
Other
92 stars 82 forks source link

epochserver.so - segfault #656

Closed xai1 closed 7 years ago

xai1 commented 7 years ago

Updated one of my servers to the latest version. After changing the epochserver.so the server crashes when the game starts. Already checked the issue #644 and tried the epochserver.so provided there but without luck.

RPT error before crash. 19:25:50 "Epoch: Starting ArmA3 Epoch Server, Version 0.4.0.0" terminate called after throwing an instance of 'char const*'

output ldd epochserver.so linux-gate.so.1 (0xe5600000) libstdc++.so.6 => /usr/lib/i386-linux-gnu/libstdc++.so.6 (0xe53f0000) libm.so.6 => /lib/i386-linux-gnu/i686/cmov/libm.so.6 (0xe53aa000) libc.so.6 => /lib/i386-linux-gnu/i686/cmov/libc.so.6 (0xe51fc000) /lib/ld-linux.so.2 (0xe5601000) libgcc_s.so.1 => /lib/i386-linux-gnu/libgcc_s.so.1 (0xe51df000)

/var/log/message

kernel: arma3server[9892]: segfault at fdcddcc6 ip 00000000fdcddcc6 sp 00000000df1fc2e8 error 14

System is running Debian 8.6.

vbawol commented 7 years ago

Hello @xai1

This is the only occurrence of 'char const*' I can find in our code: https://github.com/EpochModTeam/EpochServer/blob/master/src/external/ConfigFile.cpp#L4

Seems like this is likely related to the config file and from a quick first look at the code it maybe that we are not accounting for unix line endings properly. You can test this by converting your epochserver.ini to use windows line endings (unix2dos) and try starting the server again.

xai1 commented 7 years ago

Hi @vbawol Thanks for you fast feedback. Converting the config didn't help. I am still getting the same error.

vbawol commented 7 years ago

I will see if I can reproduce this on my dev server this week. @denisio, @Fank can either of you guys offer any advice here?

xai1 commented 7 years ago

@vbawol Thx. If you need any more input from my side, let me know it.

denisio commented 7 years ago

More ouput from: $ dpkg --list | grep i386 $ ldd --version $ uname -a $ ldd arma3server

xai1 commented 7 years ago

@denisio

dpkg --list | grep i386 ii gcc-4.9-base:i386 4.9.2-10 i386 GCC, the GNU Compiler Collection (base package) ii libc6:i386 2.19-18+deb8u6 i386 GNU C Library: Shared libraries ii libc6-dev-i386 2.19-18+deb8u6 amd64 GNU C Library: 32-bit development libraries for AMD64 ii libc6-i386 2.19-18+deb8u6 amd64 GNU C Library: 32-bit shared libraries for AMD64 ii libc6-i686:i386 2.19-18+deb8u6 i386 GNU C Library: Shared libraries [i686 optimized] ii libgcc1:i386 1:4.9.2-10 i386 GCC support library ii libstdc++6:i386 4.9.2-10 i386 GNU Standard C++ Library v3 ii libtbb2 4.2~20140122-5 i386 parallelism library for C++ - runtime files

ldd --version ldd (Debian GLIBC 2.19-18+deb8u6) 2.19 Copyright (C) 2014 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. Written by Roland McGrath and Ulrich Drepper.

uname -a Linux 3.14.32-xxxx-grs-ipv6-64 #1 SMP Sat Feb 7 11:35:27 CET 2015 x86_64 GNU/Linux

ldd arma3server linux-gate.so.1 (0xef79d000) libpthread.so.0 => /lib/i386-linux-gnu/i686/cmov/libpthread.so.0 (0xef775000) librt.so.1 => /lib/i386-linux-gnu/i686/cmov/librt.so.1 (0xef76c000) libdl.so.2 => /lib/i386-linux-gnu/i686/cmov/libdl.so.2 (0xef766000) libsteam_api.so => /home/tcagame/testing/161/./libsteam_api.so (0xef73d000) libPhysX3_x86.so => /home/tcagame/testing/161/./libPhysX3_x86.so (0xef479000) libPhysX3Common_x86.so => /home/tcagame/testing/161/./libPhysX3Common_x86.so (0xef30a000) libPhysX3Cooking_x86.so => /home/tcagame/testing/161/./libPhysX3Cooking_x86.so (0xef2db000) libstdc++.so.6 => /usr/lib/i386-linux-gnu/libstdc++.so.6 (0xef1e8000) libm.so.6 => /lib/i386-linux-gnu/i686/cmov/libm.so.6 (0xef1a2000) libgcc_s.so.1 => /lib/i386-linux-gnu/libgcc_s.so.1 (0xef185000) libc.so.6 => /lib/i386-linux-gnu/i686/cmov/libc.so.6 (0xeefd8000) /lib/ld-linux.so.2 (0xef79e000)

epochserver.ini content

[EpochServer] BattlEyePath = /home/tcagame/testing/161/battleye InstanceID = 161

[Redis] IP = 87.xx Port = 6389 DB = 0 Password = 8c5273178

[SteamAPI] Key = VACBanned = 0 VACMinimumNumberOfBans = 0 VACMaximumDaysSinceLastBan = 0

do you need the epochserver.ini attached? or is it only about the content?

denisio commented 7 years ago

Try to download http://epocher.ru/epochhive.tgz and unpack to @epochhive/

Check ldd epochserver.so

I think that static build on Ubuntu?? is not compatible with Debian (libc6 versions).

vbawol commented 7 years ago

Thought, I built it on Debian 8.6...? but now that I check my dev server: lsb_release -da

Distributor ID: Debian Description: Debian GNU/Linux 7.11 (wheezy) Release: 7.11

@denisio, What version did you build against was it Debian 6.8 or 8.6?

Thanks for looking into it @denisio!

xai1 commented 7 years ago

@denisio Thx for your help. ldd epochserver.so linux-gate.so.1 (0xf6b0f000) libhiredis.so.0.10 => not found libpcre.so.3 => not found libstdc++.so.6 => /usr/lib/i386-linux-gnu/libstdc++.so.6 (0xf692e000) libm.so.6 => /lib/i386-linux-gnu/i686/cmov/libm.so.6 (0xf68e8000) libgcc_s.so.1 => /lib/i386-linux-gnu/libgcc_s.so.1 (0xf68cb000) libc.so.6 => /lib/i386-linux-gnu/i686/cmov/libc.so.6 (0xf671e000) /lib/ld-linux.so.2 (0xf6b10000)

rpt: 10:06:57 "Epoch: Starting ArmA3 Epoch Server, Version 0.4.0.0" 10:06:57 "Epoch: Server DLL mismatch! Current: Needed: 0.5.1.8"

denisio commented 7 years ago

$ export LD_LIBRARY_PATH=.:$LD_LIBRARY_PATH $ ls -l @epochhive/lib* libhiredis.so -> libhiredis.so.0.10 libhiredis.so.0.10 libpcre.so.3 -> libpcre.so.3.13.1 libpcre.so.3.13.1

I do "apt-get upgrade" and "apt-get dist-upgrade". $ cat /etc/debian_version 8.6

Why is "DLL mismatch" ?? $ git clone https://github.com/EpochModTeam/EpochServer.git

xai1 commented 7 years ago

@denisio I copied the files you provided earlier again to the server and it seems to be ok now. Sry seems like I did something wrong. Thank you very much for your help!

vbawol commented 7 years ago

Turns out it was Ubuntu, So I got a new dev server running Debian 8.6 and recompiled epochserver.so @xai1 can you test this version if you have the time: https://github.com/EpochModTeam/Epoch/raw/9d54517986140a263ceddc2e3cbba7127c1ed2b5/Server_Install_Pack/%40epochhive/epochserver.so

@denisio do you foresee any issues with statically linking pcre and hiredis?

denisio commented 7 years ago

I have not tested this but the libc6 downgrade need lowest version (Debian build for example).

xai1 commented 7 years ago

@vbawol still getting the same issue. Just to make sure, I only need the epochserver.so in @epochhive, right?

vbawol commented 7 years ago

@xai1 yes that was the goal. However, I think I will go back to compiling with shared libs on Linux as I noticed that libpthread.so.0 was not linked and is likely a dependency of libhiredis or libpcre.

Rebuilt with -lhiredis -lpcre https://github.com/EpochModTeam/Epoch/raw/57a5ec6edf8950daff22e604b114bbb82cfb93bd/Server_Install_Pack/%40epochhive/epochserver.so

ldd epochserver.so linux-gate.so.1 (0xb7700000) libhiredis.so.0.10 => /usr/lib/i386-linux-gnu/libhiredis.so.0.10 (0xb7609000) libpcre.so.3 => /lib/i386-linux-gnu/libpcre.so.3 (0xb7596000) libstdc++.so.6 => /usr/lib/i386-linux-gnu/libstdc++.so.6 (0xb74a3000) libm.so.6 => /lib/i386-linux-gnu/i686/cmov/libm.so.6 (0xb745d000) libgcc_s.so.1 => /lib/i386-linux-gnu/libgcc_s.so.1 (0xb7440000) libc.so.6 => /lib/i386-linux-gnu/i686/cmov/libc.so.6 (0xb7293000) libpthread.so.0 => /lib/i386-linux-gnu/i686/cmov/libpthread.so.0 (0xb7277000) /lib/ld-linux.so.2 (0xb7703000)

If it does not work, try installing: apt-get install libhiredis-dev libpcre3-dev

Otherwise, I guess we will need to also ship the libhiredis.so libpcre.so.3 files as we did before?

xai1 commented 7 years ago

@vbawol I am not able to test it before Friday, sry. Will let you know as soon as I have been able to test it

vbawol commented 7 years ago

Not sure why it is proving to be so difficult for me to setup a new arma 3 1.64 linux server. Both Debian 8.6 and Ubuntu 16.04 are setup the same way: https://community.bistudio.com/wiki/Arma_3_Dedicated_Server#Instructions_.28Linux_o.2Fs.29

...
15:57:57 BattlEye Server: Initialized (v1.214)
15:57:57 VoteThreshold must be in 0..1 range. Defaulting to 0.5
15:57:57 Host identity created.
[S_API FAIL] SteamAPI_Init() failed; SteamAPI_IsSteamRunning() failed.
[New Thread 0xb762ab40 (LWP 21369)]

...
15:57:58  Mission world: Altis
15:57:58  Mission directory: mpmissions\oneplayer.Altis\
[New Thread 0xa12fdb40 (LWP 21375)]
15:58:04 Strange convex component145 in a3\plants_f\tree\t_pinuss2s_b_f.p3d:geometryView
15:58:04 Strange convex component149 in a3\plants_f\tree\t_pinuss2s_b_f.p3d:geometryView
Attempt to override final function - bis_functions_list
Attempt to override final function - bis_functions_listpreinit
Attempt to override final function - bis_functions_listpostinit
Attempt to override final function - bis_functions_listrecompile
Attempt to override final function - bis_fnc_missiontaskslocal
Attempt to override final function - bis_fnc_missionconversationslocal
Attempt to override final function - bis_fnc_missionflow
15:58:10 Loading movesType CfgGesturesMale
15:58:10 MovesType CfgGesturesMale load time 137 ms
15:58:10 Loading movesType CfgMovesMaleSdr
15:58:18 MovesType CfgMovesMaleSdr load time 7554 ms
15:58:18 Mission read.
15:58:18 Connected to Steam servers

Thread 1 "arma3server" received signal SIGSEGV, Segmentation fault.
0xb77d88a6 in fread () from /lib/i386-linux-gnu/libc.so.6

Both crash with segfault (libc.so.6) while using no mods and just a simple mission file.

xai1 commented 7 years ago

@vbawol sry for my late reply. Haven't been able to test it earlier.

Intsalled: libhiredis-dev libpcre3-dev

ldd epochserver.so linux-gate.so.1 (0xe3d43000) libhiredis.so.0.10 => not found libpcre.so.3 => not found libstdc++.so.6 => /usr/lib/i386-linux-gnu/libstdc++.so.6 (0xe3b61000) libm.so.6 => /lib/i386-linux-gnu/i686/cmov/libm.so.6 (0xe3b1b000) libgcc_s.so.1 => /lib/i386-linux-gnu/libgcc_s.so.1 (0xe3afe000) libc.so.6 => /lib/i386-linux-gnu/i686/cmov/libc.so.6 (0xe3951000) /lib/ld-linux.so.2 (0xe3d44000)

I get the following error: 18:03:07 "Epoch: Server DLL mismatch! Current: Needed: 0.5.1.8"

I guess this happend because it is missing libhiredis.so.0.10 and libpcre.so.3?

vbawol commented 7 years ago

yes @xai1 looks like it, as of this comment I have readded these two files: https://github.com/EpochModTeam/Epoch/commit/7913ee0ea78782184ca24821d6f64a4ba385c800

I will work more on the static epochserver.so build again after I get my dev environment sorted and running. Thanks for the help testing!

xai1 commented 7 years ago

@vbawol let me know as soon as I can help you with testing.

vbawol commented 7 years ago

@xai1 are you still running a Linux Epoch server? If so I have some new extensions to test out. These are built using holy build box and should be compatible with a wider range of distros.

32bit Linux: https://github.com/EpochModTeam/Epoch/blob/experimental/Server_Install_Pack/@epochhive/epochserver.so?raw=true 64bit Linux: https://github.com/EpochModTeam/Epoch/blob/experimental/Server_Install_Pack/@epochhive/epochserver_x64.so?raw=true

These binaries should work on pretty much any glibc-based x86 and x86-64 Linux distribution released in the last ten years.

Debian >= 6 Ubuntu >= 10.04 Red Hat Enterprise Linux >= 5 CentOS >= 5

32bit ldd linux-gate.so.1 => (0xf7790000) libm.so.6 => /lib/libm.so.6 (0xf75ca000) libgcc_s.so.1 => /lib/libgcc_s.so.1 (0xf75ba000) libc.so.6 => /lib/libc.so.6 (0xf745a000) /lib/ld-linux.so.2 (0x565d4000)

64bit ldd linux-vdso.so.1 => (0x00007fffcd204000) libm.so.6 => /lib64/libm.so.6 (0x00007fa2b24f2000) libgcc_s.so.1 => /lib64/libgcc_s.so.1 (0x00007fa2b22e2000) libc.so.6 => /lib64/libc.so.6 (0x00007fa2b1f82000) /lib64/ld-linux-x86-64.so.2 (0x000055796a4e5000)

vbawol commented 7 years ago

Please open a new issue if you have any problems after 0.5 drops.