1

I've compiled an application with tcmalloc and used HEAPPROFILE environment variable to get heap files

every 10MB or so a new heap file is created and according to the tcmalloc page i can use the pprof tool to compare heap files, and see what are the additional non released objects (possible leak).

pprof --text  myapp --base=myapp.0001.heap myapp.0047.heap 

the result is: ... Total: 4600.7 MB

4592.3  99.8%  99.8%   4592.3  99.8% 0x00000000009f1d25
7.3   0.2% 100.0%      7.3   0.2% 0x00000000009f1cfc
1.0   0.0% 100.0%      1.0   0.0% 0x00000000009f74f1
0.0   0.0% 100.0%   4600.7 100.0% 00007f07fe149b44
0.0   0.0% 100.0%   4600.7 100.0% 0x0000000000480da1
0.0   0.0% 100.0%   4600.7 100.0% 0x00000000004b5a3e

0x00000000009f1d25 is a nice address, but i can't really do anything with this data.

I've tried running the same in an helloworld application

pprof --text  helloworld  helloworld.0001.heap 
Using local file helloworld.
Using local file helloworld.0001.heap.
Total: 9.5 MB
9.5 100.0% 100.0%      9.5 100.0% BigNumber::BigNumber
0.0   0.0% 100.0%      0.0   0.0% __GI__IO_file_doallocate
0.0   0.0% 100.0%      9.5 100.0% main
0.0   0.0% 100.0%      0.0   0.0% _IO_new_file_overflow
0.0   0.0% 100.0%      0.0   0.0% _IO_new_file_xsputn
0.0   0.0% 100.0%      0.0   0.0% __GI__IO_doallocbuf
0.0   0.0% 100.0%      0.0   0.0% __GI__IO_fwrite
0.0   0.0% 100.0%      9.5 100.0% __libc_start_main
0.0   0.0% 100.0%      9.5 100.0% _start
0.0   0.0% 100.0%      0.0   0.0% std::__ostream_insert
0.0   0.0% 100.0%      0.0   0.0% std::operator<< 

Here we can see clearly that all the functions have clear names, and the leak is from the BigNumber constructor.

Can anyone point me in the right direction toward getting the meaning of the address above ?

user3696279
  • 99
  • 1
  • 5

0 Answers0