Question

i have a problem about erlang.
One of my Erlang node crashes, and generates erl_crash.dump with reason no more index entries in atom_tab (max=1048576).
i checked the dump file and i found that there are a lot of atoms in the form of 'B\2209\000..., (about 1000000 entries)

=proc:<0.11744.7038>
State: Waiting
Name: 'B\2209\000d\022D.
Spawned as: proc_lib:init_p/5
Spawned by: <0.5032.0>
Started: Sun Feb 23 05:23:27 2014
Message queue length: 0
Number of heap fragments: 0
Heap fragment data: 0
Reductions: 1992
Stack+heap: 1597
OldHeap: 1597
Heap unused: 918
OldHeap unused: 376
Program counter: 0x0000000001eb7700 (gen_fsm:loop/7 + 140)
CP: 0x0000000000000000 (invalid)
arity = 0

do you have some experience about what they are?

Was it helpful?

Solution 2

So it tells you, that you generate atoms. There is somewhere list_to_atom/1 which is called with variable argument. Because you have process with this sort of name, you register/2 processes with this name. It is may be your code or some third party module what you use. It's bad behavior. Don't do that and don't use modules which is doing it.

To be honest, I can imagine design where I would do it intentionally but it is very special case and it is obviously not the case when you ask this question.

OTHER TIPS

Atoms By default, the maximum number of atoms is 1048576. This limit can be raised or lowered using the +t option.

Note: an atom refers into an atom table which also consumes memory. The atom text is stored once for each unique atom in this table. The atom table is not garbage-collected.

I think that you produce a lot of atom in your program, the number of atom reach the number limition for atom.

You can use this +t option to change the number limition of atom in your erlang VM when your start your erlang node.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top