Skip to content

feature/redm-physical-player-extension #4168

Description

@iboss21

What happened?

On the experimental feature/redm-physical-player-extension artifact (version 35798),
the Object pool exhausts after being raised, and the resulting crash does not name
which pool ran out.

Our server.cfg raises it:

increase_pool_size "Object" 2000

The crash we get:

Recursive-recursive error: <<unknown pool>> Pool Full, Size == 2500

2500 is consistent with a 500 base plus our +2000, so the increase is being applied
and the pool is still being exhausted.

Two distinct problems:

1. The pool is undersized for what this branch is for. This branch exists so RedM
servers can run 128+ players. We hit the wall at 56 concurrent (highest server id
observed), under half the target, with Object already raised 5x over base.

2. <<unknown pool>> makes it unactionable. The engine ran out of a pool and
could not report which one. We have 31 increase_pool_size lines and no way to tell
which to raise. For us this is the more important of the two — if the pool name were
printed, server owners could fix their own configs instead of guessing.

We also see 4x Failed to create 'CObjectPhysicsComponent' component during creating entity., which looks like the same allocation failure caught at a different site.

Scale: 55 of 103 disconnects in our logs are client crashes (53%).

Separately, and possibly worth its own documentation issue: Ped and
AnimatedBuilding are absent from the allowlist at
https://gss.cfx-services.net/v1/public/pool-size-limits/redm and cannot be raised at
all. Our ped pool caps at 356, and a dump taken with zero players connected already
showed 104 slots used by ambient population and MLO peds. If that ceiling is
intentional, having it documented would save every RedM server owner the same
investigation.

Expected result

Pool Full should name the exhausted pool, and the Object pool should sustain the player counts this branch targets.

Reproduction steps

  1. Run a RedM server on artifact 35798/specific/feature/redm-physical-player-extension with onesync_physicalPlayerExtension true, onesync_population true and sv_maxclients 200.
  2. Raise the Object pool in server.cfg: increase_pool_size "Object" 2000.
  3. Load a content-heavy server (ours: ~250 resources, ~1,387 .ydr, ~4.2 GB .ytd) and bring concurrency above ~50 players in populated areas such as Saint Denis and Blackwater.
  4. Clients crash with Recursive-recursive error: <<unknown pool>> Pool Full, Size == 2500 and Failed to create 'CObjectPhysicsComponent' component during creating entity.

Importancy

Crash

Area(s)

RedM

Specific version(s)

RedM client 35798 (specific/feature/redm-physical-player-extension), game build b1491, Server linux

Additional information

Full pool configuration from our server.cfg, in case something here is fighting the
physical player extension:

increase_pool_size "CMoveObject" 100
increase_pool_size "FragmentStore" 4000
increase_pool_size "DrawableStore" 50000
increase_pool_size "CLightEntity" 2000
increase_pool_size "OcclusionInteriorInfo" 10
increase_pool_size "OcclusionPathNode" 1500
increase_pool_size "OcclusionPortalEntity" 140
increase_pool_size "OcclusionPortalInfo" 140
increase_pool_size "PortalInst" 150
increase_pool_size "ScaleformStore" 100
increase_pool_size "StaticBounds" 6500
increase_pool_size "TxdStore" 26000
increase_pool_size "InteriorProxy" 450
increase_pool_size "netGameEvent" 400
increase_pool_size "Object" 2000
increase_pool_size "AttachmentExtension" 430
increase_pool_size "CDoorExtension" 160
increase_pool_size "CPropSetObjectExtension" 950
increase_pool_size "CAvoidanceComponent" 1300
increase_pool_size "GrassBatch" 2000
increase_pool_size "CompEntity" 50
increase_pool_size "CNetObjDoor" 20
increase_pool_size "CDoorSyncData" 20
increase_pool_size "CNetObjPedBase" 110
increase_pool_size "NavMeshRoute" 200
increase_pool_size "CNetObjObject" 100
increase_pool_size "CCrimeObserver" 150
increase_pool_size "CNetObjVehicle" 40
increase_pool_size "CAnimalGroupMember" 110
increase_pool_size "CPedAvoidanceComponent" 256
increase_pool_size "CPedSyncData" 50

Full crash population from our logs (55 crashes / 103 total disconnects):

Count Reason
10 RDR2_b1491.exe+D8D800
6 RAGE error: 0xC5C2E25A:506
5 RDR2_b1491.exe+B4E829
4 RDR2_b1491.exe+2C0370A
4 RDR2_b1491.exe+2B0FC15
4 RDR2_b1491.exe+2293F93
4 Failed to create 'CObjectPhysicsComponent' component during creating entity.
3 RAGE error: ERR_GFX_STATE
3 gta-net-rdr3.dll+70429
3 0x7ff740c40e49
2 Recursive-recursive error: <<unknown pool>> Pool Full, Size == 2500
2 RDR2_b1491.exe+D9FD6B
2 RDR2_b1491.exe+2B0FC30

I am not claiming all of these are the same bug. ERR_GFX_STATE may well be our own
streaming load (~1,387 .ydr, ~4.2 GB .ytd). Including the full set so the pool-related
ones can be seen in proportion.

Also seeing 8x CSRF validation failed disconnects on this build, which is new to us.
Client side it shows only as "Disconnected by server" with no further detail. Mentioning
it in case it is related; happy to split it into its own issue if not.

We can supply crash dumps, full server logs, our resource list, or run a build with
extra logging. We have a 128+ player load test planned and can run whatever
instrumentation is useful during it.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    RedMIssues/PRs related to RedMbugcrash

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions