lkml.org 
[lkml]   [2007]   [Mar]   [29]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
Date
Subject2.6.21-rc5-rt4 inconsistent lock state
From
Hi,

artsd during kde start triggered this

=================================
[ INFO: inconsistent lock state ]
[ 2.6.21-rc5-rt4 #4
---------------------------------
inconsistent {hardirq-on-W} -> {in-hardirq-W} usage.
artsd/3454 [HC1[1]:SC0[0]:HE0:SE1] takes:
((raw_spinlock_t *)(&lock->wait_lock)){+-..}, at: [<c0358d1f>] rt_spin_lock_slowlock+0x29/0x1b4
{hardirq-on-W} state was registered at:
[<c0143a91>] mark_lock+0x73/0x4a9
[<c0143f19>] mark_held_locks+0x52/0x6f
[<c0144115>] trace_hardirqs_on+0x116/0x162
[<c035a616>] __spin_unlock_irqrestore+0x54/0x70
[<c014a2a4>] task_blocks_on_rt_mutex+0x1d6/0x226
[<c0358dc5>] rt_spin_lock_slowlock+0xcf/0x1b4
[<c035959b>] rt_spin_lock+0x13/0x4b
[<c035804f>] wait_for_completion+0x2e/0xab
[<c012048d>] set_cpus_allowed+0x88/0xab
[<c012055b>] measure_one+0xab/0x184
[<c0120be5>] build_sched_domains+0x5b1/0xc19
[<c0121272>] arch_init_sched_domains+0x25/0x27
[<c04dccec>] sched_init_smp+0x1c/0x6a
[<c04d0590>] init+0x121/0x361
[<c0104ff7>] kernel_thread_helper+0x7/0x10
[<ffffffff>] 0xffffffff
irq event stamp: 116668
hardirqs last enabled at (116667): [<c035a616>] __spin_unlock_irqrestore+0x54/0x70
hardirqs last disabled at (116668): [<c0104de9>] apic_timer_interrupt+0x29/0x38
softirqs last enabled at (0): [<c0123b51>] copy_process+0x542/0x1440
softirqs last disabled at (0): [<00000000>] 0x0

l *0xc0358d1f
0xc0358d1f is in rt_spin_lock_slowlock (kernel/rtmutex.c:640).
635 unsigned long saved_state, state, flags;
636
637 debug_rt_mutex_init_waiter(&waiter);
638 waiter.task = NULL;
639
640 spin_lock_irqsave(&lock->wait_lock, flags);
641 init_lists(lock);
642
643 /* Try to acquire the lock again: */
644 if (try_to_take_rt_mutex(lock)) {

l *0xc035a616
0xc035a616 is in __spin_unlock_irqrestore (include/asm/irqflags.h:33).
28 return flags;
29 }
30
31 static inline void raw_local_irq_restore(unsigned long flags)
32 {
33 __asm__ __volatile__(
34 "pushl %0 ; popfl"
35 : /* no output */
36 :"g" (flags)
37 :"memory", "cc"

l *0xc0104de9
0xc0104de9 is at include/asm/bitops.h:246.
241 static int test_bit(int nr, const volatile void * addr);
242 #endif
243
244 static __always_inline int constant_test_bit(int nr, const volatile unsigned long *addr)
245 {
246 return ((1UL << (nr & 31)) & (addr[nr >> 5])) != 0;
247 }
248
249 static inline int variable_test_bit(int nr, const volatile unsigned long * addr)
250 {

l *0xc0123b51
0xc0123b51 is in copy_process (kernel/fork.c:1129).
1124 p->hardirq_enable_ip = 0;
1125 p->hardirq_enable_event = 0;
1126 p->hardirq_disable_ip = _THIS_IP_;
1127 p->hardirq_disable_event = 0;
1128 p->softirqs_enabled = 1;
1129 p->softirq_enable_ip = _THIS_IP_;
1130 p->softirq_enable_event = 0;
1131 p->softirq_disable_ip = 0;
1132 p->softirq_disable_event = 0;
1133 p->hardirq_context = 0;


other info that might help us debug this:
1 lock held by artsd/3454:
#0: (&tu->tread_sem){--..}, at: [<f98abe00>] snd_timer_user_ioctl+0x618/0xb0d [snd_timer]

stack backtrace:
[<c0105470>] dump_trace+0x78/0x21a
[<c0105647>] show_trace_log_lvl+0x35/0x54
[<c0105dcc>] show_trace+0x2c/0x2e
[<c0105e93>] dump_stack+0x29/0x2b
[<c014320b>] print_usage_bug+0x14d/0x157
[<c0143ace>] mark_lock+0xb0/0x4a9
[<c014498c>] __lock_acquire+0x3cf/0xc36
[<c0145261>] lock_acquire+0x6e/0x86
[<c035a10c>] __spin_lock_irqsave+0x55/0x65
[<c0358d1f>] rt_spin_lock_slowlock+0x29/0x1b4
[<c035959b>] rt_spin_lock+0x13/0x4b
[<c0276d47>] serial8250_console_write+0x4e/0x155
[<c0125c2f>] __call_console_drivers+0x73/0x88
[<c0125cb8>] _call_console_drivers+0x74/0x7a
[<c0125f4e>] release_console_sem+0x11e/0x1ad
[<c0126644>] vprintk+0x2dc/0x32b
[<c01266b3>] printk+0x20/0x22
[<c011e39d>] task_running_tick+0x401/0x450
[<c012180f>] scheduler_tick+0x188/0x1e3
[<c012f964>] update_process_times+0x40/0x6d
[<c01416c7>] tick_sched_timer+0x76/0xb6
[<c013d5b6>] hrtimer_interrupt+0x15d/0x205
[<c01161c5>] smp_apic_timer_interrupt+0x94/0xa7
[<c0104df3>] apic_timer_interrupt+0x33/0x38
[<c035a618>] __spin_unlock_irqrestore+0x56/0x70
[<c014a325>] rt_mutex_adjust_prio+0x31/0x37
[<c0358c36>] rt_spin_lock_slowunlock+0x6d/0x73
[<c0359602>] rt_spin_unlock+0x2f/0x35
[<c0182d71>] kfree+0x9d/0xa5
[<f98abea9>] snd_timer_user_ioctl+0x6c1/0xb0d [snd_timer]
[<c0193d5e>] do_ioctl+0x32/0x7f
[<c019403c>] vfs_ioctl+0x291/0x2a4
[<c01940af>] sys_ioctl+0x60/0x79
[<c010432d>] syscall_call+0x7/0xb
[<b7f28410>] 0xb7f28410
=======================
---------------------------
| preempt count: 00010001 ]
| 1-level deep critical section nesting:
----------------------------------------
.. [<c035a0da>] .... __spin_lock_irqsave+0x23/0x65
.....[<c0358d1f>] .. ( <= rt_spin_lock_slowlock+0x29/0x1b4)

l *0xc035a0da
0xc035a0da is in __spin_lock_irqsave (kernel/spinlock.c:122).
117 {
118 unsigned long flags;
119
120 local_irq_save(flags);
121 preempt_disable();
122 spin_acquire(&lock->dep_map, 0, 0, _RET_IP_);
123 /*
124 * On lockdep we dont want the hand-coded irq-enable of
125 * _raw_spin_lock_flags() code, because lockdep assumes
126 * that interrupts are not re-enabled during lock-acquire:

l *0xc0358d1f
0xc0358d1f is in rt_spin_lock_slowlock (kernel/rtmutex.c:640).
635 unsigned long saved_state, state, flags;
636
637 debug_rt_mutex_init_waiter(&waiter);
638 waiter.task = NULL;
639
640 spin_lock_irqsave(&lock->wait_lock, flags);
641 init_lists(lock);
642
643 /* Try to acquire the lock again: */
644 if (try_to_take_rt_mutex(lock)) {

http://www.stardust.webpages.pl/files/tbf/bitis-gabonica/2.6.21-rc5-rt4/rt-config
http://www.stardust.webpages.pl/files/tbf/bitis-gabonica/2.6.21-rc5-rt4/rt-dmesg

Regards,
Michal

--
Michal K. K. Piotrowski
LTG - Linux Testers Group (PL)
(http://www.stardust.webpages.pl/ltg/)
LTG - Linux Testers Group (EN)
(http://www.stardust.webpages.pl/linux_testers_group_en/)
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/

\
 
 \ /
  Last update: 2007-03-29 14:41    [W:0.873 / U:0.032 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site