On Wed, Nov 09, 2011 at 05:05:56PM +0800, Yong Zhang wrote: > Hi, > > Just get below waring when doing: > for i in `seq 1 10`; do ./perf bench -f simple sched messaging -g 40; done > > And kernel config is attached. Attached now :) > > Thanks, > Yong > > --- > [ 350.148020] ============================================= > [ 350.148020] [ INFO: possible recursive locking detected ] > [ 350.148020] 3.2.0-rc1-10791-g76a4b59-dirty #2 > [ 350.148020] --------------------------------------------- > [ 350.148020] perf/9439 is trying to acquire lock: > [ 350.148020] (&(&n->list_lock)->rlock){-.-...}, at: [] get_partial_node+0x5f/0x360 > [ 350.148020] > [ 350.148020] but task is already holding lock: > [ 350.148020] (&(&n->list_lock)->rlock){-.-...}, at: [] unfreeze_partials+0x199/0x3c0 > [ 350.148020] > [ 350.148020] other info that might help us debug this: > [ 350.148020] Possible unsafe locking scenario: > [ 350.148020] > [ 350.148020] CPU0 > [ 350.148020] ---- > [ 350.148020] lock(&(&n->list_lock)->rlock); > [ 350.148020] lock(&(&n->list_lock)->rlock); > [ 350.148020] > [ 350.148020] *** DEADLOCK *** > [ 350.148020] > [ 350.148020] May be due to missing lock nesting notation > [ 350.148020] > [ 350.148020] 2 locks held by perf/9439: > [ 350.148020] #0: (tasklist_lock){.+.+..}, at: [] release_task+0x9e/0x500 > [ 350.148020] #1: (&(&n->list_lock)->rlock){-.-...}, at: [] unfreeze_partials+0x199/0x3c0 > [ 350.148020] > [ 350.148020] stack backtrace: > [ 350.148020] Pid: 9439, comm: perf Not tainted 3.2.0-rc1-10791-g76a4b59-dirty #2 > [ 350.148020] Call Trace: > [ 350.148020] [] ? _raw_spin_unlock_irqrestore+0x38/0x80 > [ 350.148020] [] validate_chain+0xddf/0x1250 > [ 350.148020] [] ? native_sched_clock+0x29/0x80 > [ 350.148020] [] ? local_clock+0x4f/0x60 > [ 350.148020] [] ? trace_hardirqs_off_caller+0x29/0x130 > [ 350.148020] [] __lock_acquire+0x3cf/0xc00 > [ 350.148020] [] ? native_sched_clock+0x29/0x80 > [ 350.148020] [] lock_acquire+0x9d/0x1d0 > [ 350.148020] [] ? get_partial_node+0x5f/0x360 > [ 350.148020] [] ? native_sched_clock+0x29/0x80 > [ 350.148020] [] ? local_clock+0x4f/0x60 > [ 350.148020] [] _raw_spin_lock+0x40/0x80 > [ 350.148020] [] ? get_partial_node+0x5f/0x360 > [ 350.148020] [] get_partial_node+0x5f/0x360 > [ 350.148020] [] ? native_sched_clock+0x29/0x80 > [ 350.148020] [] ? native_sched_clock+0x29/0x80 > [ 350.148020] [] ? T.1029+0x36/0x3f0 > [ 350.148020] [] ? __debug_object_init+0x3ba/0x3d0 > [ 350.148020] [] T.1029+0x1b7/0x3f0 > [ 350.148020] [] ? __debug_object_init+0x3ba/0x3d0 > [ 350.148020] [] ? native_sched_clock+0x29/0x80 > [ 350.148020] [] ? __debug_object_init+0x3ba/0x3d0 > [ 350.148020] [] kmem_cache_alloc+0xf6/0x200 > [ 350.148020] [] __debug_object_init+0x3ba/0x3d0 > [ 350.148020] [] ? _raw_spin_unlock_irqrestore+0x38/0x80 > [ 350.148020] [] debug_object_init+0x1f/0x30 > [ 350.148020] [] rcuhead_fixup_activate+0x34/0xe0 > [ 350.148020] [] debug_object_fixup+0x13/0x20 > [ 350.148020] [] debug_object_activate+0xbc/0x160 > [ 350.148020] [] ? deactivate_slab+0x7c0/0x7c0 > [ 350.148020] [] __call_rcu+0x42/0x1d0 > [ 350.148020] [] call_rcu+0x15/0x20 > [ 350.148020] [] discard_slab+0x44/0x50 > [ 350.148020] [] unfreeze_partials+0x2ff/0x3c0 > [ 350.148020] [] ? native_sched_clock+0x29/0x80 > [ 350.148020] [] ? put_cpu_partial+0x99/0xe0 > [ 350.148020] [] put_cpu_partial+0xa1/0xe0 > [ 350.148020] [] __slab_free+0x102/0x470 > [ 350.148020] [] ? __cleanup_sighand+0x27/0x30 > [ 350.148020] [] kmem_cache_free+0x220/0x230 > [ 350.148020] [] __cleanup_sighand+0x27/0x30 > [ 350.148020] [] release_task+0x23b/0x500 > [ 350.148020] [] ? release_task+0x1d/0x500 > [ 350.148020] [] wait_consider_task+0x8f3/0xc40 > [ 350.148020] [] do_wait+0x121/0x340 > [ 350.148020] [] sys_wait4+0xa3/0x100 > [ 350.148020] [] ? wait_noreap_copyout+0x150/0x150 > [ 350.148020] [] system_call_fastpath+0x16/0x1b > -- Only stand for myself