Kernel lockup running 3.0.0 and 3.2.0 on multiple EC2 instance types
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
linux (Ubuntu) |
Fix Released
|
High
|
Unassigned | ||
Lucid |
Fix Released
|
Medium
|
Unassigned | ||
Oneiric |
Fix Released
|
Critical
|
Unassigned | ||
Precise |
Fix Released
|
Critical
|
Unassigned | ||
Quantal |
Fix Released
|
High
|
Unassigned | ||
Raring |
Fix Released
|
High
|
Unassigned | ||
linux-lts-backport-oneiric (Ubuntu) |
Invalid
|
Undecided
|
Unassigned | ||
Lucid |
Fix Released
|
Undecided
|
Unassigned | ||
Oneiric |
Won't Fix
|
Critical
|
Unassigned | ||
Precise |
Invalid
|
Undecided
|
Unassigned | ||
Quantal |
Invalid
|
Undecided
|
Unassigned | ||
Raring |
Invalid
|
Undecided
|
Unassigned |
Bug Description
SRU Justification:
Impact: Running lots of threads which utilize spinlocks (the pgslam testcase is quite successful in causing this), we hit a stage where the spinlock is still locked but none of the CPUs seem to be actively holding it. The reason for this is not yet completely understood. From evidence it looks like at least one CPU tries to get the lock, fails and goes into the pv-spinlocks special case of doing a hv call. This call seems to return, but somehow not to where it left, so the lock is never taken and other cpus are sometimes stuck in the hv call.
Fix: This problem seems to be avoidable by not enabling the cpu interrupts/event channel before doing the hv call. This may have some performance penalties but on the other hand testing did not seem to be much worse and does actually survive the run.
Testcase: pgslam test script below.
---
Scheduler deadlocks have been observed on c1.xlarge EC2 instances running 10.04.3 LTS with the 3.0.0-20-virtual Oneiric backport kernel. The symptoms appear similar to bug 929941, where multiple CPUs are waiting on scheduler runqueue locks. But in this case, only a few CPUs are stuck.
A typical set of stack traces from the guest state looks like:
VCPU0
rip: ffffffff810013aa hypercall_
flags: 00001202 i nz
rsp: ffff8801b3c27910
rax: 0000000000000000 rcx: ffffffff810013aa rdx: ffff8801b3c27954
rbx: ffff88000265cb30 rsi: ffff8801b3c27938 rdi: 0000000000000003
rbp: ffff8801b3c27958 r8: 0000000000000001 r9: 0000000000000001
r10: 0000000000000000 r11: 0000000000000202 r12: 0000000000000011
r13: 0000000000000001 r14: 0000000000000001 r15: 0000000000000000
cs: e033 ss: e02b ds: 0000 es: 0000
fs: 0000 @ 00007f4ce223f700
gs: 0000 @ ffff8801bfed400
cr0: 80050033
cr2: 0061ade0
cr3: 0e93d000
cr4: 00002660
dr0: 00000000
dr1: 00000000
dr2: 00000000
dr3: 00000000
dr6: ffff0ff0
dr7: 00000400
Code (instr addr ffffffff810013aa)
cc cc cc cc cc cc cc cc cc cc cc 51 41 53 b8 1d 00 00 00 0f 05 <41> 5b 59 c3 cc cc cc cc cc cc cc
Stack:
0000000000000246 0000000000000000 ffffffff81394b42 ffff8801b3c27938
0000000000000000 ffff8801b3c27954 ffffffff00000001 0000000000000000
0000000481394ad6 ffff8801b3c27968 ffffffff81394b60 ffff8801b3c279b8
ffffffff8100933f ffff8801b3c27a48 0000000000000000 ffff8801b3c27998
Call Trace:
[<ffffffff810
[<ffffffff813
[<ffffffff813
[<ffffffff810
[<ffffffff810
[<ffffffff816
[<ffffffff810
[<ffffffff810
[<ffffffff810
[<ffffffff812
[<ffffffff810
[<ffffffff811
[<ffffffff816
[<ffffffff811
[<ffffffff811
[<ffffffff811
[<ffffffff811
[<ffffffff811
[<ffffffff811
[<ffffffff811
[<ffffffff811
[<ffffffff811
[<ffffffff811
[<ffffffff811
[<ffffffff811
[<ffffffff811
[<ffffffff816
VCPU1
rip: ffffffff8105a777 try_to_wake_up+0xd7
flags: 00001202 i nz
rsp: ffff8801bfef28f0
rax: 0000000000000003 rcx: 0000000000000000 rdx: 0000000000000001
rbx: 0000000000012980 rsi: ffff8801b1990078 rdi: 0000000000000000
rbp: ffff8801bfef2950 r8: 0000000000000000 r9: 0000000000000000
r10: 0000000000000000 r11: 00000000fb981853 r12: ffff88000265c530
r13: 0000000000000000 r14: ffff88000265cb30 r15: 0000000000000000
cs: e033 ss: e02b ds: 0000 es: 0000
fs: 0000 @ 00007ff68926c700
gs: 0000 @ ffff8801bfeef00
cr0: 8005003b
cr2: 00441d80
cr3: 1174cb000
cr4: 00002660
dr0: 00000000
dr1: 00000000
dr2: 00000000
dr3: 00000000
dr6: ffff0ff0
dr7: 00000400
Code (instr addr ffffffff8105a777)
00 00 eb 0c 66 2e 0f 1f 84 00 00 00 00 00 f3 90 41 8b 54 24 28 <85> d2 75 f5 49 8b 14 24 31 c0 83
Stack:
0000000000000000 ffff8801b41d2858 ffff8801bfef2950 ffffffff8153e51e
0000000300000004 ffff8801b1990078 ffff8801bfef2930 ffff8800026f6c18
0000000000000001 ffff8800026f6c30 0000000000000000 0000000000000000
ffff8801bfef2960 ffffffff8105a962 ffff8801bfef29b0 ffffffff81049709
Call Trace:
[<ffffffff810
[<ffffffff815
[<ffffffff810
[<ffffffff810
[<ffffffff810
[<ffffffff811
[<ffffffff810
[<ffffffff810
[<ffffffff814
[<ffffffff815
[<ffffffff810
[<ffffffff810
[<ffffffff815
[<ffffffff815
[<ffffffff815
[<ffffffff815
[<ffffffff815
[<ffffffff815
[<ffffffff815
[<ffffffff815
[<ffffffff815
[<ffffffff814
[<ffffffff814
[<ffffffff815
[<ffffffff816
[<ffffffff810
[<ffffffff810
[<ffffffff816
[<ffffffff810
[<ffffffff810
[<ffffffff813
[<ffffffff816
VCPU2
rip: ffffffff810013aa hypercall_
flags: 00001202 i nz
rsp: ffff8801bff0da00
rax: 0000000000000000 rcx: ffffffff810013aa rdx: ffff8801bff0da44
rbx: ffff8800026f6c00 rsi: ffff8801bff0da28 rdi: 0000000000000003
rbp: ffff8801bff0da48 r8: 00000000000000c3 r9: 000000000000c110
r10: 0000000000100000 r11: 0000000000000202 r12: 000000000000001d
r13: 0000000000000001 r14: 0000000000000001 r15: 0000000000000000
cs: e033 ss: e02b ds: 0000 es: 0000
fs: 0000 @ 00007f408128b700
gs: 0000 @ ffff8801bff0a00
cr0: 80050033
cr2: 0061ade0
cr3: 289f2000
cr4: 00002660
dr0: 00000000
dr1: 00000000
dr2: 00000000
dr3: 00000000
dr6: ffff0ff0
dr7: 00000400
Code (instr addr ffffffff810013aa)
cc cc cc cc cc cc cc cc cc cc cc 51 41 53 b8 1d 00 00 00 0f 05 <41> 5b 59 c3 cc cc cc cc cc cc cc
Stack:
0000000000112000 0000000000000000 ffffffff81394b42 ffff8801bff0da28
0000000000000000 ffff8801bff0da44 ffffffff00000001 0000000000000000
0000001081394ad6 ffff8801bff0da58 ffffffff81394b60 ffff8801bff0daa8
ffffffff8100933f ffff8801bff0da88 0000000000000000 ffff8801b3d14530
Call Trace:
[<ffffffff810
[<ffffffff813
[<ffffffff813
[<ffffffff810
[<ffffffff810
[<ffffffff816
[<ffffffff811
[<ffffffff816
[<ffffffff810
[<ffffffff810
[<ffffffff814
[<ffffffff815
[<ffffffff815
[<ffffffff815
[<ffffffff815
[<ffffffff810
[<ffffffff815
[<ffffffff815
[<ffffffff815
[<ffffffff815
[<ffffffff815
[<ffffffff810
[<ffffffff810
[<ffffffff815
[<ffffffff810
[<ffffffff815
[<ffffffff810
[<ffffffff810
[<ffffffff810
[<ffffffff816
VCPU3
rip: ffffffff810013aa hypercall_
flags: 00001202 i nz
rsp: ffff8801b1993b10
rax: 0000000000000000 rcx: ffffffff810013aa rdx: ffff8801b1993b54
rbx: ffff8801bff01980 rsi: ffff8801b1993b38 rdi: 0000000000000003
rbp: ffff8801b1993b58 r8: ffff8801bf004760 r9: 0000000000000040
r10: 000000000000001d r11: 0000000000000202 r12: 0000000000000023
r13: 0000000000000001 r14: 0000000000000001 r15: 0000000000000000
cs: e033 ss: e02b ds: 0000 es: 0000
fs: 0000 @ 00007f1a15c06700
gs: 0000 @ ffff8801bff2500
cr0: 80050033
cr2: 7f78b037de20
cr3: 0e9c9000
cr4: 00002660
dr0: 00000000
dr1: 00000000
dr2: 00000000
dr3: 00000000
dr6: ffff0ff0
dr7: 00000400
Code (instr addr ffffffff810013aa)
cc cc cc cc cc cc cc cc cc cc cc 51 41 53 b8 1d 00 00 00 0f 05 <41> 5b 59 c3 cc cc cc cc cc cc cc
Stack:
0000000000000001 0000000000000000 ffffffff81394b42 ffff8801b1993b38
0000000000000000 ffff8801b1993b54 ffffffff00000001 0000000000000000
0000001681394ad6 ffff8801b1993b68 ffffffff81394b60 ffff8801b1993bb8
ffffffff8100933f 0000000000000000 0000000000000000 0000000000000000
Call Trace:
[<ffffffff810
[<ffffffff813
[<ffffffff813
[<ffffffff810
[<ffffffff810
[<ffffffff816
[<ffffffff810
[<ffffffff810
[<ffffffff816
[<ffffffff816
[<ffffffff816
[<ffffffff810
[<ffffffff810
[<ffffffff816
[<ffffffff811
[<ffffffff810
[<ffffffff812
[<ffffffff811
[<ffffffff811
[<ffffffff816
VCPU4
rip: ffffffff810013aa hypercall_
flags: 00001246 i z p
rsp: ffff8801b45f5ed8
rax: 0000000000000000 rcx: ffffffff810013aa rdx: 0000000000000000
rbx: ffff8801b45f4010 rsi: 0000000000000000 rdi: 0000000000000001
rbp: ffff8801b45f5ef0 r8: 0000000000000000 r9: 0000000000000000
r10: 0000000000000000 r11: 0000000000000246 r12: 0000000000000004
r13: 0000000000000000 r14: 0000000000000000 r15: 0000000000000000
cs: e033 ss: e02b ds: 002b es: 002b
fs: 0000 @ 00007fe085364700
gs: 0000 @ ffff8801bff4000
cr0: 8005003b
cr2: 7f7127c10000
cr3: 29c76000
cr4: 00002660
dr0: 00000000
dr1: 00000000
dr2: 00000000
dr3: 00000000
dr6: ffff0ff0
dr7: 00000400
Code (instr addr ffffffff810013aa)
cc cc cc cc cc cc cc cc cc cc cc 51 41 53 b8 1d 00 00 00 0f 05 <41> 5b 59 c3 cc cc cc cc cc cc cc
Stack:
0000000000000000 0000000000000000 ffffffff81007490 ffff8801b45f5f10
ffffffff81013c3d ffff8801b45f4010 ffffffff81cc7f48 ffff8801b45f5f40
ffffffff8100b0c7 ffffffff81007b19 6811f30c74562efe 0000000000000000
0000000000000000 ffff8801b45f5f50 ffffffff815f523d 0000000000000000
Call Trace:
[<ffffffff810
[<ffffffff810
[<ffffffff810
[<ffffffff810
[<ffffffff810
[<ffffffff815
VCPU5
rip: ffffffff810013aa hypercall_
flags: 00001246 i z p
rsp: ffff8801b45f7ed8
rax: 0000000000000000 rcx: ffffffff810013aa rdx: 0000000000000000
rbx: ffff8801b45f6010 rsi: 0000000000000000 rdi: 0000000000000001
rbp: ffff8801b45f7ef0 r8: 0000000000000000 r9: 0000000000000000
r10: 0000000000000000 r11: 0000000000000246 r12: 0000000000000005
r13: 0000000000000000 r14: 0000000000000000 r15: 0000000000000000
cs: e033 ss: e02b ds: 002b es: 002b
fs: 0000 @ 00007fcf9cf7a700
gs: 0000 @ ffff8801bff5b00
cr0: 8005003b
cr2: 7faf54aac360
cr3: 325e8000
cr4: 00002660
dr0: 00000000
dr1: 00000000
dr2: 00000000
dr3: 00000000
dr6: ffff0ff0
dr7: 00000400
Code (instr addr ffffffff810013aa)
cc cc cc cc cc cc cc cc cc cc cc 51 41 53 b8 1d 00 00 00 0f 05 <41> 5b 59 c3 cc cc cc cc cc cc cc
Stack:
0000000000000000 0000000000000000 ffffffff81007490 ffff8801b45f7f10
ffffffff81013c3d ffff8801b45f6010 ffffffff81cc7f48 ffff8801b45f7f40
ffffffff8100b0c7 ffffffff81007b19 afec8dc6140892fe 0000000000000000
0000000000000000 ffff8801b45f7f50 ffffffff815f523d 0000000000000000
Call Trace:
[<ffffffff810
[<ffffffff810
[<ffffffff810
[<ffffffff810
[<ffffffff810
[<ffffffff815
VCPU6
rip: ffffffff810013aa hypercall_
flags: 00001246 i z p
rsp: ffff8801b4601ed8
rax: 0000000000000000 rcx: ffffffff810013aa rdx: 0000000000000000
rbx: ffff8801b4600010 rsi: 0000000000000000 rdi: 0000000000000001
rbp: ffff8801b4601ef0 r8: 0000000000000000 r9: 0000000000000000
r10: 0000000000000000 r11: 0000000000000246 r12: 0000000000000006
r13: 0000000000000000 r14: 0000000000000000 r15: 0000000000000000
cs: e033 ss: e02b ds: 002b es: 002b
fs: 0000 @ 00007ff5deb9b700
gs: 0000 @ ffff8801bff7600
cr0: 8005003b
cr2: 7faf5345dff8
cr3: 10160000
cr4: 00002660
dr0: 00000000
dr1: 00000000
dr2: 00000000
dr3: 00000000
dr6: ffff0ff0
dr7: 00000400
Code (instr addr ffffffff810013aa)
cc cc cc cc cc cc cc cc cc cc cc 51 41 53 b8 1d 00 00 00 0f 05 <41> 5b 59 c3 cc cc cc cc cc cc cc
Stack:
0000000000000000 0000000000000000 ffffffff81007490 ffff8801b4601f10
ffffffff81013c3d ffff8801b4600010 ffffffff81cc7f48 ffff8801b4601f40
ffffffff8100b0c7 ffffffff81007b19 f6fcdef4e1be86f4 0000000000000000
0000000000000000 ffff8801b4601f50 ffffffff815f523d 0000000000000000
Call Trace:
[<ffffffff810
[<ffffffff810
[<ffffffff810
[<ffffffff810
[<ffffffff810
[<ffffffff815
VCPU7
rip: ffffffff810013aa hypercall_
flags: 00001246 i z p
rsp: ffff8801b4603ed8
rax: 0000000000000000 rcx: ffffffff810013aa rdx: 0000000000000000
rbx: ffff8801b4602010 rsi: 0000000000000000 rdi: 0000000000000001
rbp: ffff8801b4603ef0 r8: 0000000000000000 r9: 0000000000000000
r10: 0000000000000000 r11: 0000000000000246 r12: 0000000000000007
r13: 0000000000000000 r14: 0000000000000000 r15: 0000000000000000
cs: e033 ss: e02b ds: 002b es: 002b
fs: 0000 @ 00007fe081751700
gs: 0000 @ ffff8801bff9100
cr0: 8005003b
cr2: 7faf54bdfde0
cr3: 29c76000
cr4: 00002660
dr0: 00000000
dr1: 00000000
dr2: 00000000
dr3: 00000000
dr6: ffff0ff0
dr7: 00000400
Code (instr addr ffffffff810013aa)
cc cc cc cc cc cc cc cc cc cc cc 51 41 53 b8 1d 00 00 00 0f 05 <41> 5b 59 c3 cc cc cc cc cc cc cc
Stack:
0000000000000000 0000000000000000 ffffffff81007490 ffff8801b4603f10
ffffffff81013c3d ffff8801b4602010 ffffffff81cc7f48 ffff8801b4603f40
ffffffff8100b0c7 ffffffff81007b19 0c1d63da394a80a3 0000000000000000
0000000000000000 ffff8801b4603f50 ffffffff815f523d 0000000000000000
Call Trace:
[<ffffffff810
[<ffffffff810
[<ffffffff810
[<ffffffff810
[<ffffffff810
[<ffffffff815
Related branches
Changed in linux-lts-backport-oneiric (Ubuntu): | |
importance: | Undecided → Critical |
Changed in linux (Ubuntu): | |
importance: | Undecided → Critical |
tags: | added: kernel-da-key |
tags: | added: kernel-key |
tags: | removed: kernel-key |
tags: | added: patch |
description: | updated |
Changed in linux (Ubuntu Precise): | |
status: | In Progress → Fix Committed |
Changed in linux-lts-backport-oneiric (Ubuntu Lucid): | |
status: | New → Invalid |
Changed in linux-lts-backport-oneiric (Ubuntu Quantal): | |
status: | New → Invalid |
Changed in linux-lts-backport-oneiric (Ubuntu Raring): | |
status: | Confirmed → Invalid |
Changed in linux-lts-backport-oneiric (Ubuntu Oneiric): | |
importance: | Undecided → Critical |
status: | New → Confirmed |
Changed in linux-lts-backport-oneiric (Ubuntu Raring): | |
importance: | Critical → Undecided |
Changed in linux (Ubuntu Quantal): | |
importance: | Undecided → Critical |
status: | New → Confirmed |
importance: | Critical → High |
Changed in linux (Ubuntu Oneiric): | |
importance: | Undecided → Critical |
status: | New → Confirmed |
Changed in linux (Ubuntu Lucid): | |
importance: | Undecided → Medium |
status: | New → Triaged |
Changed in linux (Ubuntu Raring): | |
importance: | Critical → High |
tags: | added: verification-needed-precise |
tags: |
added: verification-done-precise removed: verification-needed-precise |
Changed in linux (Ubuntu Oneiric): | |
status: | Confirmed → Fix Committed |
vCPUs 0, 2 and 3 are stuck waiting on a spinlock. vCPU 1 is running with the EIP showing various values inside try_to_wake_up()