* David Howells <dhowells@xxxxxxxxxx> [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