cmd/compile: statictmps can prevent heap objects from being collected #29068
When I run this program, the finalizer never executes. The big slice will live in the heap forever.
The original state of the program has
When we do
If instead we allocated
A better fix would be to include a global "object" in the GC marking phase for each global variable. (This is similar to how stack objects work.) Named globals would be in the root set, but unnamed ones like the
I'm not sure it is worth fixing this problem. I sort of stumbled on it while working on #29013 but I haven't seen any instances in the wild. Thought it would be worth documenting it here in case someone had a better idea or someone found an actual real-world instance.
Note that a similar situation also applies to