Comments (18)
try analyze dependencies with ldd and minimize it before running it under box86, half-life does not have too much direct dependencies. maybe need rebuild some depended libraries in minimal configuration or try versions from steam runtime
from box86.
I would like to ask, if there is anything new about running Half-Life on Box86.
I would like to start Half-Life Dedicated Server and try to connect to it from other devices. It would be really great if that was possible, to install SteamCMD, download HL, HLDS and launch it.
If this is possible, could someone please tell me, how to do it? I am completely new to Raspberry Pi4. I tried to install SteamCMD in other emulator, but did not have any luck with it. And I see, that this project is active.
from box86.
I have started experimenting with the full steam client now. I too had very little success with SteamCMD, especialy since to switch to python.
HL client crash for now, but I have tried a server yet.
from box86.
Okay, so... I actually WAS able to launch SteamCMD and install HLDS. I also WAS able to launch HLDS! :) Here are some things I've noticed
-
Installing HLDS in SteamCMD (also with validation) was successful on my second attempt. But
this could actually be, that I wrote something wrongly in my app_update command. (Steam also has a note, that sometimes you have to use that command multiple times so it would successfully install the application/game, so it could also be this case :) ). -
After launching HLDS it was missing file steamclient.so.
Cannot dlopen("/home/pi/.steam/sdk32/steamclient.so"/0xb6c6fbb0, 2)
With this problem, I still could see my HLDS Pi4 server on PC, but when I tried to connect, the server crashed with segmentation fault. I was able to fix this by creating folder sdk32 in folder .steam and linking that file with ln command. After that, I relaunched my server. When I tried to connect after this fix, I was successfully on the server. I could play there as on any regular server! :) After I disconnected and tried to shut down server, I got segmentation fault again, but... well, I was meaning to shut it down anyway so... same effect... :D
-
Only I could connect to my server from my PC. No other devices from any other network could see it. This isn't acutally problem of box86, but of my IP address, so it doesn't matter. :)
-
When I am launching HLDS server now, I still get some errors, but am still able to connect to the server without problems (shutting down still ends with segmentation fault though :( ).
Here is my console log from running server:
pi@raspberrypi:~/Downloads/steamcmd/HLDS $ ./hlds_linux -game valve +maxplayers 16 +map crossfire
Dynarec for ARM, with extension: HALF FAST_MULT EDSP NEON VFPv4 IDIVA
Using default BOX86_LD_LIBRARY_PATH: ./:lib/:lib32/:x86/
Using default BOX86_PATH: ./:bin/
Counted 45 Env var
Looking for ./hlds_linux
Using emulated libstdc++.so.6
Using native(wrapped) libm.so.6
Using native(wrapped) libc.so.6
Using native(wrapped) ld-linux.so.2
Using native(wrapped) libpthread.so.0
Using native(wrapped) librt.so.1
Using emulated libgcc_s.so.1
Using native(wrapped) libdl.so.2
Error: Symbol _ZSt11__once_call not found, cannot apply R_386_TLS_DTPOFF32 @0xb6457d5c ((nil))
Using emulated /home/pi/Downloads/steamcmd/HLDS/engine_i486.so
Using emulated libsteam_api.so
Using emulated /home/pi/Downloads/steamcmd/HLDS/filesystem_stdio.so
Console initialized.
Using breakpad crash handler
Setting breakpad minidump AppID = 70
Forcing breakpad minidump interfaces to load
Using emulated /home/pi/.steam/sdk32/steamclient.so
Looking up breakpad interfaces from steamclient
Calling BreakpadMiniDumpSystemInit
Using emulated /home/pi/Downloads/steamcmd/HLDS/crashhandler.so
scandir failed:/home/pi/Downloads/steamcmd/HLDS/./valve/SAVE
Protocol version 48
Exe version 1.1.2.2/Stdio (valve)
Exe build: 15:16:04 Jul 24 2019 (8308)
STEAM Auth Server
Server IP address _<here is my IP address>_
Using emulated /home/pi/Downloads/steamcmd/HLDS/./valve/dlls/hl.so
[S_API FAIL] SteamAPI_Init() failed; SteamAPI_IsSteamRunning() failed.
CAppInfoCacheReadFromDiskThread took 43 milliseconds to initialize
CApplicationManagerPopulateThread took 10 milliseconds to initialize (will have waited on CAppInfoCacheReadFromDiskThread)
Warning: Cannot dlopen("/home/pi/Downloads/steamcmd/HLDS/steamservice.so"/0xa6a3d2f0, 2)
Warning: Cannot dlopen("steamservice.so"/0xa6a3d2f0, 2)
Using native(wrapped) libSDL2-2.0.so.0
RecordSteamInterfaceCreation (PID 2210): SteamGameServer011 / GameServer
RecordSteamInterfaceCreation (PID 2210): SteamUtils005 / Utils
RecordSteamInterfaceCreation (PID 2210): STEAMAPPS_INTERFACE_VERSION005 / Apps
RecordSteamInterfaceCreation (PID 2210): STEAMHTTP_INTERFACE_VERSION002 / HTTP
RecordSteamInterfaceCreation (PID 2210): SteamNetworking005 / Networking
RecordSteamInterfaceCreation (PID 2210): SteamGameServerStats001 / GameServerStats
Looking up breakpad interfaces from steamclient
Calling BreakpadMiniDumpSystemInit
couldn't exec listip.cfg
couldn't exec banned.cfg
Could not establish connection to Steam servers.
say TEST
<Half-Life> TEST
Reconnected to Steam servers.
VAC secure mode is activated.
PrcoKillerSK: Connected! So I came here, and I got here, and I wrote here, and here I aaaam! :)
Dropped PrcoKillerSK from server
Reason: Client sent 'drop'
say Time to shut down
<Half-Life> Time to shut down
shutdownserver
configstore.cpp (121) : Assertion Failed: ConfigStore (InstallConfigStore) is dirty, and being destroyed, we're discarding data
configstore.cpp (121) : Assertion Failed: ConfigStore (InstallConfigStore) is dirty, and being destroyed, we're discarding data
Segmentation fault
As you can see in this log, it can not find some symbol _ZSt11__once_call. Any ideas, what it is please? Maybe some missing or outdated library?
It is also missing file steamservice.so for some reason. This is something I've actually didn't notice yesterday, so either I didn't notice it or it appeared just today.
Segmentation fault at the end... :(
But still, was able to connect, was able to play! :)
- About performance. Many friends who knew I was going to try this, were afraid, that when I connect to this box86 HLDS server, it is gonna be lagging as hell... NOPE! :) My ping was about 5, 9, 10... Only sometimes it went up to 100 for a moment (could be because I am connected to Wi-Fi on my Raspberry). So at least for now, I don't worry about performance problem. (Great job box86 team! :) )
As for my next steps, I am going to try AMX Mod X and some simple plugins as Sank sounds and so on. If it works (or even if it won't :D ) I will let you know! :)
Again, great job on this project! A huge respect to all of you! :)
EDIT!
So I've tried adding Metamod, Dproto and AMXX. I tried to launch HLDS with this command:
pi@raspberrypi:~/Downloads/steamcmd/HLDS $ ./hlds_linux -game valve +maxplayers 16 +map crossfire -dll addons/metamod/dlls/metamod.so
It started to launch normally (just that _Symbol ZSt11__once_call not found error). But then, I got this:
Using emulated /home/pi/Downloads/steamcmd/HLDS/./valve/addons/metamod/dlls/metamod.so
Using emulated /home/pi/Downloads/steamcmd/HLDS/hlds_linux
Metamod version 1.21p38 Copyright (c) 2001-2013 Will Day
Patch: Metamod-P (mm-p) v38 Copyright (c) 2004-2018 Jussi Kivilinna
Metamod comes with ABSOLUTELY NO WARRANTY; for details type `meta gpl'.
This is free software, and you are welcome to redistribute it
under certain conditions; type `meta gpl' for details.
Using emulated /home/pi/Downloads/steamcmd/HLDS/valve/dlls/hl.so
Warning, ignoring unsupported Int 3 call
Segmentation fault
Sometimes at the end I also get error like this:
Unimplemented Opcode
Any ideas, what could go wrong please?
Using:
Metamod 1.21p38
AMXX 1.8.2 (tried to comment it in metamod plugins.ini)
dproto 0.4.8 (tried to comment it in metamod plugins.ini)
EDIT 2!
A friend just told me not to launch server with hlds_linux
but hlds_run
, so my launch command now looks like this:
pi@raspberrypi:~/Downloads/steamcmd/HLDS $ ./hlds_run -game valve +maxplayers 16 +map crossfire -dll addons/metamod/dlls/metamod.so
No Segmentation fault so far, BUT I still keep getting this Warning, ignoring unsupported Int 3 call and after that Unsupported Int 8Ah error (the number changes after every restart). It keeps restarting itself every 10 seconds thanks to HLDS feature.
from box86.
After new commit (with Int3 calls) I was hoping, that it would fix this issue. Still no luck and now it gives me Segmentation fault even if I run it with ./hlds_run
file. (No luck with ZSt11__once_call not found either).
from box86.
metamod-p rewrites dlsym, so it will not work. You need original metamod which uses big linkent table. I do not know if it work with dproto
from box86.
I tried metamod 1.20
a few minutes ago, but had no luck.
Symbol _DYNAMIC not found, cannot apply R_386_GLOB_DAT .... {{nil}}
Segmentation fault
I also tried metamod am
version, but no luck there either. It didn't even launch it with these two.
So the best success so far was with Metamod P
when it actually did launch, but crashed on that Int3 call. It seems that it is trying to send hexa number to Int function.
from box86.
Try build metamod-hl1 with modern compiler, gcc-2.95 version does not seems to work with box86
from box86.
My friend compiled it for me, because I don't have x86 linux installed.
He compiled MetamodP
and MetamodAM
, because compiling original Metamod
threw a lot of errors. Still no success.
Metamod AM launch console log ended with this:
Using emulated /home/pi/Downloads/steamcmd/HLDS/./valve/addons/metamod/dlls/metamod.so
Error: Symbol _ZdlPvj not found, cannot apply R_386_JMP_SLOT @0xab85f2d0 (0x2db46)
Segmentation fault
Metamod P launch console log ended with this:
Using emulated /home/pi/Downloads/steamcmd/HLDS/./valve/addons/metamod/dlls/metamod.so
Using emulated /home/pi/Downloads/steamcmd/HLDS/hlds_linux
Metamod version 1.21p38 Copyright (c) 2001-2013 Will Day
Patch: Metamod-P (mm-p) v38 Copyright (c) 2004-2018 Jussi Kivilinna
Metamod comes with ABSOLUTELY NO WARRANTY; for details type `meta gpl'.
This is free software, and you are welcome to redistribute it
under certain conditions; type `meta gpl' for details.
Using emulated /home/pi/Downloads/steamcmd/HLDS/valve/dlls/hl.so
Warning, ignoring unsupported Int 3 call
Segmentation fault
In both logs, again this error appeared in beginning part:
Error: Symbol _ZSt11__once_call not found, cannot apply R_386_TLS_DTPOFF32 @0xb6434d5c ((nil))
So, still no luck so far :(
from box86.
libstdc++ is forgotten in metamod makefile. It may be fixed by LD_PRELOAD
from box86.
try BOX86_LD_PRELOAD=(path to x86 libstdc++)
from box86.
try BOX86_LD_PRELOAD=(path to x86 libstdc++)
Tried it,, but nothing changed. Not even in startup console log. When i chose different version of library (for example the one from box86), this was still in log:
Using emulated libstdc++.so.6
...
Error: Symbol _ZSt11__once_call not found, cannot apply R_386_TLS_DTPOFF32 @0xb6457d5c ((nil))
...
Warning, ignoring unsupported Int 3 call
Segmentation fault
from box86.
I was wondering, is it supposed to write something after that BOX86_LD_PRELOAD=(path to x86 libstdc++.so.6)
command in console? I mean, something like: Library libstdc++.so.6 successfully preloaded
. Because when I used that command, nothing was printed in console, just only line for next command (and as I said, nothing changed in HLDS console startup log).
from box86.
I tried to run the server the simmilar way as in Issue #115, with command:
gdb --args box86 ./hlds_linux -game valve +maxplayers 16 +map crossfire -dll addons/metamod/dlls/metamod.so
This time, the end of console log looked like this:
Program received signal SIGSEGV, Segmentation fault.
0x73855c24 in GetDynablocksFromAddress ()
I tried what was mentioned in the HL2DM issue and tried to print last 20 ARM instructions.
(gdb) x/20i $pc-60
0x73855be8 <GetTLSPointer+180>:
pop {pc} ; (ldr pc, [sp], #4)
0x73855bec <GetDynablocksFromAddress>: str r11, [sp, #-8]!
0x73855bf0 <GetDynablocksFromAddress+4>: str lr, [sp, #4]
0x73855bf4 <GetDynablocksFromAddress+8>: add r11, sp, #4
0x73855bf8 <GetDynablocksFromAddress+12>: sub sp, sp, #16
0x73855bfc <GetDynablocksFromAddress+16>: str r0, [r11, #-16]
0x73855c00 <GetDynablocksFromAddress+20>:
str r1, [r11, #-20] ; 0xffffffec
0x73855c04 <GetDynablocksFromAddress+24>:
ldr r1, [r11, #-20] ; 0xffffffec
0x73855c08 <GetDynablocksFromAddress+28>: ldr r0, [r11, #-16]
0x73855c0c <GetDynablocksFromAddress+32>:
bl 0x73855344 <FindElfAddress>
0x73855c10 <GetDynablocksFromAddress+36>: str r0, [r11, #-8]
0x73855c14 <GetDynablocksFromAddress+40>: ldr r3, [r11, #-8]
0x73855c18 <GetDynablocksFromAddress+44>: cmp r3, #0
0x73855c1c <GetDynablocksFromAddress+48>:
bne 0x73855ccc <GetDynablocksFromAddress+224>
0x73855c20 <GetDynablocksFromAddress+52>:
ldr r3, [r11, #-20] ; 0xffffffec
=> 0x73855c24 <GetDynablocksFromAddress+56>: ldrb r3, [r3]
0x73855c28 <GetDynablocksFromAddress+60>: cmp r3, #204 ; 0xcc
I have no idea what those lines mean, but maybe you can figure something out of these.
from box86.
It's a segfault (SIGSEGV), not a bus error (SIGBUS), so not the same kind of error. Here the last 20 ARM instruction are less usefull, and it would e better to have gdb backtrace (so just "bt" when there is the segfault).
But acording to the position of the segfault, I think it's more like a missing wrapped function. I guess there are still a lot of "Error missing symbols" at start?
from box86.
Nope, just this one:
Error: Symbol _ZSt11__once_call not found, cannot apply R_386_TLS_DTPOFF32 @0xb6457d5c ((nil))
...
Warning, ignoring unsupported Int 3 call
Segmentation fault
Sometimes after that Unsupported Int 3 call it did write this: Unsupported Int 8Ah
(the number was changing as I was trying it).
from box86.
HalfLife was working fine at some point on steam, but it's broken again, I have to debug what is happening (some libcef madness again, probably)
from box86.
Are there those who had/have the same problem as the author of this issue?
I hope there are others like me with Oracle VM.Standard.A1.Flex Free tier VM.
from box86.
Related Issues (20)
- L4T Bionic Broken Elements When Navigating Steam Client
- Source Dedicated Server (TF2) fails to dlopen `engine_srv.so` due to `libc.so.6` HOT 3
- building on rk3588s HOT 11
- how install box 86 on orange pi (arch linux) ? HOT 7
- Cemu HOT 3
- box86:armhf on arm64 missing opcodes in Fallout Tactics and Diablo 2 HOT 3
- Steamwebhelper is not responding HOT 15
- Steam: Missing symbols HOT 10
- box86 steam You are missing the following 32-bit libraries, and Steam may not run: libc.so.6 HOT 10
- Support mali vulkan driver HOT 1
- Regression on Super Meat Boy my2_SDL_GL_GetProcAddress HOT 5
- Killing Floor Dedicated Server Crashes with SIGSEGV HOT 4
- Wheel of Time on RPi5/64
- Build Error on Raspberry Pi 5: _TIME_BITS=64 Requirement Conflict HOT 11
- Steam fail to start due to symbol err HOT 14
- Wrong ELF class on Switch HOT 1
- Question about ODROID target HOT 6
- Unhandled page fault on read access to FFFFFFFF at address 00000000 (thread 0024), starting debugger... HOT 1
- Box86 fails to run on Ubuntu 24.04 HOT 11
- Relocation type "0x2a" error running bash. Unable to run bash in nixOS HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from box86.