On Thu, Jun 19, 2014 at 07:39:42AM +0000, Tony Lu wrote: > 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.
There's no fork() in... :-) > #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); > } That pthread_exit() is the problem; this results in: 29456 pts/23 Zl 0:00 | \_ [hello] <defunct> You want to wait for the threads to complete using pthread_join(). I suspect the defunct state hides the process. -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/