From: Masami Hiramatsu <mhiramat@redhat.com>
To: Frederic Weisbecker <fweisbec@gmail.com>
Cc: "Ingo Molnar" <mingo@elte.hu>,
"Steven Rostedt" <rostedt@goodmis.org>,
lkml <linux-kernel@vger.kernel.org>,
"Ananth N Mavinakayanahalli" <ananth@in.ibm.com>,
"Avi Kivity" <avi@redhat.com>, "Andi Kleen" <ak@linux.intel.com>,
"Christoph Hellwig" <hch@infradead.org>,
"Frank Ch. Eigler" <fche@redhat.com>,
"H. Peter Anvin" <hpa@zytor.com>,
"Jason Baron" <jbaron@redhat.com>,
"Jim Keniston" <jkenisto@us.ibm.com>,
"K.Prasad" <prasad@linux.vnet.ibm.com>,
"Lai Jiangshan" <laijs@cn.fujitsu.com>,
"Li Zefan" <lizf@cn.fujitsu.com>,
PrzemysławPawełczyk <przemyslaw@pawelczyk.it>,
"Roland McGrath" <roland@redhat.com>,
"Sam Ravnborg" <sam@ravnborg.org>,
"Srikar Dronamraju" <srikar@linux.vnet.ibm.com>,
"Tom Zanussi" <tzanussi@gmail.com>,
"Vegard Nossum" <vegard.nossum@gmail.com>,
systemtap <systemtap@sources.redhat.com>,
kvm <kvm@vger.kernel.org>,
DLE <dle-develop@lists.sourceforge.net>
Subject: Re: [TOOL] kprobestest : Kprobe stress test tool
Date: Thu, 20 Aug 2009 15:45:18 -0400 [thread overview]
Message-ID: <4A8DA7CE.2040702@redhat.com> (raw)
In-Reply-To: <20090820184331.GA6078@nowhere>
Frederic Weisbecker wrote:
> On Thu, Aug 13, 2009 at 04:57:20PM -0400, Masami Hiramatsu wrote:
>> This script tests kprobes to probe on all symbols in the kernel and finds
>> symbols which must be blacklisted.
>>
>>
>> Usage
>> -----
>> kprobestest [-s SYMLIST] [-b BLACKLIST] [-w WHITELIST]
>> Run stress test. If SYMLIST file is specified, use it as
>> an initial symbol list (This is useful for verifying white list
>> after diagnosing all symbols).
>>
>> kprobestest cleanup
>> Cleanup all lists
>>
>>
>> How to Work
>> -----------
>> This tool list up all symbols in the kernel via /proc/kallsyms, and sorts
>> it into groups (each of them including 64 symbols in default). And then,
>> it tests each group by using kprobe-tracer. If a kernel crash occurred,
>> that group is moved into 'failed' dir. If the group passed the test, this
>> script moves it into 'passed' dir and saves kprobe_profile into
>> 'passed/profiles/'.
>> After testing all groups, all 'failed' groups are merged and sorted into
>> smaller groups (divided by 4, in default). And those are tested again.
>> This loop will be repeated until all group has just 1 symbol.
>>
>> Finally, the script sorts all 'passed' symbols into 'tested', 'untested',
>> and 'missed' based on profiles.
>>
>>
>> Note
>> ----
>> - This script just gives us some clues to the blacklisted functions.
>> In some cases, a combination of probe points will cause a problem, but
>> each of them doesn't cause the problem alone.
>>
>> Thank you,
>>
>
>
> This script makes my x86-64 dual core easily and hardly locking-up
> on the 1st batch of symbols to test.
> I have one sym list in the failed and unset directories:
>
> int_very_careful
> int_signal
> int_restore_rest
> stub_clone
> stub_fork
> stub_vfork
> stub_sigaltstack
> stub_iopl
> ptregscall_common
> stub_execve
> stub_rt_sigreturn
> irq_entries_start
> common_interrupt
> ret_from_intr
> exit_intr
> retint_with_reschedule
> retint_check
> retint_swapgs
> retint_restore_args
> restore_args
> irq_return
> retint_careful
> retint_signal
> retint_kernel
> irq_move_cleanup_interrupt
> reboot_interrupt
> apic_timer_interrupt
> generic_interrupt
> invalidate_interrupt0
> invalidate_interrupt1
> invalidate_interrupt2
> invalidate_interrupt3
> invalidate_interrupt4
> invalidate_interrupt5
> invalidate_interrupt6
> invalidate_interrupt7
> threshold_interrupt
> thermal_interrupt
> mce_self_interrupt
> call_function_single_interrupt
> call_function_interrupt
> reschedule_interrupt
> error_interrupt
> spurious_interrupt
> perf_pending_interrupt
> divide_error
> overflow
> bounds
> invalid_op
> device_not_available
> double_fault
> coprocessor_segment_overrun
> invalid_TSS
> segment_not_present
> spurious_interrupt_bug
> coprocessor_error
> alignment_check
> simd_coprocessor_error
> native_load_gs_index
> gs_change
> kernel_thread
> child_rip
> kernel_execve
> call_softirq
>
>
> I don't have a crash log because I was running with X.
> But it also happened with other batch of symbols.
Thank you for reporting, here, I also have a result
tested on KVM@x86-64.
native_read_tscp
native_read_msr_safe
native_read_msr_amd_safe
native_write_msr_safe
vmalloc_fault
spurious_fault
search_exception_tables
notify_die
trace_hardirqs_off_caller
ident_complete
lock_acquire
lock_release
bad_address
secondary_startup_64
stack_start
bad_address
restore_args
irq_return
restore
trace_hardirqs_off_thunk
init_level4_pgt
level3_ident_pgt
level3_kernel_pgt
level2_fixmap_pgt
_text
startup_64
level1_fixmap_pgt
level2_ident_pgt
level2_kernel_pgt
level2_spare_pgt
native_get_debugreg
native_set_debugreg
native_set_iopl_mask
native_load_sp0
debug_show_all_locks
debug_check_no_locks_held
valid_state
mark_lock
mark_held_locks
lockdep_trace_alloc
trace_softirqs_on
trace_hardirqs_on_caller
__down_write
__down_read
trace_hardirqs_on_thunk
lockdep_sys_exit_thunk
Most of them can be fixed just by adding __kprobes.
Some of them which are already in the another section, kprobes
should check the symbols are in the section.
> The problem is that I don't have any serial line in this
> box then I can't catch any crash log.
> My K7 testbox also died in my arms this afternoon.
>
> But I still have two other testboxes (one P2 and one P3),
> hopefully I could reproduce the problem in these boxes
> in which I can connect a serial line.
Thank you for helping me to find it!
> I've pushed your patches in the following git tree:
>
> git://git.kernel.org/pub/scm/linux/kernel/git/fgrederic/random-tracing.git \
> tracing/kprobes
>
> So you can send patches on top of this one.
Great! I've found another trivial bugs, so I'll fix those on it.
Thank you,
--
Masami Hiramatsu
Software Engineer
Hitachi Computer Products (America), Inc.
Software Solutions Division
e-mail: mhiramat@redhat.com
WARNING: multiple messages have this Message-ID (diff)
From: Masami Hiramatsu <mhiramat@redhat.com>
To: Frederic Weisbecker <fweisbec@gmail.com>
Cc: "Ingo Molnar" <mingo@elte.hu>,
"Steven Rostedt" <rostedt@goodmis.org>,
lkml <linux-kernel@vger.kernel.org>,
"Ananth N Mavinakayanahalli" <ananth@in.ibm.com>,
"Avi Kivity" <avi@redhat.com>, "Andi Kleen" <ak@linux.intel.com>,
"Christoph Hellwig" <hch@infradead.org>,
"Frank Ch. Eigler" <fche@redhat.com>,
"H. Peter Anvin" <hpa@zytor.com>,
"Jason Baron" <jbaron@redhat.com>,
"Jim Keniston" <jkenisto@us.ibm.com>,
"K.Prasad" <prasad@linux.vnet.ibm.com>,
"Lai Jiangshan" <laijs@cn.fujitsu.com>,
"Li Zefan" <lizf@cn.fujitsu.com>,
PrzemysławPawełczyk <przemyslaw@pawelczyk.it>,
"Roland McGrath" <roland@redhat.com>,
"Sam Ravnborg" <sam@ravnborg.org>,
"Srikar Dronamraju" <srikar@linux.vnet.ibm.com>,
"Tom Zanussi" <tzanussi@gmail.com>,
"Vegard Nossum" <vegard.nossum@gmail.com>
Subject: Re: [TOOL] kprobestest : Kprobe stress test tool
Date: Thu, 20 Aug 2009 15:45:18 -0400 [thread overview]
Message-ID: <4A8DA7CE.2040702@redhat.com> (raw)
In-Reply-To: <20090820184331.GA6078@nowhere>
Frederic Weisbecker wrote:
> On Thu, Aug 13, 2009 at 04:57:20PM -0400, Masami Hiramatsu wrote:
>> This script tests kprobes to probe on all symbols in the kernel and finds
>> symbols which must be blacklisted.
>>
>>
>> Usage
>> -----
>> kprobestest [-s SYMLIST] [-b BLACKLIST] [-w WHITELIST]
>> Run stress test. If SYMLIST file is specified, use it as
>> an initial symbol list (This is useful for verifying white list
>> after diagnosing all symbols).
>>
>> kprobestest cleanup
>> Cleanup all lists
>>
>>
>> How to Work
>> -----------
>> This tool list up all symbols in the kernel via /proc/kallsyms, and sorts
>> it into groups (each of them including 64 symbols in default). And then,
>> it tests each group by using kprobe-tracer. If a kernel crash occurred,
>> that group is moved into 'failed' dir. If the group passed the test, this
>> script moves it into 'passed' dir and saves kprobe_profile into
>> 'passed/profiles/'.
>> After testing all groups, all 'failed' groups are merged and sorted into
>> smaller groups (divided by 4, in default). And those are tested again.
>> This loop will be repeated until all group has just 1 symbol.
>>
>> Finally, the script sorts all 'passed' symbols into 'tested', 'untested',
>> and 'missed' based on profiles.
>>
>>
>> Note
>> ----
>> - This script just gives us some clues to the blacklisted functions.
>> In some cases, a combination of probe points will cause a problem, but
>> each of them doesn't cause the problem alone.
>>
>> Thank you,
>>
>
>
> This script makes my x86-64 dual core easily and hardly locking-up
> on the 1st batch of symbols to test.
> I have one sym list in the failed and unset directories:
>
> int_very_careful
> int_signal
> int_restore_rest
> stub_clone
> stub_fork
> stub_vfork
> stub_sigaltstack
> stub_iopl
> ptregscall_common
> stub_execve
> stub_rt_sigreturn
> irq_entries_start
> common_interrupt
> ret_from_intr
> exit_intr
> retint_with_reschedule
> retint_check
> retint_swapgs
> retint_restore_args
> restore_args
> irq_return
> retint_careful
> retint_signal
> retint_kernel
> irq_move_cleanup_interrupt
> reboot_interrupt
> apic_timer_interrupt
> generic_interrupt
> invalidate_interrupt0
> invalidate_interrupt1
> invalidate_interrupt2
> invalidate_interrupt3
> invalidate_interrupt4
> invalidate_interrupt5
> invalidate_interrupt6
> invalidate_interrupt7
> threshold_interrupt
> thermal_interrupt
> mce_self_interrupt
> call_function_single_interrupt
> call_function_interrupt
> reschedule_interrupt
> error_interrupt
> spurious_interrupt
> perf_pending_interrupt
> divide_error
> overflow
> bounds
> invalid_op
> device_not_available
> double_fault
> coprocessor_segment_overrun
> invalid_TSS
> segment_not_present
> spurious_interrupt_bug
> coprocessor_error
> alignment_check
> simd_coprocessor_error
> native_load_gs_index
> gs_change
> kernel_thread
> child_rip
> kernel_execve
> call_softirq
>
>
> I don't have a crash log because I was running with X.
> But it also happened with other batch of symbols.
Thank you for reporting, here, I also have a result
tested on KVM@x86-64.
native_read_tscp
native_read_msr_safe
native_read_msr_amd_safe
native_write_msr_safe
vmalloc_fault
spurious_fault
search_exception_tables
notify_die
trace_hardirqs_off_caller
ident_complete
lock_acquire
lock_release
bad_address
secondary_startup_64
stack_start
bad_address
restore_args
irq_return
restore
trace_hardirqs_off_thunk
init_level4_pgt
level3_ident_pgt
level3_kernel_pgt
level2_fixmap_pgt
_text
startup_64
level1_fixmap_pgt
level2_ident_pgt
level2_kernel_pgt
level2_spare_pgt
native_get_debugreg
native_set_debugreg
native_set_iopl_mask
native_load_sp0
debug_show_all_locks
debug_check_no_locks_held
valid_state
mark_lock
mark_held_locks
lockdep_trace_alloc
trace_softirqs_on
trace_hardirqs_on_caller
__down_write
__down_read
trace_hardirqs_on_thunk
lockdep_sys_exit_thunk
Most of them can be fixed just by adding __kprobes.
Some of them which are already in the another section, kprobes
should check the symbols are in the section.
> The problem is that I don't have any serial line in this
> box then I can't catch any crash log.
> My K7 testbox also died in my arms this afternoon.
>
> But I still have two other testboxes (one P2 and one P3),
> hopefully I could reproduce the problem in these boxes
> in which I can connect a serial line.
Thank you for helping me to find it!
> I've pushed your patches in the following git tree:
>
> git://git.kernel.org/pub/scm/linux/kernel/git/fgrederic/random-tracing.git \
> tracing/kprobes
>
> So you can send patches on top of this one.
Great! I've found another trivial bugs, so I'll fix those on it.
Thank you,
--
Masami Hiramatsu
Software Engineer
Hitachi Computer Products (America), Inc.
Software Solutions Division
e-mail: mhiramat@redhat.com
next prev parent reply other threads:[~2009-08-20 19:42 UTC|newest]
Thread overview: 79+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-08-13 20:34 [PATCH -tip v14 00/12] tracing: kprobe-based event tracer and x86 instruction decoder Masami Hiramatsu
2009-08-13 20:34 ` Masami Hiramatsu
2009-08-13 20:34 ` [PATCH -tip v14 01/12] x86: instruction decoder API Masami Hiramatsu
2009-08-13 20:34 ` Masami Hiramatsu
2009-08-19 23:42 ` Frederic Weisbecker
2009-08-20 0:21 ` Frederic Weisbecker
2009-08-20 15:03 ` Masami Hiramatsu
2009-08-20 15:03 ` Masami Hiramatsu
2009-08-20 15:25 ` Frederic Weisbecker
2009-08-20 16:16 ` Masami Hiramatsu
2009-08-20 16:16 ` Masami Hiramatsu
2009-08-20 18:07 ` Frederic Weisbecker
2009-08-20 19:01 ` Masami Hiramatsu
2009-08-20 19:01 ` Masami Hiramatsu
2009-08-20 20:14 ` Frederic Weisbecker
2009-08-20 14:42 ` Masami Hiramatsu
2009-08-20 14:42 ` Masami Hiramatsu
2009-08-20 14:46 ` Frederic Weisbecker
2009-08-13 20:34 ` [PATCH -tip v14 02/12] x86: x86 instruction decoder build-time selftest Masami Hiramatsu
2009-08-13 20:34 ` Masami Hiramatsu
2009-08-13 20:34 ` [PATCH -tip v14 03/12] kprobes: checks probe address is instruction boudary on x86 Masami Hiramatsu
2009-08-13 20:34 ` Masami Hiramatsu
2009-08-18 23:03 ` Frederic Weisbecker
2009-08-18 23:17 ` Masami Hiramatsu
2009-08-18 23:17 ` Masami Hiramatsu
2009-08-18 23:43 ` Frederic Weisbecker
2009-08-19 0:19 ` Masami Hiramatsu
2009-08-19 0:19 ` Masami Hiramatsu
2009-08-19 0:46 ` Frederic Weisbecker
2009-08-13 20:34 ` [PATCH -tip v14 04/12] kprobes: cleanup fix_riprel() using insn decoder " Masami Hiramatsu
2009-08-13 20:34 ` Masami Hiramatsu
2009-08-13 20:34 ` [PATCH -tip v14 05/12] x86: add pt_regs register and stack access APIs Masami Hiramatsu
2009-08-13 20:34 ` Masami Hiramatsu
2009-08-13 20:34 ` Masami Hiramatsu
2009-08-13 20:34 ` Masami Hiramatsu
2009-08-13 20:34 ` [PATCH -tip v14 06/12] tracing: ftrace dynamic ftrace_event_call support Masami Hiramatsu
2009-08-13 20:34 ` Masami Hiramatsu
2009-08-13 20:35 ` [PATCH -tip v14 07/12] tracing: Introduce TRACE_FIELD_ZERO() macro Masami Hiramatsu
2009-08-13 20:35 ` Masami Hiramatsu
2009-08-19 1:09 ` Frederic Weisbecker
2009-08-19 2:20 ` Masami Hiramatsu
2009-08-19 2:20 ` Masami Hiramatsu
2009-08-19 13:58 ` Frederic Weisbecker
2009-08-13 20:35 ` [PATCH -tip v14 08/12] tracing: add kprobe-based event tracer Masami Hiramatsu
2009-08-13 20:35 ` Masami Hiramatsu
2009-08-19 1:23 ` Frederic Weisbecker
2009-08-13 20:35 ` [PATCH -tip v14 09/12] tracing: Kprobe-tracer supports more than 6 arguments Masami Hiramatsu
2009-08-13 20:35 ` Masami Hiramatsu
2009-08-13 20:35 ` [PATCH -tip v14 10/12] tracing: Generate names for each kprobe event automatically Masami Hiramatsu
2009-08-13 20:35 ` Masami Hiramatsu
2009-08-13 20:35 ` [PATCH -tip v14 11/12] tracing: Kprobe tracer assigns new event ids for each event Masami Hiramatsu
2009-08-13 20:35 ` Masami Hiramatsu
2009-08-13 20:35 ` [PATCH -tip v14 12/12] tracing: Add kprobes event profiling interface Masami Hiramatsu
2009-08-13 20:35 ` Masami Hiramatsu
2009-08-13 20:57 ` [TOOL] kprobestest : Kprobe stress test tool Masami Hiramatsu
2009-08-13 20:57 ` Masami Hiramatsu
2009-08-20 18:43 ` Frederic Weisbecker
2009-08-20 19:45 ` Masami Hiramatsu [this message]
2009-08-20 19:45 ` Masami Hiramatsu
2009-08-21 0:01 ` Frederic Weisbecker
2009-08-21 1:00 ` Masami Hiramatsu
2009-08-21 1:00 ` Masami Hiramatsu
2009-08-21 19:43 ` [PATCH tracing/kprobes 1/4] x86: Fix x86 instruction decoder selftest to check only .text Masami Hiramatsu
2009-08-21 19:43 ` Masami Hiramatsu
2009-08-23 19:34 ` Frederic Weisbecker
2009-08-21 19:43 ` [PATCH tracing/kprobes 2/4] x86: Check awk features before generating inat-tables.c Masami Hiramatsu
2009-08-21 19:43 ` Masami Hiramatsu
2009-08-21 19:43 ` [PATCH tracing/kprobes 3/4] tracing/kprobes: Fix format typo in trace_kprobes Masami Hiramatsu
2009-08-21 19:43 ` Masami Hiramatsu
2009-08-21 19:43 ` [PATCH tracing/kprobes 4/4] tracing/kprobes: Change trace_arg to probe_arg Masami Hiramatsu
2009-08-21 19:43 ` Masami Hiramatsu
2009-08-13 20:59 ` [TOOL] c2kpe: C expression to kprobe event format converter Masami Hiramatsu
2009-08-13 20:59 ` Masami Hiramatsu
2009-08-13 21:05 ` Christoph Hellwig
2009-08-13 21:05 ` Christoph Hellwig
2009-08-30 19:50 ` Frederic Weisbecker
2009-08-31 4:14 ` Masami Hiramatsu
2009-08-31 4:14 ` Masami Hiramatsu
2009-08-31 22:14 ` Frederic Weisbecker
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=4A8DA7CE.2040702@redhat.com \
--to=mhiramat@redhat.com \
--cc=ak@linux.intel.com \
--cc=ananth@in.ibm.com \
--cc=avi@redhat.com \
--cc=dle-develop@lists.sourceforge.net \
--cc=fche@redhat.com \
--cc=fweisbec@gmail.com \
--cc=hch@infradead.org \
--cc=hpa@zytor.com \
--cc=jbaron@redhat.com \
--cc=jkenisto@us.ibm.com \
--cc=kvm@vger.kernel.org \
--cc=laijs@cn.fujitsu.com \
--cc=linux-kernel@vger.kernel.org \
--cc=lizf@cn.fujitsu.com \
--cc=mingo@elte.hu \
--cc=prasad@linux.vnet.ibm.com \
--cc=przemyslaw@pawelczyk.it \
--cc=roland@redhat.com \
--cc=rostedt@goodmis.org \
--cc=sam@ravnborg.org \
--cc=srikar@linux.vnet.ibm.com \
--cc=systemtap@sources.redhat.com \
--cc=tzanussi@gmail.com \
--cc=vegard.nossum@gmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.