Garbage collection of remote references

Dániel Szoboszlay dszoboszlay@REDACTED
Fri Oct 15 14:05:32 CEST 2021

Hi Ludovic,

As far as I know references themselves are stored as regular data on the
heap, and can be garbage collected. However, references (and pids) also
<> the
node on which they were created (an atom). So I believe the documentation
wants to warn you that decoding a reference may also create an atom in your
atom table (plus also an entry in the node name to "first number in a pid"
mapping table, which probably has an official name). which will not be
garbage collected. The reference itself will be.

Hope it helps,

On Fri, 15 Oct 2021 at 12:24, Ludovic Demblans <ludovic@REDACTED> wrote:

> Hello,
> I can read the following in the binary_to_term documentation:
>      When decoding binaries from untrusted sources, the untrusted source
> may submit
>      data in a way to create resources, such as atoms and remote
> references, that
>      cannot be garbage collected and lead to Denial of Service attack. In
> such
>      cases, consider using binary_to_term/2 with the safe option.
> I use binary serialized remote references to dispatch messages received
> from an
> external source (Kafka) to the right process in the right node.  Those
> references are process aliases with the reply option.
> Reading the docs, should I understand that each reference will stay
> forever
> in memory after being used to send a message?
> I am also looking for more docs on that topic, I couldn't find much.
> Thank you.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <>

More information about the erlang-questions mailing list