ParadiseSS13 / Paradise

Paradise Station's GitHub main repository.
https://www.paradisestation.org/forum
GNU Affero General Public License v3.0
404 stars 1.21k forks source link

Anything with /datum/component/swarming fails to GC #19130

Closed GDNgit closed 2 years ago

GDNgit commented 2 years ago

Issue Description: Anything with /datum/component/swarming fails to GC, this includes Bees, Spiderlings, Viscerators, and Hivelords.

What did you expect to happen: The above properly GC

What happened instead: GC failure

Why is this bad/What are the consequences: things not GCing bad

Steps to reproduce the problem: Spawn something with /datum/component/swarming Destroy it Check simple Del log after awhile

When did the problem start happening: This specific issue happened due to #13583 , however it's actually due to a larger bug with component registration itself (All of this below was found by @warriorstar-orion, not me all credit goes to them, this basically mirrors what they said on discord) Multiple /datum/component can be added to an ATOM, and are stored using a key value, however this key value also checks for /datum/component itself, leading to /datum/component being added to the list. This causes a reference to not properly be removed, and the atom to not GC. (Hopefully this properly reflects what the issue is)

farie82 commented 2 years ago

image Last 15 days it failed almost all of the time they get qdeleted.

When enabling tracking (even as QDEL hint) it finds no references: image

So this probably means that the cause of the failure is in the proc that kills it, which is most likely process. And by god is this an ugly proc which does too much and uses sleep and spawn often. There is also a poll being started. Yet this ain't the cause of the failure.