Training courses

Kernel and Embedded Linux

Bootlin training courses

Embedded Linux, kernel,
Yocto Project, Buildroot, real-time,
graphics, boot time, debugging...

Bootlin logo

Elixir Cross Referencer

The following are examples of pl_malloc.d.

This is an expiremental script that attepmts to identify who is calling
malloc() from Perl, and to print byte distribution plots.

Here it traces the example program, Code/Perl/func_malloc.pl.

# pl_malloc.d -c ./func_malloc.pl
Function A
Function B
Function C
Tracing... Hit Ctrl-C to end.

Perl malloc byte distributions by engine caller,

   perl`perl_alloc, total bytes = 1 
           value  ------------- Distribution ------------- count    
               0 |                                         0        
               1 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1        
               2 |                                         0        

   libc.so.1`_findbuf, total bytes = 520 
           value  ------------- Distribution ------------- count    
             256 |                                         0        
             512 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1        
            1024 |                                         0        

   perl`Perl_safesysmalloc, total bytes = 72106 
           value  ------------- Distribution ------------- count    
               1 |                                         0        
               2 |@@                                       26       
               4 |@@@@@                                    72       
               8 |@@@@@@                                   101      
              16 |@@@@@@@@@@@@@@                           216      
              32 |@@@@@@@@@@@                              178      
              64 |@                                        21       
             128 |                                         6        
             256 |                                         2        
             512 |                                         4        
            1024 |                                         1        
            2048 |@                                        11       
            4096 |                                         1        
            8192 |                                         0        


Perl malloc byte distributions by Perl file and subroutine,

   func_malloc.pl, func_a, bytes total = 42504 
           value  ------------- Distribution ------------- count    
           16384 |                                         0        
           32768 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1        
           65536 |                                         0        

   func_malloc.pl, func_b, bytes total = 100008 
           value  ------------- Distribution ------------- count    
               2 |                                         0        
               4 |@@@@@@@@@@@@@@@@@@@@                     1        
               8 |                                         0        
              16 |                                         0        
              32 |                                         0        
              64 |                                         0        
             128 |                                         0        
             256 |                                         0        
             512 |                                         0        
            1024 |                                         0        
            2048 |                                         0        
            4096 |                                         0        
            8192 |                                         0        
           16384 |                                         0        
           32768 |                                         0        
           65536 |@@@@@@@@@@@@@@@@@@@@                     1        
          131072 |                                         0        

The func_malloc.pl program allocated around 100 Kbytes by creating a 
variable ($b) and populating it with 100,000 "b" characters. This has been
identified in the last distribution plot printed, with one malloc event
of between 64 Kbytes and 128 Kbytes in size. There was also a malloc event
of between 4 and 7 bytes in size.