aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDmitry Vyukov <dvyukov@google.com>2019-04-24 00:02:57 +0300
committerDmitry Vyukov <dvyukov@google.com>2019-04-24 00:02:57 +0300
commit0766ce61fd7dd3ac61b6daca0df194285c6ba891 (patch)
tree56f6054a93a218ce0c12527f1d0456fc944ced4e
parente99d004debdd6284c8db97ed0f7cbccb52cce357 (diff)
pkg/report: fix stalls in RIP frame
Even though we extract an anchor frame which usually higher up the stack, the anchor frame can be on RIP: line too. Account for that.
-rw-r--r--pkg/report/linux.go6
-rw-r--r--pkg/report/testdata/linux/report/37373
2 files changed, 79 insertions, 0 deletions
diff --git a/pkg/report/linux.go b/pkg/report/linux.go
index c63b5bfd8..b498dd503 100644
--- a/pkg/report/linux.go
+++ b/pkg/report/linux.go
@@ -870,6 +870,7 @@ var linuxOopses = []*oops{
fmt: "BUG: soft lockup in %[1]v",
stack: &stackFmt{
parts: []*regexp.Regexp{
+ linuxRipFrame,
compile("Call Trace:"),
parseStackTrace,
},
@@ -1135,6 +1136,11 @@ var linuxOopses = []*oops{
stack: &stackFmt{
parts: []*regexp.Regexp{
compile("apic_timer_interrupt"),
+ linuxRipFrame,
+ parseStackTrace,
+ },
+ parts2: []*regexp.Regexp{
+ compile("apic_timer_interrupt"),
parseStackTrace,
},
skip: []string{"apic_timer_interrupt", "rcu"},
diff --git a/pkg/report/testdata/linux/report/373 b/pkg/report/testdata/linux/report/373
new file mode 100644
index 000000000..c355af9ee
--- /dev/null
+++ b/pkg/report/testdata/linux/report/373
@@ -0,0 +1,73 @@
+TITLE: INFO: rcu detected stall in rtc_timer_do_work
+
+[ 249.033000] INFO: rcu_sched self-detected stall on CPU
+[ 249.038403] 1-....: (10499 ticks this GP) idle=35e/140000000000001/0 softirq=17797/17797 fqs=5227
+[ 249.047693] (t=10500 jiffies g=2803 c=2802 q=3452)
+[ 249.052792] NMI backtrace for cpu 1
+[ 249.056404] CPU: 1 PID: 17 Comm: kworker/1:0 Not tainted 4.15.0 #10
+[ 249.062875] Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 01/01/2011
+[ 249.072229] Workqueue: events rtc_timer_do_work
+[ 249.076884] Call Trace:
+[ 249.079451] <IRQ>
+[ 249.081604] [<ffffffff8415f2a2>] dump_stack+0x14d/0x20b
+[ 249.087048] [<ffffffff8134e501>] ? x86_vector_activate.cold+0xb8/0xb8
+[ 249.093726] [<ffffffff8416b827>] nmi_cpu_backtrace.cold+0x19/0x98
+[ 249.100055] [<ffffffff8134e580>] ? lapic_can_unplug_cpu.cold+0x38/0x38
+[ 249.106804] [<ffffffff8416b7fa>] nmi_trigger_cpumask_backtrace+0x16a/0x17e
+[ 249.113916] [<ffffffff8134e694>] arch_trigger_cpumask_backtrace+0x14/0x20
+[ 249.120980] [<ffffffff815a3ade>] rcu_dump_cpu_stacks+0x189/0x1d5
+[ 249.127214] [<ffffffff815a47e3>] rcu_check_callbacks.cold+0x51c/0xc29
+[ 249.133888] [<ffffffff81477b6c>] ? irqtime_account_process_tick.isra.0+0x2cc/0x470
+[ 249.141773] [<ffffffff815bf462>] update_process_times+0x32/0x80
+[ 249.147916] [<ffffffff815f1fe0>] tick_sched_handle+0xa0/0x180
+[ 249.153888] [<ffffffff815f25d4>] tick_sched_timer+0x44/0x130
+[ 249.159768] [<ffffffff815c30f7>] __hrtimer_run_queues+0x307/0xd90
+[ 249.166111] [<ffffffff815f2590>] ? tick_sched_do_timer+0x110/0x110
+[ 249.172529] [<ffffffff815c2df0>] ? hrtimer_start_range_ns+0xc20/0xc20
+[ 249.179213] [<ffffffff815c4bea>] hrtimer_interrupt+0x2ea/0x730
+[ 249.185287] [<ffffffff842050f4>] smp_apic_timer_interrupt+0x144/0x5e0
+[ 249.191970] [<ffffffff84201cbe>] apic_timer_interrupt+0x8e/0xa0
+[ 249.198108] </IRQ>
+[ 249.200451] RIP: 0010:rtc_timer_do_work+0x21a/0x650
+[ 249.205465] RSP: 0018:ffff8801d930bb70 EFLAGS: 00000a02 ORIG_RAX: ffffffffffffff12
+[ 249.213175] RAX: ffffffff83456f90 RBX: dffffc0000000000 RCX: 1ffff1003a100b1c
+[ 249.220455] RDX: 1ffff1003a100b26 RSI: ffffffff834572d7 RDI: ffff8801d0805930
+[ 249.228144] RBP: ffff8801d930bd00 R08: ffff8801d92fe100 R09: 0000000000000000
+[ 249.235407] R10: 0000000000000000 R11: 0000000000000000 R12: ffff8801d0805938
+[ 249.242751] R13: 2b64ae95de020000 R14: ffff8801d0805950 R15: ffff8801d0805960
+[ 249.250020] [<ffffffff83456f90>] ? rtc_aie_update_irq+0x30/0x30
+[ 249.256172] [<ffffffff834572d7>] ? rtc_timer_do_work+0x207/0x650
+[ 249.262392] [<ffffffff84200a6b>] ? retint_kernel+0x10/0x10
+[ 249.268094] [<ffffffff83456f90>] ? rtc_aie_update_irq+0x30/0x30
+[ 249.274227] [<ffffffff834570d0>] ? rtc_pie_update_irq+0x110/0x110
+[ 249.280536] [<ffffffff8152468a>] ? __lock_is_held+0xba/0x140
+[ 249.286497] [<ffffffff81411f96>] process_one_work+0x886/0x1650
+[ 249.292543] [<ffffffff834570d0>] ? rtc_pie_update_irq+0x110/0x110
+[ 249.298850] [<ffffffff81411f96>] ? process_one_work+0x886/0x1650
+[ 249.305280] [<ffffffff8100094b>] ? __schedule+0x59b/0x1d40
+[ 249.310981] [<ffffffff81411710>] ? pwq_dec_nr_in_flight+0x310/0x310
+[ 249.317483] [<ffffffff81530b4c>] ? lock_acquire+0x10c/0x330
+[ 249.323298] [<ffffffff81014998>] ? _raw_spin_unlock_irq+0x28/0x40
+[ 249.329617] [<ffffffff814133b3>] worker_thread+0x653/0x1150
+[ 249.335431] [<ffffffff8142aae8>] kthread+0x348/0x420
+[ 249.340610] [<ffffffff81412d60>] ? process_one_work+0x1650/0x1650
+[ 249.346921] [<ffffffff8142a7a0>] ? kthread_create_worker_on_cpu+0xf0/0xf0
+[ 249.353923] [<ffffffff84200261>] ret_from_fork+0x61/0x70
+[ 255.918447] INFO: rcu_sched detected expedited stalls on CPUs/tasks: { 1-... } 10879 jiffies s: 529 root: 0x2/.
+[ 255.929073] blocking rcu_node structures:
+[ 255.933240] Task dump for CPU 1:
+[ 255.936606] kworker/1:0 R running task on cpu 1 11096 17 2 0x80000008 144014221083
+[ 255.945801] Workqueue: events rtc_timer_do_work
+[ 255.950691] Call Trace:
+[ 255.953500] [<ffffffff81411f96>] ? process_one_work+0x886/0x1650
+[ 255.959955] [<ffffffff834570d0>] ? rtc_pie_update_irq+0x110/0x110
+[ 255.966286] [<ffffffff81411f96>] ? process_one_work+0x886/0x1650
+[ 255.972682] [<ffffffff8100094b>] ? __schedule+0x59b/0x1d40
+[ 255.978449] [<ffffffff81411710>] ? pwq_dec_nr_in_flight+0x310/0x310
+[ 255.984954] [<ffffffff81530b4c>] ? lock_acquire+0x10c/0x330
+[ 255.990805] [<ffffffff81014998>] ? _raw_spin_unlock_irq+0x28/0x40
+[ 255.997150] [<ffffffff814133b3>] ? worker_thread+0x653/0x1150
+[ 256.003229] [<ffffffff8142aae8>] ? kthread+0x348/0x420
+[ 256.008664] [<ffffffff81412d60>] ? process_one_work+0x1650/0x1650
+[ 256.015102] [<ffffffff8142a7a0>] ? kthread_create_worker_on_cpu+0xf0/0xf0
+[ 256.022185] [<ffffffff84200261>] ? ret_from_fork+0x61/0x70