<div dir="ltr">Hi Ludovic,<div><br></div><div>As far as I know references themselves are stored as regular data on the heap, and can be garbage collected. However, references (and pids) <a href="https://erlang.org/doc/apps/erts/erl_ext_dist.html#new_reference_ext">also contain</a> 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.</div><div><br></div><div>Hope it helps,</div><div>Daniel</div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Fri, 15 Oct 2021 at 12:24, Ludovic Demblans <<a href="mailto:ludovic@demblans.com">ludovic@demblans.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">Hello,<br>
<br>
I can read the following in the binary_to_term documentation:<br>
<br>
     When decoding binaries from untrusted sources, the untrusted source <br>
may submit<br>
     data in a way to create resources, such as atoms and remote <br>
references, that<br>
     cannot be garbage collected and lead to Denial of Service attack. In <br>
such<br>
     cases, consider using binary_to_term/2 with the safe option.<br>
<br>
<br>
I use binary serialized remote references to dispatch messages received <br>
from an<br>
external source (Kafka) to the right process in the right node.  Those<br>
references are process aliases with the reply option.<br>
<br>
Reading the docs, should I understand that each reference will stay <br>
forever<br>
in memory after being used to send a message?<br>
<br>
I am also looking for more docs on that topic, I couldn't find much.<br>
<br>
Thank you.<br>
</blockquote></div>