borzh / botrix

Source code for Half-Life 2: Deathmatch bots.
37 stars 14 forks source link

Unable to load .so file #4

Closed PlayBoy31 closed 4 years ago

PlayBoy31 commented 4 years ago

Hello,

Tried your plugin but can load: " failed to dlopen /games/steam/servers/hl2mp_ds/hl2mp/addons/botrix.so error=bin/libstdc++.so.6: version `CXXABI_1.3.9' not found (required by /games/steam/servers/hl2mp_ds/hl2mp/addons/botrix.so)"

=> apt-get install libstdc++6 Reading package lists... Done Building dependency tree Reading state information... Done libstdc++6 is already the newest version (8.3.0-6). 0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.

same for i386

I think libstdc++ should be statically linked

joeltimothyoh commented 4 years ago

I'm getting this error on linux as well.

It seems like hl2mp uses a different version of libstdc++.so.6 in its bin/ directory:

$ apt-get update && apt-get install binutils
$ cd hl2mp_ds/
$ strings bin/libstdc++.so.6 | grep CXXABI_
CXXABI_1.3
CXXABI_1.3.1
CXXABI_1.3.2
CXXABI_1.3.3
CXXABI_1.3.4
CXXABI_1.3.5
CXXABI_1.3
CXXABI_1.3.2
CXXABI_1.3.1
CXXABI_1.3.5
CXXABI_1.3.4
CXXABI_1.3.3

libstdc++.so.6 on ubuntu 16.04:

$ strings /usr/lib/x86_64-linux-gnu/libstdc++.so.6 | grep CXXABI_
CXXABI_1.3
CXXABI_1.3.1
CXXABI_1.3.2
CXXABI_1.3.3
CXXABI_1.3.4
CXXABI_1.3.5
CXXABI_1.3.6
CXXABI_1.3.7
CXXABI_1.3.8
CXXABI_1.3.9
CXXABI_TM_1
CXXABI_FLOAT128

I tried to symlink the OS's libstdc++.so.6 binary within the game's bin/ directory:

$ mv bin/libstdc++.so.6 bin/libstdc++.so.6.bak
$ ln -sf /usr/lib/x86_64-linux-gnu/libstdc++.so.6 bin/libstdc++.so.6
$ ./srcds_linux -game hl2mp -maxplayers 16 +map dm_lockdown
Using Breakpad minidump system. Version: 5394425 AppID: 232370
Setting breakpad minidump AppID = 232370
Using breakpad crash handler
Loaded 11 VPK file hashes from /server/hl2mp/hl2mp_pak.vpk for pure server operation.
Loaded 11 VPK file hashes from /server/hl2mp/hl2mp_pak.vpk for pure server operation.
Loaded 1218 VPK file hashes from /server/hl2/hl2_textures.vpk for pure server operation.
Loaded 574 VPK file hashes from /server/hl2/hl2_sound_vo_english.vpk for pure server operation.
Loaded 383 VPK file hashes from /server/hl2/hl2_sound_misc.vpk for pure server operation.
Loaded 446 VPK file hashes from /server/hl2/hl2_misc.vpk for pure server operation.
Loaded 5 VPK file hashes from /server/platform/platform_misc.vpk for pure server operation.
ConVarRef mat_dxlevel doesn't point to an existing ConVar
server_srv.so loaded for "Half-Life 2 Deathmatch"
[Botrix] Cannot open interface VDebugOverlay003
[Botrix] Looking for configuration file /server/hl2mp/addons/botrix/config.ini
[Botrix]   found.
[Botrix] Console log level: info.
[Botrix] Log to file: botrix.log.
[Botrix] File log level: none.
[Botrix] File /server/hl2mp/addons/botrix/config.ini:
Segmentation fault (core dumped)

Also tried exporting LD_LIBRARY_PATH with the parent directory path of the OS's libraries via the following command and starting the server but with the same results as above:

$ export LD_LIBRARY_PATH=.:/usr/lib/x86_64-linux-gnu:bin

I'm using Botrix v1.0.0.

borzh commented 4 years ago

Thanks for reporting it guys, I will check it out and will let you know.

borzh commented 4 years ago

Ok, I fixed it in both 1.0.0 and 1.0.1 versions (it is statically linked now), let me know if it works for you.

joeltimothyoh commented 4 years ago

Getting crashes now on linux for hl2mp, exit code 139:

Using Breakpad minidump system. Version: 5394425 AppID: 232370
Setting breakpad minidump AppID = 232370
Using breakpad crash handler
Loaded 11 VPK file hashes from /server/hl2mp/hl2mp_pak.vpk for pure server operation.
Loaded 11 VPK file hashes from /server/hl2mp/hl2mp_pak.vpk for pure server operation.
Loaded 1218 VPK file hashes from /server/hl2/hl2_textures.vpk for pure server operation.
Loaded 574 VPK file hashes from /server/hl2/hl2_sound_vo_english.vpk for pure server operation.
Loaded 383 VPK file hashes from /server/hl2/hl2_sound_misc.vpk for pure server operation.
Loaded 446 VPK file hashes from /server/hl2/hl2_misc.vpk for pure server operation.
Loaded 5 VPK file hashes from /server/platform/platform_misc.vpk for pure server operation.
ConVarRef mat_dxlevel doesn't point to an existing ConVar
server_srv.so loaded for "Half-Life 2 Deathmatch"
[Botrix] Cannot open interface VDebugOverlay003
[Botrix] Looking for configuration file /server/hl2mp/addons/botrix/config.ini
[Botrix]   found.
[Botrix] Console log level: info.
[Botrix] Log to file: botrix.log.
[Botrix] File log level: none.
[Botrix] File /server/hl2mp/addons/botrix/config.ini:
Segmentation fault (core dumped)
PlayBoy31 commented 4 years ago

Load ok for me now on 1.0.1 (linux)

Loaded plugins: 0: "Botrix plugin 1.0.1 (c) 2012 by Borzh. BUILD Apr 26 2020"

borzh commented 4 years ago

Getting crashes now on linux for hl2mp, exit code 139:

[Botrix] File /server/hl2mp/addons/botrix/config.ini:
Segmentation fault (core dumped)

Looks like it tries to show some error in config.ini, but crashes... can you attach it?

borzh commented 4 years ago

Hmm, just tried to launch dedicated server in /server folder, as you have.

Here is what I get in the console:

Using default binary: ./srcds_linux
Server will auto-restart if there is a crash.
ERROR: ld.so: object 'libgtk3-nocsd.so.0' from LD_PRELOAD cannot be preloaded (cannot open shared object file): ignored.
Using Breakpad minidump system. Version: 5394425 AppID: 232370
Setting breakpad minidump AppID = 232370
Using breakpad crash handler
Loaded 11 VPK file hashes from /server/hl2mp/hl2mp_pak.vpk for pure server operation.
Loaded 11 VPK file hashes from /server/hl2mp/hl2mp_pak.vpk for pure server operation.
Loaded 1218 VPK file hashes from /server/hl2/hl2_textures.vpk for pure server operation.
Loaded 574 VPK file hashes from /server/hl2/hl2_sound_vo_english.vpk for pure server operation.
Loaded 383 VPK file hashes from /server/hl2/hl2_sound_misc.vpk for pure server operation.
Loaded 446 VPK file hashes from /server/hl2/hl2_misc.vpk for pure server operation.
Loaded 5 VPK file hashes from /server/platform/platform_misc.vpk for pure server operation.
ConVarRef mat_dxlevel doesn't point to an existing ConVar
server_srv.so loaded for "Half-Life 2 Deathmatch"
[Botrix] Cannot open interface VDebugOverlay003
[Botrix] Looking for configuration file /server/hl2mp/addons/botrix/config.ini
[Botrix]   found.
[Botrix] Console log level: info.
[Botrix] Log to file: botrix.log.
[Botrix] File log level: info.
[Botrix] File /server/hl2mp/addons/botrix/config.ini:
[Botrix]   There is no mod that matches current game (server) & mod (hl2mp) folders.
[Botrix]   Using default mod 'HalfLife2Deathmatch'.
[Botrix] Botrix loaded. Current mod: HalfLife2Deathmatch.

I could play without issues with bots, I am using Ubuntu 18.04 LTS.

Let me know your OS details.

joeltimothyoh commented 4 years ago

I could play without issues with bots, I am using Ubuntu 18.04 LTS.

Let me know your OS details.

Ubuntu 16.04 on docker. The crashes could be due to some missing dependency packages. Seems like v1.0.1 is working well for both of you. I’ll have to look into what’s causing the crashes on my setup.

borzh commented 4 years ago

I don't think the crash is because of some dependency, because the plugin is started, printing [Botrix] messages. If you compare my output with yours, it is crashing printing [Botrix] There is no mod that matches current game (server) & mod (hl2mp) folders. but I am not sure why...

joeltimothyoh commented 4 years ago

I've managed to get v1.0.1 working on linux.

It turns out the crashes were due to having too many bot names in the config.ini file. I was also using v1.0.0's config.ini though that wasn't the cause.

I'm not sure what the upper limit is exactly on linux as the crashes seem to occur at about 170+ names of a total 1729 characters including 120 whitespace characters in names. I haven't encountered issues with the same list of 300 names of on Windows though.

Thanks for the help @borzh and @PlayBoy31.

borzh commented 4 years ago

Oh I see, actually I am using a buffer of 2048 characters (2Kb) to read values from config.ini, didn't thought I would need more. Windows also have that problem, not sure why it doesn't crash, it should.

Anyway, thanks for letting me know this, I will use a bigger buffer (thinking about 8k would be okay) and also will truncate line if needed (so plugin wouldn't crash). Will release the fix as soon as possible.

@joeltimothyoh can you attach the config.ini you was using (the one with more bot names is better)?

borzh commented 4 years ago

Okay I've managed to fix that issue, it WAS crashing in Windows also. Now the buffer is 8k and if the config value is more than 8k, the value is getting truncated. I uploaded v1.0.1 with the fix.