Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

How to install vphysics jolt on gmod server? #217

Open
ForvatorDMC opened this issue Aug 18, 2024 · 7 comments
Open

How to install vphysics jolt on gmod server? #217

ForvatorDMC opened this issue Aug 18, 2024 · 7 comments

Comments

@ForvatorDMC
Copy link

Tell me as a dumb vegetable how to install this on a gmod server, linux x32.

@maxobur0001
Copy link

just drop all the content from the archive into the root folder of the game.

@selenter-c
Copy link

maxobur0001

All my 4 servers are on the standard Linux x32 gmod branch and not one of them has the “vphysics.so” file in the “bin” folder; instead, the “vphysics_srv.so” file is used.
Screenshot 2024-08-19 011046

Initially, I tried to simply rename this file by adding the word “_srv”, but after that my server basically stopped starting with the error “AppFramework: Unable to load module vphysics_srv.so!”.
Screenshot 2024-08-19 011537

I also tried to rename the rest of the vjolt files, and freaking out, I finally had about 20 files in the “bin” folder with different names, where the word “_srv” was in different places, or it was not there at all, but this again did not give anything and The error above was repeated. I also tried to rebuild this project personally, in the hope that I could get this treasured file (since the word “vphysics_jolt_srv.so” was in “build.md”), but after compilation it also did not create this file for me, and created a complete a copy of those files that are already in the archive.

@ForvatorDMC
Copy link
Author

@selenter-c
I have exactly the same problem.

@BerntA
Copy link

BerntA commented Aug 21, 2024

same here

@RaphaelIT7
Copy link
Contributor

It seems like the issue why it crashes is that it searches for libtier0.so but on a Linux 32x server, there it should be a libtier0_srv.so so it can't find that dependency and fails to load.
If that would be fixed, there would be another crash which seems to be caused by Jolt.

Crash 1

It depends on libtier0.so and libvstdlib.so which don't exist.

root@wsl:/funnypath/gmod/bin# readelf -d vphysics_srv.so

Dynamic section at offset 0xeee8 contains 29 entries:
  Tag        Type                         Name/Value
 0x00000001 (NEEDED)                     Shared library: [libtier0.so] <---------------------------------
 0x00000001 (NEEDED)                     Shared library: [libm.so.6]
 0x00000001 (NEEDED)                     Shared library: [libdl.so.2]
 0x00000001 (NEEDED)                     Shared library: [libstdc++.so.6]
 0x00000001 (NEEDED)                     Shared library: [ld-linux.so.2]
 0x00000001 (NEEDED)                     Shared library: [libc.so.6]
[...] -- unimportant stuff
 
root@wsl:/funnypath/gmod/bin# readelf -d vphysics_srv_orig.so

Dynamic section at offset 0x19f0c4 contains 28 entries:
  Tag        Type                         Name/Value
 0x00000001 (NEEDED)                     Shared library: [libtier0_srv.so] <---------------------------------
 0x00000001 (NEEDED)                     Shared library: [libvstdlib_srv.so]
 0x00000001 (NEEDED)                     Shared library: [libm.so.6]
 0x00000001 (NEEDED)                     Shared library: [libdl.so.2]
 0x00000001 (NEEDED)                     Shared library: [libstdc++.so.6]
 0x00000001 (NEEDED)                     Shared library: [libpthread.so.0]
 0x00000001 (NEEDED)                     Shared library: [ld-linux.so.2]
 0x00000001 (NEEDED)                     Shared library: [libc.so.6]
[...] -- unimportant stuff

It's possible to manually solve this one like this:

patchelf --replace-needed libtier0.so libtier0_srv.so vphysics_srv.so
patchelf --replace-needed libtier0.so libtier0_srv.so vphysics_jolt_avx2.so
patchelf --replace-needed libtier0.so libtier0_srv.so vphysics_jolt_sse2.so
patchelf --replace-needed libtier0.so libtier0_srv.so vphysics_jolt_sse42.so

# same issue with libvstdlib.so
patchelf --replace-needed libvstdlib.so libvstdlib_srv.so vphysics_jolt_avx2.so
patchelf --replace-needed libvstdlib.so libvstdlib_srv.so vphysics_jolt_sse2.so
patchelf --replace-needed libvstdlib.so libvstdliba_srv.so vphysics_jolt_sse42.so

Crash 2

So it seems like with the Jolt update ValidationContext was added which now seems to cause it to crash?
I tested a bit around to try to find the cause of it, but It's getting late, so I'll stop for now.
MY guess would be that something inside JoltPhysicsCollision::CreateVirtualMesh is broken.
This is what I got so far:

Currently, there is a server crash which is caused by jolt trying to use vertices that don't seem to exist?
- Crash Cause:

for (const IndexedTriangle &i : inTriangles)
	for (uint32 idx : i.mIdx)
		mBounds.Encapsulate(Vec3(inVertices[idx])); -- Vec3 constructor crashes

- Possible Cause: indexedTriangleList[xyz].m_Idx[idx] = Invalid vertex index?

Stacktrace (If someone want's to take a look into it):
0 - _mm_set_ss
1 - _mm_load_ss
2 - JPH::Vec3::Vec3 - Vec3.inl#L56
3 - JPH::TriangleCodecIndexed8BitPackSOA4Flags::ValidationContext::ValidationContext
- - - TriangleCodecIndexed8BitPackSOA4Flags.h#L102
4 - JPH::MeshShapeSettings::Sanitize - MeshShape.cpp:96
5 - JPH::MeshShapeSettings::MeshShapeSettings - MeshShape.cpp:88
6 - JoltPhysicsCollision::CreateVirtualMesh - vjolt_collide.cpp:865
7 - CM_CreateDispPhysCollide - engine_srv.so

@DatGuy64
Copy link

Anyone found a fix ? i want to try it on my server too

@Malifox
Copy link

Malifox commented Sep 22, 2024

@RaphaelIT7

For crash 2, I made the following change to:

indexedTriangleList.resize( meshList.indexCount * 2 );

- indexedTriangleList.resize( meshList.indexCount * 2 );
+ indexedTriangleList.resize( meshList.indexCount / 3 * 2 );

Seemed to fix the out of bounds issue based on some testing.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

7 participants