PROBLEM: Possible recursive locking on "tick_periodic()" and "do_timer()"because of "xtime_lock" in 3.7.9

From: Pedro Fonseca
Date: Fri Mar 01 2013 - 14:41:12 EST


Hi,

Bellow you'll find a bug report for a possible bug involving recursive locking.

Thanks,
Pedro

----
[1.] One line summary of the problem:

Possible recursive locking on "tick_periodic()" and "do_timer()" because of "xtime_lock" in 3.7.9


[2.] Full description of the problem/report:

See [5] for the recursive locking error message.


[3.] Keywords (i.e., modules, networking, kernel):

Recursive locking, deadlock, timers


[4.] Kernel version (from /proc/version):
Linux version 3.7.9 (root@xxx) (gcc version 4.4.5 (Debian 4.4.5-8) )

[5.] Output of Oops.. message (if applicable) with symbolic information
resolved (see Documentation/oops-tracing.txt)

[ 239.964148]
[ 239.964148] =============================================
[ 239.964148] [ INFO: possible recursive locking detected ]
[ 239.964148] 3.7.9 #2 Not tainted
[ 239.964148] ---------------------------------------------
[ 239.964148] rt_sigaction01/2203 is trying to acquire lock:
[ 239.964148] (xtime_lock){-.-...}, at: [<c1074382>] tick_periodic+0x32/0x70
[ 239.964148]
[ 239.964148] but task is already holding lock:
[ 239.964148] (xtime_lock){-.-...}, at: [<c1074382>] tick_periodic+0x32/0x70
[ 239.964148]
[ 239.964148] other info that might help us debug this:
[ 239.964148] Possible unsafe locking scenario:
[ 239.964148]
[ 239.964148] CPU0
[ 239.964148] ----
[ 239.964148] lock(xtime_lock);
[ 239.964148] lock(xtime_lock);
[ 239.964148]
[ 239.964148] *** DEADLOCK ***
[ 239.964148]
[ 239.964148] May be due to missing lock nesting notation
[ 239.964148]
[ 239.964148] 2 locks held by rt_sigaction01/2203:
[ 239.964148] #0: (xtime_lock){-.-...}, at: [<c1074382>] tick_periodic+0x32/0x70
[ 239.964148] #1: (&(&(&tk->lock)->lock)->rlock){-.-...}, at: [<c106e981>] do_timer+0x31/0x9c0
[ 239.964148]
[ 239.964148] stack backtrace:
[ 239.964148] Pid: 2203, comm: rt_sigaction01 Not tainted 3.7.9 #2
[ 239.964148] Call Trace:
[ 239.964148] [<c107916a>] __lock_acquire+0x5ba/0x1400
[ 239.964148] [<c107a014>] lock_acquire+0x64/0x80
[ 239.964148] [<c1074382>] ? tick_periodic+0x32/0x70
[ 239.964148] [<c171b9e3>] _raw_spin_lock+0x33/0x40
[ 239.964148] [<c1074382>] ? tick_periodic+0x32/0x70
[ 239.964148] [<c1074382>] tick_periodic+0x32/0x70
[ 239.964148] [<c10743d9>] tick_handle_periodic+0x19/0x80
[ 239.964148] [<c10214cf>] smp_apic_timer_interrupt+0x4f/0x90
[ 239.964148] [<c1275594>] ? trace_hardirqs_off_thunk+0xc/0x18
[ 239.964148] [<c171c6ae>] apic_timer_interrupt+0x32/0x38
[ 239.964148] [<c106ef33>] ? do_timer+0x5e3/0x9c0
[ 239.964148] [<c10743aa>] tick_periodic+0x5a/0x70
[ 239.964148] [<c10743d9>] tick_handle_periodic+0x19/0x80
[ 239.964148] [<c10214cf>] smp_apic_timer_interrupt+0x4f/0x90
[ 239.964148] [<c1275594>] ? trace_hardirqs_off_thunk+0xc/0x18
[ 239.964148] [<c171c6ae>] apic_timer_interrupt+0x32/0x38


[6.] A small shell script or example program which triggers the problem (if possible)
N/A


[7.] Environment
Running inside a (modified) QEMU virtual machine based on version 1.0.1.



--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/