FAForever / nomads

This project is about bringing Nomads back as playable faction via featured mod and make a serious attempt to integrate them into the main game.
12 stars 26 forks source link

Sim stops when a unit is trying to fire #652

Closed Garanas closed 1 year ago

Garanas commented 1 year ago

When a nomads-related unit attempts to fire a projectile the simulation just freezes and that is the end of it. The UI thread still runs. There's nothing in the logs. It is likely some infinite loop that triggers, but I wouldn't know where to start looking.

@Exotic-Retard any idea where to start the search?

Exotic-Retard commented 1 year ago

sounds like a cursed error - types of cursed errors include:

  1. shader stuff - nomads try things with recolouring projectiles that run through shaders
  2. engine functions - i.e. a unit getting attached to two projectiles at once - dont think this happens with nomads though?
  3. ???

I have a vague recollection of such an error years ago but sadly no idea what it is now. Vague memories: I remember there was a general issue if an entity i.e. a unit is attached to two entities at once i.e. two different projectiles, the game could freeze - i was working on shield bouncing at the time i think? and the game could freeze when an air unit was attached to both a sinker and a shield bouncer projectile at once?

Not very helpful but yeah - its low level stuff like that i guess.

Garanas commented 1 year ago

In this case it is just a unit that is trying to shoot, I don't imagine you attached entities to regular* projectiles

Exotic-Retard commented 1 year ago

no nothing like that should happen, but im unfamiliar with the latest faf patch so whatever broke was due to some incompatibility between nomads and the latest patch.

If what i wrote above doesnt ring any bells, then i guess the hard way is the way to find it xD

i.e. running nomads from source with both faf and nomads github repos (the regular nomads dev setup), then doing a binary search through the commits in the faf repo and seeing where it starts breaking. good old git bisect is what i use in these cases

sadly i dont have time to look into this right now :/

speed2CZ commented 1 year ago

@Garanas this commit seems to be responsible https://github.com/FAForever/fa/commit/36f08d50f74a336b5ebece27e6bf3610158a27f4

Exotic-Retard commented 1 year ago

tested around a little - it appears the sim freezes when the engine function CreateProjectile is called. Any idea why @Garanas ?

Im wondering if there have been exe patches or similar things.

CreateProjectile in this case is inside the weapon.lua file in FA - nomads calls the fa code and it freezes at this point. Line 452 of weapon.lua


ive been testing with the nomads acu - it reliably reproduces the error

Separately: switching the projectile from the nomads projectile to the uef acu projectile fixes the error. so its a combination of data in nomads projectiles that causes the sim to freeze.

Exotic-Retard commented 1 year ago

Alright hot fixed in latest nomads release.

It was related to multiple inheritance - nomads nuke projectile has multiple inheritance on its class.

I dont know why that freezes the sim but it does. Perhaps there were some changes or interactions with how the tables are arranged? In any case this seems like an underlieing issue of some kind. And pretty serious too if it completely freezes sim.

@Garanas can you investigate? Thanks :>