From: Andrew Morton <akpm@linux-foundation.org>
To: linux-mm@kvack.org
Cc: bugzilla-daemon@bugzilla.kernel.org,
Johannes Weiner <hannes@cmpxchg.org>, Mel Gorman <mel@csn.ul.ie>,
tnimble@xs4all.nl
Subject: Re: [Bug 16415] New: Show_Memory/Shift-ScrollLock triggers "unable to handle kernel paging request at 00021c6e"
Date: Thu, 22 Jul 2010 15:34:43 -0700 [thread overview]
Message-ID: <20100722153443.e266b2d6.akpm@linux-foundation.org> (raw)
In-Reply-To: <bug-16415-27@https.bugzilla.kernel.org/>
(switched to email. Please respond via emailed reply-to-all, not via the
bugzilla web interface).
Thanks for the report.
On Mon, 19 Jul 2010 11:18:46 GMT
bugzilla-daemon@bugzilla.kernel.org wrote:
> https://bugzilla.kernel.org/show_bug.cgi?id=16415
>
> Summary: Show_Memory/Shift-ScrollLock triggers "unable to
> handle kernel paging request at 00021c6e"
> Product: Memory Management
> Version: 2.5
> Kernel Version: 2.6.34.1
> Platform: All
> OS/Version: Linux
> Tree: Mainline
> Status: NEW
> Severity: normal
> Priority: P1
> Component: Other
> AssignedTo: akpm@linux-foundation.org
> ReportedBy: tnimble@xs4all.nl
> Regression: No
>
>
> Created an attachment (id=27147)
> --> (https://bugzilla.kernel.org/attachment.cgi?id=27147)
> Kernel startup output
>
> When doing a show_memory the following trace is outputted and the box freezes.
> A reboot is then initiated by the wachtdog timer after about a minute.
>
> The show_registers (altr-scrollock) functions just fine.
>
> This problem might be related to other memory related issues. This as when
> cached memory usage increases of when a large file is allocated on a tmpfs the
> system also freezes after pagefaults / panics
>
> This problem was first noticed after updating to kernel 2.6.34 (from 2.6.12.6).
> Both kernels have been tested on multiple sets of hardware. The system is run
> from compact flash disk and tmpfs for /tmp and /var/...
>
It's i386, highmem.
>
> BUG: unable to handle kernel paging request at 00021c6e
> IP: [<c01d124b>] show_mem+0xbf/0x15c
> *pde = 00000000
> Oops: 0000 [#1] SMP
> last sysfs file: /sys/devices/platform/coretemp.0/temp1_input
> Modules linked in: ipv6 nf_nat_irc nf_nat_ftp ipt_MASQUERADE ipt_REJECT
> ipt_REDIRECT xt_state xt_limit ipt_LOG iptable_nat nf_nat iptable_mangle
> iptable_filter nf_conntrack_irc nf_conntrack_ftp nf_conntrack_ipv4 nf_conntrack
> nf_defrag_ipv4 ip_tables x_tables coretemp usbhid i2c_i801 ehci_hcd uhci_hcd
> fan iTCO_wdt iTCO_vendor_support e1000e usbcore thermal button processor evdev
> nls_iso8859_1
>
> Pid: 0, comm: swapper Not tainted 2.6.34.1 #1 945GM/E-ITE8712/945GM/E-ITE8712
> EIP: 0060:[<c01d124b>] EFLAGS: 00010002 CPU: 0
> EIP is at show_mem+0xbf/0x15c
> EAX: 00021c6a EBX: 00018020 ECX: 00000001 EDX: c1301400
> ESI: 00018010 EDI: c03fbf80 EBP: c03d5ca0 ESP: c03d5c80
> DS: 007b ES: 007b FS: 00d8 GS: 0000 SS: 0068
> Process swapper (pid: 0, ti=c03d4000 task=c03e2ea0 task.ti=c03d4000)
> Stack:
> 00018010 0000147a ed0ff381 00000000 00000000 f700b000 00000046 c03ef203
> <0> c03d5ca8 c022a4dd c03d5cb4 c0229a0c 00000002 c03d5ce8 c022ae51 f694cc00
> <0> 020030b4 f700b000 f700b000 00000001 00000001 00000000 0000f203 f64a7d40
> Call Trace:
> [<c022a4dd>] ? fn_show_mem+0x8/0xa
> [<c0229a0c>] ? k_spec+0x33/0x36
> [<c022ae51>] ? kbd_event+0x46f/0x4da
> [<c027891f>] ? input_pass_event+0x63/0x9e
> [<c012df0e>] ? mod_timer+0xe7/0xf2
Here it is:
: void show_mem(void)
: {
: pg_data_t *pgdat;
: unsigned long total = 0, reserved = 0, shared = 0,
: nonshared = 0, highmem = 0;
:
: printk("Mem-Info:\n");
: show_free_areas();
:
: for_each_online_pgdat(pgdat) {
: unsigned long i, flags;
:
: pgdat_resize_lock(pgdat, &flags);
: for (i = 0; i < pgdat->node_spanned_pages; i++) {
: struct page *page;
: unsigned long pfn = pgdat->node_start_pfn + i;
:
: if (unlikely(!(i % MAX_ORDER_NR_PAGES)))
: touch_nmi_watchdog();
:
: if (!pfn_valid(pfn))
: continue;
:
: page = pfn_to_page(pfn);
:
: if (PageHighMem(page))
: highmem++;
:
: if (PageReserved(page))
: reserved++;
: else if (page_count(page) == 1)
: nonshared++;
: else if (page_count(page) > 1)
: shared += page_count(page) - 1;
:
: total++;
: }
: pgdat_resize_unlock(pgdat, &flags);
: }
afaict what happened was that the PageReserved() test survived somehow.
Then the page_count() test internally decided that it was a PageTail()
page, then got itself a new page* and then tried to read that pointer's
->count field, and oopsed.
So probably that pfn_to_page() expression returned us some garbage
which doesn't refer to a pageframe at all.
I attempted to cc people who work on these things.
--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org. For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>
next parent reply other threads:[~2010-07-22 22:36 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <bug-16415-27@https.bugzilla.kernel.org/>
2010-07-22 22:34 ` Andrew Morton [this message]
2010-07-22 22:37 ` Andrew Morton
2010-07-27 12:54 ` Mel Gorman
2010-07-28 12:31 ` The Nimble Byte
2010-07-28 15:50 ` Mel Gorman
2010-07-28 21:56 ` Hugh Dickins
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=20100722153443.e266b2d6.akpm@linux-foundation.org \
--to=akpm@linux-foundation.org \
--cc=bugzilla-daemon@bugzilla.kernel.org \
--cc=hannes@cmpxchg.org \
--cc=linux-mm@kvack.org \
--cc=mel@csn.ul.ie \
--cc=tnimble@xs4all.nl \
/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