Garbage collection of remote references
Fri Oct 15 14:05:32 CEST 2021
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
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:
> 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
> 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
> 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...
More information about the erlang-questions