[erlang-questions] Hidden binaries

Kirill Zaborsky qrilka@REDACTED
Wed May 28 09:07:30 CEST 2014

I have recently found some memory "leak" in our application. Leak is in
quotes because memory load seems to be constant under constant load. But
the problem is that I see some extra binaries for which there are no signs
in process_info.
In production we use our fork of OTP16BR3-1 (including some number of httpc
fixes) but it looks like that behaviour could be reproduced locally on my
machine with OTP 17.
I have tried to get any hints from recon but with not success.
The problem could be seen from the following Erlang shell lines:
(node@REDACTED)87> recon:bin_leak(20),erlang:memory().
lists:sum([N||{P1,N,B}<-[{P,lists:sum([S||{_,S,_}<-B]),B} || {P,{binary,B}}
<- [{Pid,(catch process_info(Pid,binary))} || Pid <- processes()]]]).
As you see erlang:memory/0 shows 146k of memory used by binaries but
erlang:process_info/2 shows information only about 18k
Is there any way I could find out where the missing 128k of memory is?
Is it possible to get all binaries contents without gowing to some
low-level tools like gdb (I'm not quite familiar with it yet)?
Possibly there are some system-level binaries?
In production I see not kilobytes but hunderds of megabytes and sometimes
it leads even to OOM crashes.
I run Gentoo on my desktop and in production we use Ubuntu Precise.
Thanks for any advice.

Best regards,
Kirill Zaborsky
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://erlang.org/pipermail/erlang-questions/attachments/20140528/af0144e0/attachment.htm>

More information about the erlang-questions mailing list