From: Russell King - ARM Linux <linux@arm.linux.org.uk>
To: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Fengguang Wu <fengguang.wu@intel.com>,
xen-devel@lists.xenproject.org,
Linux Kernel Mailing List <linux-kernel@vger.kernel.org>,
Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Subject: Re: [xen] double fault: 0000 [#1] PREEMPT SMP DEBUG_PAGEALLOC
Date: Mon, 7 Oct 2013 23:29:25 +0100 [thread overview]
Message-ID: <20131007222925.GV12758@n2100.arm.linux.org.uk> (raw)
In-Reply-To: <CA+55aFzknXawREZRBrr0Hs+crKt62fPf+S8SubJHXk84U8AFaw@mail.gmail.com>
On Mon, Oct 07, 2013 at 03:14:48PM -0700, Linus Torvalds wrote:
> On Mon, Oct 7, 2013 at 1:35 AM, Fengguang Wu <fengguang.wu@intel.com> wrote:
> > On Mon, Oct 07, 2013 at 01:12:17AM -0700, Linus Torvalds wrote:
> >
> > My pleasure! Here are 100 randomly selected call traces. Also attached
> > several full dmesgs and the kconfig.
>
> Ok, they may be randomly selected, but they are all the same. Which is
> good, I guess, we're only talking about one bug.
>
> Anyway, they all have RIP:run_timer_softirq+0x12c/0x1b8, and the code is
>
> 0: 8b 65 c8 mov -0x38(%rbp),%esp
> 3: 4d 39 ec cmp %r13,%r12
> 6: 0f 84 2f ff ff ff je 0xffffffffffffff3b
> c: 41 8b 4c 24 18 mov 0x18(%r12),%ecx
> 11: 4d 8b 74 24 20 mov 0x20(%r12),%r14
> 16: 4d 8b 7c 24 28 mov 0x28(%r12),%r15
> 1b: 4c 89 63 38 mov %r12,0x38(%rbx)
> 1f: 49 8b 44 24 08 mov 0x8(%r12),%rax
> 24: 49 8b 14 24 mov (%r12),%rdx
> 28: 83 e1 02 and $0x2,%ecx
> 2b:* 48 89 42 08 mov %rax,0x8(%rdx) <-- trapping instruction
> 2f: 48 89 10 mov %rdx,(%rax)
> 32: 48 b8 00 02 20 00 00 movabs $0xdead000000200200,%rax
>
> where that constant is LIST_POISON2 and the "and $2" seems to be
> TIMER_IRQSAFE. So the trapping instruction *looks* like it's doing
> __list_del() on the timer, and timer->next is NULL.
>
> So somebody added a timer, and then deallocated/cleared the structure
> before it triggered. The problem is, I can't see a way to figure out
> _who_ did that.
>
> I *think* r14 contains the function we're going to jump to in the
> oops, and that could be interesting to know, but it's not decoded, so
> you'd have to match it up against a symbol map...
As with all of these, it will be a kobject, prompted by my delayed kobject
release - we embed a delayed work structure in the kobject so that we can
call the cleanup and detect if it was freed.
However, early on, after Greg merged it, the problems with x86 were
reported, and I tried all sorts of ways to avoid this. I tried allocating
it separately, but that doesn't work because x86 registers kobjects
really early. I tried a few other things as well. The idea of allocating
the delayed work separately is that it doesn't get freed along with the
kobject, and then we can start tracking more reportable state and/or
tie it up with other kobject debug.
However, due to the problems with x86, that's fallen on its head and I
have no solution to get better debugging out which works across all
architectures. I'm stumpted by this.
However, one thing that this patch _is_ doing is it is uncovering the fact
that the kernel is full of kobject refcount problems, and it seems many
people just get this stuff wrong. That in itself is quite a problem.
What I would say is that we should have had this delayed release either
as standard in the kobject system from the start, or as a debug thing to
stop these problems as soon as they were initially introduced.
next prev parent reply other threads:[~2013-10-07 22:29 UTC|newest]
Thread overview: 42+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-10-06 8:23 Fengguang Wu
2013-10-06 17:26 ` Linus Torvalds
2013-10-07 2:11 ` Fengguang Wu
2013-10-07 5:10 ` Fengguang Wu
2013-10-07 8:12 ` Linus Torvalds
[not found] ` <20131007083505.GA22585@localhost>
2013-10-07 22:14 ` Linus Torvalds
2013-10-07 22:29 ` Russell King - ARM Linux [this message]
2013-10-07 23:33 ` Russell King - ARM Linux
2013-10-07 23:47 ` Linus Torvalds
2013-10-08 2:09 ` Fengguang Wu
2013-10-08 2:14 ` Fengguang Wu
2013-10-08 2:36 ` Fengguang Wu
2013-10-08 3:07 ` Linus Torvalds
2013-10-08 2:51 ` Linus Torvalds
2013-10-08 3:11 ` Fengguang Wu
2013-10-08 3:29 ` Linus Torvalds
2013-10-08 3:35 ` Fengguang Wu
2013-10-08 4:35 ` [DRM_CURRUS_QEMU/timer] WARNING: CPU: 0 PID: 1 at debug_print_object() Fengguang Wu
2013-10-08 12:17 ` [xen] double fault: 0000 [#1] PREEMPT SMP DEBUG_PAGEALLOC Fengguang Wu
2013-10-08 22:14 ` Russell King - ARM Linux
2013-10-08 22:48 ` Greg Kroah-Hartman
2013-10-09 0:45 ` Linus Torvalds
2013-10-09 1:18 ` Dave Jones
2013-10-09 1:26 ` [PATCH] kobject: show debug info on delayed kobject release Fengguang Wu
2013-10-09 14:47 ` Russell King - ARM Linux
2013-10-09 14:12 ` [xen] double fault: 0000 [#1] PREEMPT SMP DEBUG_PAGEALLOC Josh Boyer
2013-10-09 0:46 ` Fengguang Wu
2013-10-08 8:06 ` Russell King - ARM Linux
2013-10-10 2:23 ` Dave Airlie
2013-10-10 2:38 ` Linus Torvalds
2013-10-10 9:19 ` Russell King - ARM Linux
2013-10-10 10:53 ` Russell King - ARM Linux
2013-10-11 3:55 ` Dave Airlie
2013-10-11 4:28 ` Dave Airlie
2013-10-11 5:14 ` Fengguang Wu
2013-10-23 11:20 ` Xiong Zhou
2013-10-08 2:43 ` Linus Torvalds
2013-10-08 7:58 ` Ingo Molnar
2013-10-08 8:20 ` Fengguang Wu
2013-10-08 8:26 ` Ingo Molnar
2013-10-08 9:34 ` Ingo Molnar
2013-10-06 22:14 Boris Ostrovsky
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20131007222925.GV12758@n2100.arm.linux.org.uk \
--to=linux@arm.linux.org.uk \
--cc=fengguang.wu@intel.com \
--cc=gregkh@linuxfoundation.org \
--cc=linux-kernel@vger.kernel.org \
--cc=torvalds@linux-foundation.org \
--cc=xen-devel@lists.xenproject.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
Powered by JetHome