rehlds
rehlds copied to clipboard
NeoTF causes crash on Linux
The TFC plugin NeoTF 1.9.0 causes the server to crash on Linux with the following error when any client joins, regardless if a bot or a human:
L 06/18/2022 - 10:23:49: [NEOTF] NeoTFStartFrame: Detected bodyque entity.
Creating bot...
L 06/18/2022 - 10:23:54: FATAL ERROR (shutting down): NUM_FOR_EDICT: bad pointer
FATAL ERROR (shutting down): NUM_FOR_EDICT: bad pointer
Thread 1 "hlds_linux" received signal SIGSEGV, Segmentation fault.
0xf75629cb in Sys_Error(char const*, ...) () from /home/user/gameservers/rehlds/engine_i486.so
This issue does not happen on Windows ReHLDS. Also of note, NeoTF does NOT work on any Steampipe release of HLDS, ReHLDS is required for the plugin to work. I'm guessing because the plugin is using offset code injection and relying on specific offsets to work that have long since changed locations. The source code for NeoTF was never publicly released, so it's impossible to patch the plugin.
I would greatly appreciate if this was possible to get working, I don't like having to run a Windows VM for my NeoTF server, when all of my other HL servers run on Linux.
Most likely a continuation of the issues from #606 , which was fixed with merge for #687 where it was discussed how for the better part of a decade server owners were advised to use a library built in 2003 due to valve ignoring critical game breaking bugs.. however the issue you are having was broken by valve as reported here in the halflife github, plenty of reading to do but from what I have learned when first trying to debug this issue 3 years ago this cannot be fixed without the source code for NeoTF, perhaps there is some magic that can be done on the engine to allow NeoTF to see the correct pointers, but debugging this was so far above my level, I don't even know where to begin to change hardcoded offsets, however I am infinitely interested in this issue as my current solution is to just not run NeoTF servers! I am greatly interested in any solutions you find for this, hopefully someone out there can use this information to figure something out that I wasn't able to.
NeoTF works fine under Windows with ReHLDS, just not linux. I've been doing this via a Windows 7 virtual machine for several years now. It's just really inconvenient because of the large resource overhead required running a full Windows instance. I've tried using WINE, but NeoTF hates it and has weird crashing issues.
Without the source, the NeoTF DLL would have to be disassembled with something like Ida Pro to figure out where the offending offset code is and change it. That's also way above my skill level.