[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-ID: <BAB94DBB0E89D8409949BC28AC95914C5D762567@USMAExch1.tad.internal.tilera.com>
Date: Thu, 19 Jun 2014 07:39:42 +0000
From: Tony Lu <zlu@...era.com>
To: Peter Zijlstra <a.p.zijlstra@...llo.nl>,
Paul Mackerras <paulus@...ba.org>,
Ingo Molnar <mingo@...hat.com>,
Arnaldo Carvalho de Melo <acme@...stprotocols.net>
CC: "linux-kernel@...r.kernel.org" <linux-kernel@...r.kernel.org>,
Tony Lu <zlu@...era.com>, Chris Metcalf <cmetcalf@...era.com>
Subject: [BUG] perf: can not resolve symbols for forked threads
Hi
I got the below output that shows perf can not resolve symbols for forked threads. I did a system-wide collection from all CPUs after the application hello run.
-bash-4.1$ ./perf --version
perf version 3.16.rc1.ge99cfa2
-bash-4.1$ ./hello & ./perf record -a sleep 5
-bash-4.1$ ./perf report
# Overhead Command Shared Object Symbol
# ........ ........... .................. .............................
#
54.77% hello [unknown] [.] 0x0000000000400610
28.59% hello [unknown] [.] 0x0000000000400615
16.53% hello [unknown] [.] 0x000000000040061f
0.01% hello [kernel.kallsyms] [k] __rcu_process_callbacks
0.01% perf [kernel.kallsyms] [k] copy_user_generic_string
0.01% sleep [kernel.kallsyms] [k] filemap_fault
....
/***************************************************************************** FILE: hello.c
** DESCRIPTION:
** A "hello world" Pthreads program to trigger this bug.
***************************************************************************/
#include <pthread.h>
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#define NUM_THREADS 5
void foo(void)
{
long i = 1000000000;
while (i--) {
;
}
}
void *PrintHello(void *threadid)
{
long tid;
tid = (long)threadid;
printf("Hello World! It's me, thread #%ld!\n", tid);
foo();
pthread_exit(NULL);
}
int main(int argc, char *argv[])
{
pthread_t threads[NUM_THREADS];
int rc;
long t;
for(t=0;t<NUM_THREADS;t++){
printf("In main: creating thread %ld\n", t);
rc = pthread_create(&threads[t], NULL, PrintHello, (void *)t);
if (rc){
printf("ERROR; return code from pthread_create() is %d\n", rc);
exit(-1);
}
}
/* Last thing that main() should do */
pthread_exit(NULL);
}
Thanks
-Tony
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
Powered by blists - more mailing lists