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

Thomas Besemer tbesemer at thomas-iv.com
Wed Jun 4 12:59:05 EDT 2008


Hi Mathieu -



Thanks for your fast response!



I pulled 2.6.25.4 from kernel.org, and tried both

of these patches on it:



patch-2.6.25.4-lttng-0.10-pre55.tar.bz2

patch-2.6.25-rc9-git1-lttng-0.10-pre52.tar.bz2



Both patches had quite a few failed areas, so I

am wondering if I have the wrong Kernel???



Attached is the output from pre52 onto 2.6.25.4

tree, if it helps.  Also, this will not compile,

fails in:



make[1]: *** [arch/x86/kernel/alternative.o] Error 1

make: *** [arch/x86/kernel] Error 2



I'm happy to try anything you suggest; I just

didn't want to start fixing code problems until

I was sure I was using the right Kernel.



Thanks for your help.



tom





------- Original Message -------

On 6/3/2008  12:38 PM Mathieu Desnoyers wrote:



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

-------------- next part --------------
An embedded and charset-unspecified text was scrubbed...
Name: patch-results.0604a.txt
URL: <http://lists.casi.polymtl.ca/pipermail/lttng-dev/attachments/20080604/3f3d1d1a/attachment-0003.txt>


More information about the lttng-dev mailing list