• David Miller's avatar
    perf hists: Catch and handle out-of-date hist entry maps. · 63fa471d
    David Miller authored
    When a process exec()'s, all the maps are retired, but we keep the hist
    entries around which hold references to those outdated maps.
    
    If the same library gets mapped in for which we have hist entries, a new
    map will be created.  But when we take a perf entry hit within that map,
    we'll find the existing hist entry with the older map.
    
    This causes symbol translations to be done incorrectly.  For example,
    the perf entry processing will lookup the correct uptodate map entry and
    use that to calculate the symbol and DSO relative address.  But later
    when we update the histogram we'll translate the address using the
    outdated map file instead leading to conditions such as out-of-range
    offsets in symbol__inc_addr_samples().
    
    Therefore, update the map of the hist_entry dynamically at lookup/
    creation time.
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    Cc: stable@kernel.org
    Link: http://lkml.kernel.org/r/20120327.031418.1220315351537060808.davem@davemloft.netSigned-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
    63fa471d
hist.c 32.1 KB