[ltt-dev] Problems with LTT Probe Install (Kernel Panic)

Mathieu Desnoyers compudj at krystal.dyndns.org
Tue Jun 3 08:38:20 EDT 2008


Hi Thomas,

I just re-installed a new ML server, sorry for the delay.

2.6.22-rc4-mm2 is a rather "test-only" release.

Can you try with the latest versions ? 2.6.25.4 and follow the
compatibility list on ltt.polymtl.ca

Thanks,

Mathieu

> 
> Hi -
> 
> 
> 
> I am currently in the process of trying to get the
> 
> LTTng going, but am having some trouble with Probe
> 
> installs that seems rather basic/fundamental to
> 
> the operation.  My versions of everything are:
> 
> 
> 
> Linux 2.6.22.23 SMP x86_64 
> 
> 
> 
> patch-2.6.22-rc4-mm2-lttng-0.9.10
> 
> 
> 
> ltt-control-0.42-16072007
> 
> 
> 
> LinuxTraceToolkitViewer-0.8.84-12082007
> 
> 
> 
> My Kernel configuration is:
> 
> 
> 
> #
> 
> # Instrumentation Support
> 
> #
> 
> # CONFIG_PROFILING is not set
> 
> CONFIG_KPROBES=y
> 
> # CONFIG_IMMEDIATE is not set
> 
> CONFIG_MARKERS=y
> 
> CONFIG_LTT=y
> 
> CONFIG_LTT_TRACER=y
> 
> CONFIG_LTT_RELAY=y
> 
> CONFIG_LTT_SERIALIZE=y
> 
> # CONFIG_LTT_ALIGNMENT is not set
> 
> # CONFIG_LTT_HEARTBEAT is not set
> 
> # CONFIG_LTT_TEST_TSC is not set
> 
> # CONFIG_LTT_USERSPACE_GENERIC is not set
> 
> CONFIG_LTT_NETLINK_CONTROL=y
> 
> CONFIG_LTT_STATEDUMP=y
> 
> 
> 
> #
> 
> # Probes
> 
> #
> 
> CONFIG_LTT_PROBE_CORE=m
> 
> CONFIG_LTT_PROBE_FS=m
> 
> CONFIG_LTT_PROBE_KERNEL=m
> 
> CONFIG_LTT_PROBE_ARCH=m
> 
> CONFIG_LTT_PROBE_MM=m
> 
> CONFIG_LTT_PROBE_NET=m
> 
> CONFIG_LTT_PROBE_LIST=m
> 
> CONFIG_LTT_PROBE_LOCKING=m
> 
> # CONFIG_LTT_PROBE_STACK is not set
> 
> 
> 
> During boot, I see the following messages:
> 
> 
> 
> LTT : ltt-facilities init
> 
> LTT : ltt-relay init
> 
> ltt-control init
> 
> LTT : ltt-facility-statedump init
> 
> 
> 
> Then, I tried to install <ltt-probe-core.ko>;
> 
> this gave me a Kernel Panic.  I did some looking around,
> 
> commented out some areas of the code so that I learn a
> 
> few things, and found the following:
> 
> 
> 
> In <marker.c>, this is where the fault is occuring:
> 
> 
> 
> static struct marker_entry *_get_marker(const char *name)
> 
> {
> 
>     struct hlist_node *node;
> 
>     struct marker_entry *e; 
> 
> 
> 
>     hlist_for_each_entry(e, node, &marker_list, hlist)
> 
>         printk( "_get_marker(): name %x, e-name %s\n",
> 
>                 name, e->name);
> 
>  
> 
> /*      if (!strcmp(name, e->name))
> 
>             return e;
> 
> tbesemer
> 
> */
> 
>     
> 
>     return NULL;
> 
> }   
> 
> 
> 
> Through the printk() I put in, instead of the strcmp(), I found
> 
> that "name" is passed in as NULL.  More so, if you look at the
> 
> following dump from dmesg for <ltt-probe-kernel.ko>, you can
> 
> see not only is "name" NULL at times, but it looks like the same
> 
> stuff keeps getting operated on:
> 
> 
> 
> _get_marker(): name 8058a9c0, e-name kernel_process_signal
> 
> _get_marker(): name 8058a9c0, e-name kernel_process_wait
> 
> _get_marker(): name 8058a9c0, e-name kernel_process_free
> 
> _get_marker(): name 8058a9c0, e-name kernel_process_exit
> 
> _get_marker(): name 8058a9c0, e-name kernel_process_fork
> 
> _get_marker(): name 0, e-name kernel_irq_exit
> 
> _get_marker(): name 0, e-name kernel_irq_entry
> 
> _get_marker(): name 0, e-name kernel_module_free
> 
> _get_marker(): name 0, e-name kernel_module_load
> 
> _get_marker(): name 0, e-name kernel_kthread_stop_ret
> 
> _get_marker(): name 0, e-name kernel_kthread_stop
> 
> _get_marker(): name 0, e-name kernel_tasklet_high_exit
> 
> _get_marker(): name 0, e-name kernel_tasklet_high_entry
> 
> _get_marker(): name 0, e-name kernel_tasklet_low_exit
> 
> _get_marker(): name 0, e-name kernel_tasklet_low_entry
> 
> _get_marker(): name 0, e-name kernel_softirq_exit
> 
> _get_marker(): name 0, e-name kernel_softirq_entry
> 
> _get_marker(): name 0, e-name kernel_timer_timeout
> 
> _get_marker(): name 0, e-name kernel_timer_update_time
> 
> _get_marker(): name 0, e-name kernel_timer_set
> 
> _get_marker(): name 0, e-name kernel_timer_itimer_set
> 
> _get_marker(): name 0, e-name kernel_timer_itimer_expired
> 
> _get_marker(): name 0, e-name kernel_vprintk
> 
> _get_marker(): name 0, e-name kernel_printk
> 
> _get_marker(): name 0, e-name kernel_sched_schedule
> 
> _get_marker(): name 0, e-name kernel_sched_migrate_task
> 
> _get_marker(): name 0, e-name kernel_sched_wakeup_new_task
> 
> _get_marker(): name 0, e-name kernel_sched_try_wakeup
> 
> _get_marker(): name 0, e-name kernel_sched_wait_task
> 
> _get_marker(): name 0, e-name kernel_process_signal
> 
> _get_marker(): name 0, e-name kernel_process_wait
> 
> _get_marker(): name 0, e-name kernel_process_free
> 
> _get_marker(): name 0, e-name kernel_process_exit
> 
> _get_marker(): name 0, e-name kernel_process_fork
> 
> _get_marker(): name 802510f8, e-name kernel_irq_exit
> 
> _get_marker(): name 802510f8, e-name kernel_irq_entry
> 
> _get_marker(): name 802510f8, e-name kernel_module_free
> 
> _get_marker(): name 802510f8, e-name kernel_module_load
> 
> _get_marker(): name 802510f8, e-name kernel_kthread_stop_ret
> 
> 
> 
> [snip lot's of output until the end]
> 
> 
> 
> _get_marker(): name 0, e-name kernel_process_signal
> 
> _get_marker(): name 0, e-name kernel_process_wait
> 
> _get_marker(): name 0, e-name kernel_process_free
> 
> _get_marker(): name 0, e-name kernel_process_exit
> 
> _get_marker(): name 0, e-name kernel_process_fork
> 
> _get_marker(): name 802510f8, e-name kernel_irq_exit
> 
> _get_marker(): name 802510f8, e-name kernel_irq_entry
> 
> _get_marker(): name 802510f8, e-name kernel_module_free
> 
> _get_marker(): name 802510f8, e-name kernel_module_load
> 
> _get_marker(): name 802510f8, e-name kernel_kthread_stop_ret
> 
> _get_marker(): name 802510f8, e-name kernel_kthread_stop
> 
> _get_marker(): name 802510f8, e-name kernel_tasklet_high_exit
> 
> _get_marker(): name 802510f8, e-name kernel_tasklet_high_entry
> 
> _get_marker(): name 802510f8, e-name kernel_tasklet_low_exit
> 
> _get_marker(): name 802510f8, e-name kernel_tasklet_low_entry
> 
> _get_marker(): name 802510f8, e-name kernel_softirq_exit
> 
> _get_marker(): name 802510f8, e-name kernel_softirq_entry
> 
> _get_marker(): name 802510f8, e-name kernel_timer_timeout
> 
> _get_marker(): name 802510f8, e-name kernel_timer_update_time
> 
> _get_marker(): name 802510f8, e-name kernel_timer_set
> 
> _get_marker(): name 802510f8, e-name kernel_timer_itimer_set
> 
> _get_marker(): name 802510f8, e-name kernel_timer_itimer_expired
> 
> _get_marker(): name 802510f8, e-name kernel_vprintk
> 
> _get_marker(): name 802510f8, e-name kernel_printk
> 
> _get_marker(): name 802510f8, e-name kernel_sched_schedule
> 
> _get_marker(): name 802510f8, e-name kernel_sched_migrate_task
> 
> _get_marker(): name 802510f8, e-name kernel_sched_wakeup_new_task
> 
> _get_marker(): name 802510f8, e-name kernel_sched_try_wakeup
> 
> _get_marker(): name 802510f8, e-name kernel_sched_wait_task
> 
> _get_marker(): name 802510f8, e-name kernel_process_signal
> 
> _get_marker(): name 802510f8, e-name kernel_process_wait
> 
> _get_marker(): name 802510f8, e-name kernel_process_free
> 
> _get_marker(): name 802510f8, e-name kernel_process_exit
> 
> _get_marker(): name 802510f8, e-name kernel_process_fork
> 
> (END) 
> 
> 
> 
> --
> 
> So, the summary is:
> 
> 
> 
>  1. I have applied the patch set.  Some areas were fuzzy
> 
>     patches, I have not looked at all those.
> 
>  2. Where the patch set FAILED, I resovled by hand.
> 
>  3. I configured/built Kernel, looks like LTT at Kernel
> 
>     level is somewhat okay - does not crash Kernel.
> 
>  4. I start to add probes, and I get Kernel Panics because
> 
>     of "name" being passed to _get_marker(const char *name)
> 
>     is NULL.
> 
> 
> 
> All help appreciated - always willing to give back any changes I
> 
> come up with, and keep you in the loop of how it is working for
> 
> me.
> 
> 
> 
> Many thanks,
> 
> 
> 
> Tom
> 
-- 
Mathieu Desnoyers
OpenPGP key fingerprint: 8CD5 52C3 8E3C 4140 715F  BA06 3F25 A8FE 3BAE 9A68




More information about the lttng-dev mailing list