[LU-130] Kernel crash on lustre 2.0 client (page fault in ll_file_read, NULL pointer dereference) Created: 16/Mar/11 Updated: 10/Sep/12 Resolved: 03/May/11 |
|
| Status: | Resolved |
| Project: | Lustre |
| Component/s: | None |
| Affects Version/s: | Lustre 2.0.0 |
| Fix Version/s: | Lustre 2.1.0 |
| Type: | Bug | Priority: | Blocker |
| Reporter: | Patrick Valentin (Inactive) | Assignee: | Johann Lombardi (Inactive) |
| Resolution: | Fixed | Votes: | 0 |
| Labels: | None | ||
| Environment: |
|
||
| Severity: | 3 |
| Rank (Obsolete): | 5057 |
| Description |
|
Hello, As suggested by Johann Lombardi, we open a Jira ticket for this issue which occurs more and more frequently at CEA site (Bull Customer). Bellow is an extract of dmesg output and a stack trace: === from dmesg output: BUG: unable to handle kernel NULL pointer dereference at 000000000000000a === backtrace: PID: 27785 TASK: ffff8803b3e95240 CPU: 5 COMMAND: "fortcom" |
| Comments |
| Comment by Johann Lombardi (Inactive) [ 16/Mar/11 ] |
|
> IP: [<ffffffffa05f7cd7>] cl_vmpage_page+0x57/0x1e0 [obdclass] Could you please try to map this address and also to dump the struct page associated with vmpage? |
| Comment by Peter Jones [ 16/Mar/11 ] |
|
Johann is looking into this one |
| Comment by Johann Lombardi (Inactive) [ 16/Mar/11 ] |
|
From my discussion with Bruno, page->private is equal to 2, as in Potential culprits could be:
Those two features seem to use page->private, although it is not clear to me how we can end up in this situation. In bug |
| Comment by Bruno Faccini (Inactive) [ 16/Mar/11 ] |
|
I will try to check more occurences (there are several per-day at T100 !!) of this crash in order to confirm that page->private concerned value is always 2 ... Also, about Huge-Pages, they don't seem to be used as per our "live" check on Client-nodes, but I will confirm it asap from the crash-dumps too. You speak about Page Migration as a possible "man in the middle" and I will also investigate this possibility. |
| Comment by Johann Lombardi (Inactive) [ 16/Mar/11 ] |
|
free_hot_cold_page() seems to store the migrate type in page->private. MIGRATE_MOVABLE (= 2) could be a good candidate. |
| Comment by Lai Siyao [ 16/Mar/11 ] |
|
Johann, could you explain how you find page->private equals 2? |
| Comment by Bruno Faccini (Inactive) [ 16/Mar/11 ] |
|
The wrong dereferenced address is 0xa which comes from RBX/page->private/0x2 + 0x8 computation ... |
| Comment by Johann Lombardi (Inactive) [ 16/Mar/11 ] |
|
Lai, to be clear, i was on the phone earlier today with Bruno who analyzed the crash dump and told me that page->private = 2. I am no magician |
| Comment by Michael Hebensteit (Inactive) [ 16/Mar/11 ] |
|
We had a similar issue resolved by updating the BIOS Motherboard:
Base Board Information
Manufacturer: Supermicro
Product Name: X8DTN+-B-IN001-O
Version: 2.0
BIOS Information
Vendor: American Megatrends Inc.
Version: 4.6.3
Release Date: 04/24/2010
Address: 0xF0000
Runtime Size: 64 kB
ROM Size: 1024 kB
Characteristics:
PCI is supported
PNP is supported
BIOS is upgradeable
BIOS shadowing is allowed
Boot from CD is supported
Selectable boot is supported
BIOS ROM is socketed
EDD is supported
5.25"/1.2 MB floppy services are supported (int 13h)
3.5"/720 kB floppy services are supported (int 13h)
3.5"/2.88 MB floppy services are supported (int 13h)
Print screen service is supported (int 5h)
8042 keyboard services are supported (int 9h)
Serial services are supported (int 14h)
Printer services are supported (int 17h)
ACPI is supported
USB legacy is supported
BIOS boot specification is supported
Targeted content distribution is supported
BIOS Revision: 4.6
CPU: Intel(R) Xeon(R) CPU E5462 @ 2.80GHz
|
| Comment by Michael Hebensteit (Inactive) [ 16/Mar/11 ] |
|
When trying to debug the 93 issue I created a special kernel that went over all the mm code inserting statements "if(page->private == 2) {printdebug()}". That gave 2 results a) page->private was most likely set in free_hot_cold_page(). I could not find any other location. Together with the fact that the issue resolved after a BIOS upgrade and was not present on similar systems with a completely different BIOS my gut feeling says it's an issue with a CPU mechanism like TLB or GDT that was fixed via the BIOS update. |
| Comment by Bruno Faccini (Inactive) [ 17/Mar/11 ] |
|
Just an update to answer Johann's question left in my vmail today, NO the "PG_Private" flag is not set for the concerned "struct page" in our crash-dumps @Tera-100 !!... |
| Comment by Patrick Valentin (Inactive) [ 17/Mar/11 ] |
|
> IP: [<ffffffffa05f7cd7>] cl_vmpage_page+0x57/0x1e0 [obdclass] The cluster is in maintenance (some blades no longer booting). As soon as it's restarted, I run |
| Comment by Sebastien Buisson (Inactive) [ 23/Mar/11 ] |
|
Hi, Michael I have a question for you. At Bull we are trying to identify which microcode can solve this issue. For our MESCA machines we are testing a new BIOS that integrates the microcode update codename M04206E6_00000008. And now a question for everybody TIA, |
| Comment by Johann Lombardi (Inactive) [ 25/Mar/11 ] |
|
> People from the Kernel Team here at Bull pointed us a kernel bug that is fixed in 2.6.32 Yes, it might be. Do you know if RedHat plans to ship an RHEL6 errata kernel with this patch included? |
| Comment by Patrick Valentin (Inactive) [ 25/Mar/11 ] |
|
I got a copy of the dump from "Kay" cluster, and the dump of the page structure is avalable below.
struct page pointer by R15. crash> rd -64 ffffea0015673008 7
ffffea0015673008: 1800000000000061 ffffffff00000002 a...............
ffffea0015673018: 0000000000000002 ffff8803baf2f990 ................
ffffea0015673028: 000000000000000e ffffea0015822668 ........h&......
ffffea0015673038: ffffea0015591580 ..Y.....
crash> struct page ffffea0015673008
struct page {
flags = 1729382256910270561,
_count = {
counter = 2
},
{
_mapcount = {
counter = -1
},
{
inuse = 65535,
objects = 65535
}
},
{
{
private = 2,
mapping = 0xffff8803baf2f990
},
ptl = {
raw_lock = {
slock = 2
}
},
slab = 0x2,
first_page = 0x2
},
{
index = 14,
freelist = 0xe
},
lru = {
next = 0xffffea0015822668,
prev = 0xffffea0015591580
}
}
|
| Comment by Johann Lombardi (Inactive) [ 31/Mar/11 ] |
|
hm, the address_space_operations has 3 new operations in RHEL6: /* migrate the contents of a page to the specified target */ It seems that NFS implements all of them ... |
| Comment by Build Master (Inactive) [ 04/Apr/11 ] |
|
Integrated in Johann Lombardi : ae03fcb9e831319e0607040a6ced85d604a9b28a
|
| Comment by Johann Lombardi (Inactive) [ 04/Apr/11 ] |
|
I might have found a code path which could explain this problem. Bull, could you please give this patch a try? |
| Comment by Build Master (Inactive) [ 04/Apr/11 ] |
|
Integrated in Johann Lombardi : ae03fcb9e831319e0607040a6ced85d604a9b28a
|
| Comment by Build Master (Inactive) [ 04/Apr/11 ] |
|
Integrated in Johann Lombardi : ae03fcb9e831319e0607040a6ced85d604a9b28a
|
| Comment by Build Master (Inactive) [ 04/Apr/11 ] |
|
Integrated in Johann Lombardi : ae03fcb9e831319e0607040a6ced85d604a9b28a
|
| Comment by Build Master (Inactive) [ 04/Apr/11 ] |
|
Integrated in Johann Lombardi : ae03fcb9e831319e0607040a6ced85d604a9b28a
|
| Comment by Build Master (Inactive) [ 04/Apr/11 ] |
|
Integrated in Johann Lombardi : ae03fcb9e831319e0607040a6ced85d604a9b28a
|
| Comment by Build Master (Inactive) [ 04/Apr/11 ] |
|
Integrated in Johann Lombardi : ae03fcb9e831319e0607040a6ced85d604a9b28a
|
| Comment by Build Master (Inactive) [ 04/Apr/11 ] |
|
Integrated in Johann Lombardi : ae03fcb9e831319e0607040a6ced85d604a9b28a
|
| Comment by Build Master (Inactive) [ 07/Apr/11 ] |
|
Integrated in Johann Lombardi : b03dca93b492dcb14ae24cbb7707fcbf730e27fc
|
| Comment by Build Master (Inactive) [ 07/Apr/11 ] |
|
Integrated in Johann Lombardi : b03dca93b492dcb14ae24cbb7707fcbf730e27fc
|
| Comment by Build Master (Inactive) [ 07/Apr/11 ] |
|
Integrated in Johann Lombardi : b03dca93b492dcb14ae24cbb7707fcbf730e27fc
|
| Comment by Build Master (Inactive) [ 07/Apr/11 ] |
|
Integrated in Johann Lombardi : b03dca93b492dcb14ae24cbb7707fcbf730e27fc
|
| Comment by Build Master (Inactive) [ 07/Apr/11 ] |
|
Integrated in Johann Lombardi : b03dca93b492dcb14ae24cbb7707fcbf730e27fc
|
| Comment by Build Master (Inactive) [ 07/Apr/11 ] |
|
Integrated in Johann Lombardi : b03dca93b492dcb14ae24cbb7707fcbf730e27fc
|
| Comment by Build Master (Inactive) [ 07/Apr/11 ] |
|
Integrated in Johann Lombardi : b03dca93b492dcb14ae24cbb7707fcbf730e27fc
|
| Comment by Build Master (Inactive) [ 07/Apr/11 ] |
|
Integrated in Johann Lombardi : b03dca93b492dcb14ae24cbb7707fcbf730e27fc
|
| Comment by Build Master (Inactive) [ 07/Apr/11 ] |
|
Integrated in Johann Lombardi : b03dca93b492dcb14ae24cbb7707fcbf730e27fc
|
| Comment by Patrick Valentin (Inactive) [ 12/Apr/11 ] |
|
An EFIX containing the patch disabling "page migration" (http://review.whamcloud.com/399) was produced yesterday and should be installed today at CEA site. |
| Comment by Peter Jones [ 21/Apr/11 ] |
|
Update from CEA- patch rolled out on April 19th and no reoccurences since |
| Comment by Johann Lombardi (Inactive) [ 03/May/11 ] |
|
Bull, could you please test it with transparent huge pages enabled? IIRC, you used to reproduce it quickly when this feature was turned on. Thanks in advance. |
| Comment by Sebastien Buisson (Inactive) [ 03/May/11 ] |
|
Johann, As I explained on the phone, we are not able to run with transparent huge pages activated, because it generates a lot of crashes at various levels, from NFS to MPI. Sebastien. |
| Comment by Peter Jones [ 03/May/11 ] |
|
Landed for 2.1. Please reopen if any further instances of this issue occur with this patch in place |
| Comment by Build Master (Inactive) [ 03/May/11 ] |
|
Integrated in Oleg Drokin : 31eea565c0f94f23455d6f9d2bb926a4a53f5b6c
|
| Comment by Build Master (Inactive) [ 03/May/11 ] |
|
Integrated in Oleg Drokin : 31eea565c0f94f23455d6f9d2bb926a4a53f5b6c
|
| Comment by Build Master (Inactive) [ 03/May/11 ] |
|
Integrated in Oleg Drokin : 31eea565c0f94f23455d6f9d2bb926a4a53f5b6c
|
| Comment by Build Master (Inactive) [ 03/May/11 ] |
|
Integrated in Oleg Drokin : 31eea565c0f94f23455d6f9d2bb926a4a53f5b6c
|
| Comment by Build Master (Inactive) [ 03/May/11 ] |
|
Integrated in Oleg Drokin : 31eea565c0f94f23455d6f9d2bb926a4a53f5b6c
|
| Comment by Build Master (Inactive) [ 03/May/11 ] |
|
Integrated in Oleg Drokin : 31eea565c0f94f23455d6f9d2bb926a4a53f5b6c
|
| Comment by Build Master (Inactive) [ 03/May/11 ] |
|
Integrated in Oleg Drokin : 31eea565c0f94f23455d6f9d2bb926a4a53f5b6c
|
| Comment by Build Master (Inactive) [ 03/May/11 ] |
|
Integrated in Oleg Drokin : 31eea565c0f94f23455d6f9d2bb926a4a53f5b6c
|
| Comment by Build Master (Inactive) [ 03/May/11 ] |
|
Integrated in Oleg Drokin : 31eea565c0f94f23455d6f9d2bb926a4a53f5b6c
|
| Comment by Build Master (Inactive) [ 03/May/11 ] |
|
Integrated in Oleg Drokin : 31eea565c0f94f23455d6f9d2bb926a4a53f5b6c
|
| Comment by Build Master (Inactive) [ 03/May/11 ] |
|
Integrated in Oleg Drokin : 31eea565c0f94f23455d6f9d2bb926a4a53f5b6c
|
| Comment by Build Master (Inactive) [ 03/May/11 ] |
|
Integrated in Oleg Drokin : 31eea565c0f94f23455d6f9d2bb926a4a53f5b6c
|
| Comment by Build Master (Inactive) [ 03/May/11 ] |
|
Integrated in Oleg Drokin : 31eea565c0f94f23455d6f9d2bb926a4a53f5b6c
|
| Comment by Build Master (Inactive) [ 03/May/11 ] |
|
Integrated in Oleg Drokin : 31eea565c0f94f23455d6f9d2bb926a4a53f5b6c
|
| Comment by Sebastien Buisson (Inactive) [ 17/May/11 ] |
|
The customer has been testing for several weeks a backport of this patch in 2.0.0.1, now it considers the problem as fixed. |
| Comment by Johann Lombardi (Inactive) [ 17/May/11 ] |
|
Thanks for the feedback Sébastien. XXX please note that a proper page migration handler would need to be implemented if someone wants to enable transparent huge pages one day. |
| Comment by Build Master (Inactive) [ 28/Jun/11 ] |
|
Integrated in Johann Lombardi : cfaa163b5f52d3a89aecaf257581c35b67771887
|
| Comment by Build Master (Inactive) [ 28/Jun/11 ] |
|
Integrated in Johann Lombardi : cfaa163b5f52d3a89aecaf257581c35b67771887
|
| Comment by Build Master (Inactive) [ 28/Jun/11 ] |
|
Integrated in Johann Lombardi : cfaa163b5f52d3a89aecaf257581c35b67771887
|
| Comment by Build Master (Inactive) [ 28/Jun/11 ] |
|
Integrated in Johann Lombardi : cfaa163b5f52d3a89aecaf257581c35b67771887
|
| Comment by Build Master (Inactive) [ 28/Jun/11 ] |
|
Integrated in Johann Lombardi : cfaa163b5f52d3a89aecaf257581c35b67771887
|
| Comment by Build Master (Inactive) [ 28/Jun/11 ] |
|
Integrated in Johann Lombardi : cfaa163b5f52d3a89aecaf257581c35b67771887
|
| Comment by Build Master (Inactive) [ 28/Jun/11 ] |
|
Integrated in Johann Lombardi : cfaa163b5f52d3a89aecaf257581c35b67771887
|
| Comment by Build Master (Inactive) [ 28/Jun/11 ] |
|
Integrated in Johann Lombardi : cfaa163b5f52d3a89aecaf257581c35b67771887
|
| Comment by Build Master (Inactive) [ 28/Jun/11 ] |
|
Integrated in Johann Lombardi : cfaa163b5f52d3a89aecaf257581c35b67771887
|
| Comment by Build Master (Inactive) [ 28/Jun/11 ] |
|
Integrated in Johann Lombardi : cfaa163b5f52d3a89aecaf257581c35b67771887
|
| Comment by Build Master (Inactive) [ 28/Jun/11 ] |
|
Integrated in Johann Lombardi : cfaa163b5f52d3a89aecaf257581c35b67771887
|
| Comment by Build Master (Inactive) [ 28/Jun/11 ] |
|
Integrated in Johann Lombardi : a73a0cf7d6ada798b08815aa1824dcdb51f1c5a9
|
| Comment by Build Master (Inactive) [ 28/Jun/11 ] |
|
Integrated in Johann Lombardi : a73a0cf7d6ada798b08815aa1824dcdb51f1c5a9
|
| Comment by Build Master (Inactive) [ 28/Jun/11 ] |
|
Integrated in Johann Lombardi : a73a0cf7d6ada798b08815aa1824dcdb51f1c5a9
|
| Comment by Build Master (Inactive) [ 28/Jun/11 ] |
|
Integrated in Johann Lombardi : a73a0cf7d6ada798b08815aa1824dcdb51f1c5a9
|
| Comment by Build Master (Inactive) [ 28/Jun/11 ] |
|
Integrated in Johann Lombardi : a73a0cf7d6ada798b08815aa1824dcdb51f1c5a9
|
| Comment by Build Master (Inactive) [ 28/Jun/11 ] |
|
Integrated in Johann Lombardi : a73a0cf7d6ada798b08815aa1824dcdb51f1c5a9
|
| Comment by Build Master (Inactive) [ 28/Jun/11 ] |
|
Integrated in Johann Lombardi : a73a0cf7d6ada798b08815aa1824dcdb51f1c5a9
|
| Comment by Build Master (Inactive) [ 28/Jun/11 ] |
|
Integrated in Johann Lombardi : a73a0cf7d6ada798b08815aa1824dcdb51f1c5a9
|
| Comment by Build Master (Inactive) [ 28/Jun/11 ] |
|
Integrated in Johann Lombardi : a73a0cf7d6ada798b08815aa1824dcdb51f1c5a9
|
| Comment by Build Master (Inactive) [ 28/Jun/11 ] |
|
Integrated in Johann Lombardi : a73a0cf7d6ada798b08815aa1824dcdb51f1c5a9
|
| Comment by Build Master (Inactive) [ 28/Jun/11 ] |
|
Integrated in Johann Lombardi : a73a0cf7d6ada798b08815aa1824dcdb51f1c5a9
|
| Comment by Vladimir V. Saveliev [ 10/Sep/12 ] |
|
Johann Lombardi said on 16/Mar/11 4:14 AM: > Potential culprits could be: Johann Lombardi said on 16/Mar/11 5:41 AM: > That said, prep_new_page() should initialize ->private to 0 when a new page is allocated, so it is still not clear how we could Couldn't it be something like the below: migrate_pages() used to allocate new pages with a function passed as a int migrate_pages(struct list_head *from, In most cases allocating function passed to migrate_pages() ends up There is one exception however. In case of compact_zone() (introduced This function seems to avoid traditional page allocation path, it Then migrate_page_move_mapping() puts that new page into mapping's Does that make sense? |