You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Heya, this is a great place to start for new contributors or those who wanna start getting into fixing GC issues. Please read up on this and the DM ref sheet before doing so.
My sweet, sweet GC GBP.
"What's walk_to?"
Walk_to(and related) is a base byond command that handles movement. This is used in many different situations, such as the movement handling for simple_animals and the supermatter crystal.
"What's the issue with walk_to?"
Walk_to has a problem with references, when a walk_to is called, it stores a ref to the mob and makes it move... this ref is never properly cleared.
"The server must be dying right? That's a whole bunch of GC issues!"
Well, no. Walk_to is largely a false positive GC issue, taking only a fraction of a second to clear (most of the time). This makes other GC issues nigh impossible to detect without using a ref finder. The ref finder will also show no refs when walk_to causes a GC fail due to it being a base byond instruction.
"Well, how do we fix it?"
Proc walk_to(src, 0) on the atom being moved destroy(). This clears the walk_to and fixes the GC issue.
Below is a list of files that need to be cleaned up to prevent more GC false positives.
reacted with thumbs up emoji reacted with thumbs down emoji reacted with laugh emoji reacted with hooray emoji reacted with confused emoji reacted with heart emoji reacted with rocket emoji reacted with eyes emoji
-
Heya, this is a great place to start for new contributors or those who wanna start getting into fixing GC issues. Please read up on this and the DM ref sheet before doing so.
My sweet, sweet GC GBP.
"What's walk_to?"
Walk_to(and related) is a base byond command that handles movement. This is used in many different situations, such as the movement handling for simple_animals and the supermatter crystal.
"What's the issue with walk_to?"
Walk_to has a problem with references, when a walk_to is called, it stores a ref to the mob and makes it move... this ref is never properly cleared.
"The server must be dying right? That's a whole bunch of GC issues!"
Well, no. Walk_to is largely a false positive GC issue, taking only a fraction of a second to clear (most of the time). This makes other GC issues nigh impossible to detect without using a ref finder. The ref finder will also show no refs when walk_to causes a GC fail due to it being a base byond instruction.
"Well, how do we fix it?"
Proc walk_to(src, 0) on the atom being moved destroy(). This clears the walk_to and fixes the GC issue.
Below is a list of files that need to be cleaned up to prevent more GC false positives.
Walk_to
Step_to
Step_towards
Step_away
Get_step_away
walk_away
walk_towards
NOT LISTED: Walk() and Step(). Just don't have the time yet.
Please direct yourself to https://github.com/tgstation/tgstation/blob/master/.github/guides/HARDDELETES.md for more info on harddels and walk_to stuff
Please direct yourself to tgstation/tgstation#62567 for information on the subsystem TG uses for these procs instead of the byond built in systems
Beta Was this translation helpful? Give feedback.
All reactions