The gist is in this passage:
It turns out that refc-binaries keep track of every process that has ever touched them! I know, its pretty obvious in retrospect, but the point here is that a refc-binary is not clobbered till every process that has ever touched it has been garbage-collected.
Not just processes that do something to the binary. Any process that touched it.
And therein lies the rub. Some of our processes barely did anything at all. For example, we had a few processes that acted as extremely simple "routers" - simply passing the binary along to an appropriate destination based on request type - and they didn't actually manipulate the binary in any form or fashion. Think of them as the equivalent of me saying "Hey Bob, if you get a chance, drop this package off at Mary's place"and Bob never even looks inside the package.
The thing is, this "router" process was also on the list of processes that had "touched" the binary!!!
Given that this "router" process barely did anything, it also pretty much never got garbage-collected. Which meant that the original binary hung around for a long time without getting garbage-collected.
So yeah, this can happen when you pass around larger binaries (I think its > 64 bytes), and some processes don't do anything but routing.
I wouldn't worry about this upfront, but at one point you'll need to load/stress test your system and watch out for memory usage. If you suffer from this bug, it should be reasonably easy to spot by looking at memory usage and especially binary memory. Relying on tools such as entop (
https://github.com/mazenharake/entop) can help a lot.