diff --git a/TODO b/TODO index 1b7f75e1..d745026a 100644 --- a/TODO +++ b/TODO @@ -23,6 +23,9 @@ Before 1.0.4: Before 1.2: +* Make sure there aren't leftover stacktraces from last time when + profiling begins. + * Is the move-to-front in process_locate_map() really worth it? * Whenever we fail to lock the atomic variable, track this, and send the information diff --git a/collector.c b/collector.c index 0be192d9..95fae189 100644 --- a/collector.c +++ b/collector.c @@ -169,8 +169,6 @@ in_dead_period (Collector *collector) static void collect_traces (Collector *collector) { - int n; - /* After a reset we ignore samples for a short period so that * a reset will actually cause 'samples' to become 0 */ diff --git a/module/sysprof-module.c b/module/sysprof-module.c index ce17590d..d5dfe9ee 100644 --- a/module/sysprof-module.c +++ b/module/sysprof-module.c @@ -187,7 +187,9 @@ heuristic_trace (struct pt_regs *regs, #endif unsigned long i; int j; +#if 0 int n_bytes = minimum (eos - esp, (SYSPROF_MAX_ADDRESSES - 1) * sizeof (void *)); +#endif j = 1; for (i = esp; i < eos && j < SYSPROF_MAX_ADDRESSES; i += sizeof (void *)) { @@ -198,10 +200,10 @@ heuristic_trace (struct pt_regs *regs, break; vma = find_vma (current->mm, x); - if (vma && vma->vm_flags & VM_EXEC && vma->vm_start <= x && x <= vma->vm_end) { - trace->addresses[j++] = x; - } - + + if (vma && vma->vm_flags & VM_EXEC) + if (vma->vm_start <= x && x <= vma->vm_end) + trace->addresses[j++] = x; } #if 0 @@ -284,6 +286,8 @@ timer_notify (struct pt_regs *regs) heuristic_trace (regs, trace); #elif CONFIG_X86 framepointer_trace (regs, trace); +#else +#error Sysprof only supports the i386 and x86-64 architectures #endif } diff --git a/process.c b/process.c index 59c19291..c4ad121e 100644 --- a/process.c +++ b/process.c @@ -698,7 +698,7 @@ process_lookup_symbol (Process *process, gulong address) process->undefined = g_strdup_printf ("No map (%s)", process->cmdline); } - + return process->undefined; }