• Jiri Olsa's avatar
    perf tools: Fix locale handling in pmu parsing · f9a5978a
    Jiri Olsa authored
    Ingo reported regression on display format of big numbers, which is
    missing separators (in default perf stat output).
    
     triton:~/tip> perf stat -a sleep 1
             ...
             127008602      cycles                    #    0.011 GHz
             279538533      stalled-cycles-frontend   #  220.09% frontend cycles idle
             119213269      instructions              #    0.94  insn per cycle
    
    This is caused by recent change:
    
      perf stat: Check existence of frontend/backed stalled cycles
    
    that added call to pmu_have_event, that subsequently calls
    perf_pmu__parse_scale, which has a bug in locale handling.
    
    The lc string returned from setlocale, that we use to store old locale
    value, may be allocated in static storage. Getting a dynamic copy to
    make it survive another setlocale call.
    
      $ perf stat ls
             ...
             2,360,602      cycles                    #    3.080 GHz
             2,703,090      instructions              #    1.15  insn per cycle
               546,031      branches                  #  712.511 M/sec
    
    Committer note:
    
    Since the patch introducing the regression didn't made to perf/core,
    move it to just before where the regression was introduced, so that we
    don't break bisection for this feature.
    Reported-by: default avatarIngo Molnar <mingo@redhat.com>
    Signed-off-by: default avatarJiri Olsa <jolsa@kernel.org>
    Tested-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
    Cc: David Ahern <dsahern@gmail.com>
    Cc: Namhyung Kim <namhyung@kernel.org>
    Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
    Link: http://lkml.kernel.org/r/20160303095348.GA24511@krava.redhat.comSigned-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
    f9a5978a
pmu.c 22.2 KB