From: Tong Li <to...@cs...> - 2005-11-04 19:41:10
|
I have an x86_64 SMP running Linux 2.6.14. The kernel was compiled with frame pointers enabled. I've experienced two problems with oprofile both 0.9.1 and 0.8.2. When I started oprofile with callgraph on, a panic occurred right away. The problem seems to be that check_user_page_readable() does not correctly filter out illegal user-space addresses so that some garbage frame_head value gets passed to dump_backtrace() in backtrace.c. 2.6.14-rc5-mm1 has a patch that killed the use of check_user_page_readable() and replaced it with __copy_from_user_inatomic(). I applied this patch and it had solved the problem. Now the new problem I'm having is that opreport -c doesn't print out kernel call graphs correctly: all functions only show self, not their callers (see below). However, call graphs for user functions (e.g., libc calls) are shown correctly. CPU: P4 / Xeon, speed 3336.37 MHz (estimated) Counted GLOBAL_POWER_EVENTS events (time during which processor is not stopped) with a unit mask of 0x01 (mandatory) count 100000 samples % image name app name symbol name ------------------------------------------------------------------------------- 17606 28.1277 vmlinux vmlinux find_busiest_group 17606 100.000 vmlinux vmlinux find_busiest_group [self] ------------------------------------------------------------------------------- 11753 18.7769 vmlinux vmlinux _raw_spin_lock 11753 100.000 vmlinux vmlinux _raw_spin_lock [self] Does anyone know how to fix this? Thanks, tong |