kernel BUG at lib/maple_tree.c:1237!
Liam R. Howlett
Liam.Howlett at Oracle.com
Tue Mar 19 12:56:56 PDT 2024
* David Howells <dhowells at redhat.com> [240319 14:09]:
> Hi Liam,
>
> I managed to trigger a bug in the maple-tree. I don't know that it's
> definitely your bug as I had a process stuck in the D state, but I don't
> believe it was doing anything that modified maple trees at the time, just
> waiting for PG_writeback on a folio. Anyway, I was running the generic/130
> xfstest and pressed ctrl-C and got a bunch of oopses (see attached).
>
> Unfortunately, I can't do anything to try and get more information as anything
> that tries to clone() gets another oops.
>
> The RIP is mas_alloc_nodes+0x55/0x16e:
>
> mas_set_alloc_req(mas, 0);
> if (mas->mas_flags & MA_STATE_PREALLOC) {
> if (allocated)
> return;
> BUG_ON(!allocated); <------- 1237
> WARN_ON(!allocated);
> }
>
> The base kernel is at commit bf3a69c6861f plus some of my patches, none of
> which alter the maple-tree code or MM code.
>
How can we be stuck in D state on a BUG_ON()?
If this is a maple tree bug, then it's in the calculations done for
preallocation. The last time that changed was in December in commit
4249f13c11be8b8b7bf93204185e150c3bdc968d. Could you try reverting this
change?
>From the trace, this is failing on loading a binary. Could you please
try changing BUG_ON() to MAS_BUG_ON(mas, !allocated) to get more
information?
I ran generic/130 here and it worked in my testing. Does this happen
without your patches? Maybe the changes you make are causing something
to happen more frequently?
Thanks,
Liam
More information about the maple-tree
mailing list