Public bug reported:

## Summary

On Ubuntu 22.04.5 with `linux-image-6.8.0-138-generic` (source `linux-hwe-6.8`,
`6.8.0-138.138~22.04.1`, upstream base 6.8.12), this machine has hit **5 kernel
oops/panics in 9 days**, all inside the `mm/` page-accounting / reclaim code:

```
uncharge_folio+0x189            (mm/memcontrol.c)   GPF, process exit path
mem_cgroup_update_lru_size()    lru_size underflow (mm/memcontrol.c:1460)
rmqueue_bulk+0x11b              (mm/page_alloc.c)   GPF on LIST_POISON in PCP 
list
lru_gen_add_folio / lru_gen_eviction / __lruvec_stat_mod_folio
```

Every one of them is preceded by, or accompanied by, the page's memcg accounting
disagreeing with the page's actual state (`BUG: Bad page state ... page still 
charged
to cgroup`, `lru_size -1`, or a folio→memcg pointer that resolves to garbage).

**This is not MGLRU-specific.** MGLRU was explicitly disabled 
(`/sys/kernel/mm/lru_gen/enabled
= 0x0000`, verified in the boot log) for the most recent crash, which still 
happened in
the generic memcg uncharge path.

## Hardware / software

```
Ubuntu 22.04.5 LTS, kernel 6.8.0-138-generic #138~22.04.1-Ubuntu
/proc/version_signature: Ubuntu 6.8.0-138.138~22.04.1-generic 6.8.12
DMI: MECHREVO M5 / H45 / BIOS J002NS4 (2023-08-23)
CPU: 12th Gen Intel Core i5-12450H (12 threads)
RAM: 15.4 GiB (2x8 GB DDR4, dual channel, no ECC)
cgroup v2 (unified) only, memory.max = max, swap = 2 GiB swapfile
CONFIG_MEMCG=y CONFIG_MEMCG_KMEM=y CONFIG_SWAP=y CONFIG_LRU_GEN=y
CONFIG_LRU_GEN_ENABLED=y CONFIG_LRU_GEN_WALKS_MMU=y
# CONFIG_DEBUG_VM is not set, # CONFIG_KASAN is not set
```

## The crashes

| # | When (local, CST) | RIP | Fault address | Process | MGLRU |
|---|---|---|---|---|---|
| 1 | 2026-10-11 15:34:55 | `lru_gen_add_folio+0x287/0x460` | 
`0xdead000000000108` | Compositor | on |
| 1b | same boot | `__rmqueue_pcplist+0x52/0x2e0` | `0xdead000000000108` | 
Chrome_ChildIOT | on |
| 2 | 2026-10-14 21:38:46 | `lru_gen_eviction+0xbb/0x1c0` | `0xe89068b86349359` 
| kswapd0 | on |
| 3 | 2026-10-14 22:47:22 | `__lruvec_stat_mod_folio+0x57/0xc0` | 
`0x37d000000000621` | ThreadPoolForeg | on |
| 4 | 2026-10-17 09:07:04 | `rmqueue_bulk+0x11b/0x780` | `0xdead000000000108` | 
qoder | on |
| **5** | **2026-10-20 01:40:25** | **`uncharge_folio+0x189/0x230`** | 
**`0xffff1323224727a0`** | **ThreadPoolForeg** | **off (0x0000)** |

Event 5, full trace in `03-evidence.txt`:

```
general protection fault, probably for non-canonical address 
0xffff1323224727a0: 0000 [#1] PREEMPT SMP NOPTI
CPU: 6 PID: 26610 Comm: ThreadPoolForeg Not tainted 6.8.0-138-generic
RIP: 0010:uncharge_folio+0x189/0x230
Code: ... 49 8b 46 10 a8 03 75 6a <65> 48 ff 00 ...
RAX: ffff899072b727a0  R13: ffff898f4e2ecff8  R14: ffffe9fdcc35ab88
Call Trace:
 __mem_cgroup_uncharge_list+0x62/0xb0
 release_pages+0x13a/0x490
 free_pages_and_swap_cache+0x4a/0x60
 tlb_batch_pages_flush+0x43/0x80
 tlb_flush_mmu+0x3a/0x120
 zap_pte_range+0x707/0xc30
 unmap_vmas+0xb5/0x190
 exit_mmap+0x10a/0x3f0
 mmput/exit_mm/do_exit
```

The faulting instruction is `incq %gs:(%rax)` — a per-CPU add through a pointer 
taken
from the folio/memcg side, resolving to a non-canonical address.

**In the same second** (`mm/memcontrol.c:1460`):

```
mem_cgroup_update_lru_size(00000000c92e446b, 0, -1): lru_size -1
WARNING: CPU: 7 PID: 26540 Comm: Chrome_ChildIOT Tainted: G  D
```

After the oops the task never released its RCU read-side section, so the box 
spent the
next 35 minutes in a repeating `rcu_preempt detected stalls ... P26610` cascade 
—
logind/dbus calls timed out, the desktop became unusable, and the machine had 
to be
power-cycled.

Event 4 is the same family seen from the allocator side — 32 `BUG: Bad page 
state`
reports in ~1 s, all for ext4 page-cache pages of one file, every one with
`page dumped because: page still charged to cgroup`, followed 37 ms later by
`rmqueue_bulk` walking a PCP list whose `next` pointer was `LIST_POISON1`.

## What has been excluded

* **RAM**: `memtest86+` from USB, **12 passes, 0 errors, 9 h 45 min** over the 
full
  15.4 GiB. (The same tool found a genuinely bad DIMM on this machine in Aug 
2026 with
  4 passes, so it is sensitive here.) No ECC, so this is the strongest 
available check.
* **Disk**: NVMe SMART clean; ext4 `fsck` clean.
* **Applications**: the crashing processes are Chrome/Qoder/VS Code worker 
threads, but
  the bad pages belong to unrelated memory (e.g. a FITS file's page cache), and 
the
  same fault class hits `kswapd0` with no application involved.
* **MGLRU**: disabled for event 5, crash persisted.

## Reproduction attempts (negative)

Synthetic loads did **not** reproduce it:

* 900 sequential `app.slice` transient scopes, 48 MB shmem each → nothing
* 60 batches x 8 concurrent scopes x 256 MB (2 GB per batch) → nothing
* 8 GiB anonymous ballast (MemAvailable ~2 GiB) + 2657 scope churn cycles with
  direct reclaim active (`pgscan_direct` 44k, `pswpout` ~33k pages) → nothing

Total ~3600 cgroup create/destroy cycles, zero warnings. The trigger appears to 
need
real Chromium-family process behaviour (threads, i915 GEM buffers, shared 
memory)
and/or many hours of uptime, not just memory pressure.

## Impact

Machine is unusable after each event (hard power-off required; this model has no
battery, so every event is an unclean shutdown). 5 events in 9 days.

## What I can do to help

* Run any debug kernel / patch (KASAN, page_owner, debug_pagealloc) if you tell 
me which one.
* Test a mainline kernel if that helps narrow it down.
* Provide full `pstore` dumps, journals and the reproduction scripts.

## Attachments

* `03-evidence.txt` — assembled bundle (system info, all five traces, MGLRU 
evidence,
  reproduction attempts)
* `journal_20261020_crash_excerpt.log` — 01:35–02:16 window covering event 5 
and the
  RCU stall cascade (273 KB). The full journal of that boot (2.3 MB) is 
available on request.
* `journal_boot-5_20261014_crash.log`, `journal_boot-3_20261014_crash.log` — 
events 2 and 3
* `pstore-179170409/`, `pstore-179198512/`, `pstore-179198924/`, 
`pstore-179219922/`,
  `pstore-179243162/` — EFI pstore dmesg dumps (each directory = one oops/panic)
--- 
ProblemType: Bug
ApportVersion: 2.20.11-0ubuntu82.10
Architecture: amd64
AudioDevicesInUse:
 USER        PID ACCESS COMMAND
 /dev/snd/controlC0:  ajst       2623 F.... pulseaudio
 /dev/snd/controlC1:  ajst       2623 F.... pulseaudio
CRDA: N/A
CasperMD5CheckResult: pass
CurrentDesktop: ubuntu:GNOME
DistroRelease: Ubuntu 22.04
InstallationDate: Installed on 2024-03-16 (948 days ago)
InstallationMedia: Ubuntu 22.04.4 LTS "Jammy Jellyfish" - Release amd64 
(20240220)
MachineType: MECHREVO M5
Package: linux (not installed)
ProcFB: 0 i915drmfb
ProcKernelCmdLine: BOOT_IMAGE=/boot/vmlinuz-6.8.0-138-generic 
root=UUID=e7bc3822-7d1c-4573-8569-c0706eefb3ac ro quiet splash vt.handoff=7
ProcVersionSignature: Ubuntu 6.8.0-138.138~22.04.1-generic 6.8.12
RelatedPackageVersions:
 linux-restricted-modules-6.8.0-138-generic N/A
 linux-backports-modules-6.8.0-138-generic  N/A
 linux-firmware                             20220329.git681281e4-0ubuntu3.42
Tags:  jammy
Uname: Linux 6.8.0-138-generic x86_64
UpgradeStatus: No upgrade log present (probably fresh install)
UserGroups: adm cdrom dip lpadmin lxd plugdev sambashare sudo
_MarkForUpload: True
dmi.bios.date: 08/23/2023
dmi.bios.release: 5.27
dmi.bios.vendor: American Megatrends International, LLC.
dmi.bios.version: J002NS4
dmi.board.asset.tag: Default string
dmi.board.name: H45
dmi.board.vendor: MECHREVO
dmi.board.version: V1.0
dmi.chassis.asset.tag: Default string
dmi.chassis.type: 3
dmi.chassis.vendor: MECHREVO
dmi.modalias: 
dmi:bvnAmericanMegatrendsInternational,LLC.:bvrJ002NS4:bd08/23/2023:br5.27:svnMECHREVO:pnM5:pvr:rvnMECHREVO:rnH45:rvrV1.0:cvnMECHREVO:ct3:cvr:sku800046290:
dmi.product.family: WuJie
dmi.product.name: M5
dmi.product.sku: 800046290
dmi.sys.vendor: MECHREVO

** Affects: linux (Ubuntu)
     Importance: Undecided
         Status: New


** Tags: apport-collected jammy

** Tags added: apport-collected jammy

** Description changed:

  ## Summary
  
  On Ubuntu 22.04.5 with `linux-image-6.8.0-138-generic` (source 
`linux-hwe-6.8`,
  `6.8.0-138.138~22.04.1`, upstream base 6.8.12), this machine has hit **5 
kernel
  oops/panics in 9 days**, all inside the `mm/` page-accounting / reclaim code:
  
  ```
  uncharge_folio+0x189            (mm/memcontrol.c)   GPF, process exit path
  mem_cgroup_update_lru_size()    lru_size underflow (mm/memcontrol.c:1460)
  rmqueue_bulk+0x11b              (mm/page_alloc.c)   GPF on LIST_POISON in PCP 
list
  lru_gen_add_folio / lru_gen_eviction / __lruvec_stat_mod_folio
  ```
  
  Every one of them is preceded by, or accompanied by, the page's memcg 
accounting
  disagreeing with the page's actual state (`BUG: Bad page state ... page still 
charged
  to cgroup`, `lru_size -1`, or a folio→memcg pointer that resolves to garbage).
  
  **This is not MGLRU-specific.** MGLRU was explicitly disabled 
(`/sys/kernel/mm/lru_gen/enabled
  = 0x0000`, verified in the boot log) for the most recent crash, which still 
happened in
  the generic memcg uncharge path.
  
  ## Hardware / software
  
  ```
  Ubuntu 22.04.5 LTS, kernel 6.8.0-138-generic #138~22.04.1-Ubuntu
  /proc/version_signature: Ubuntu 6.8.0-138.138~22.04.1-generic 6.8.12
  DMI: MECHREVO M5 / H45 / BIOS J002NS4 (2023-08-23)
  CPU: 12th Gen Intel Core i5-12450H (12 threads)
  RAM: 15.4 GiB (2x8 GB DDR4, dual channel, no ECC)
  cgroup v2 (unified) only, memory.max = max, swap = 2 GiB swapfile
  CONFIG_MEMCG=y CONFIG_MEMCG_KMEM=y CONFIG_SWAP=y CONFIG_LRU_GEN=y
  CONFIG_LRU_GEN_ENABLED=y CONFIG_LRU_GEN_WALKS_MMU=y
  # CONFIG_DEBUG_VM is not set, # CONFIG_KASAN is not set
  ```
  
  ## The crashes
  
  | # | When (local, CST) | RIP | Fault address | Process | MGLRU |
  |---|---|---|---|---|---|
  | 1 | 2026-10-11 15:34:55 | `lru_gen_add_folio+0x287/0x460` | 
`0xdead000000000108` | Compositor | on |
  | 1b | same boot | `__rmqueue_pcplist+0x52/0x2e0` | `0xdead000000000108` | 
Chrome_ChildIOT | on |
  | 2 | 2026-10-14 21:38:46 | `lru_gen_eviction+0xbb/0x1c0` | 
`0xe89068b86349359` | kswapd0 | on |
  | 3 | 2026-10-14 22:47:22 | `__lruvec_stat_mod_folio+0x57/0xc0` | 
`0x37d000000000621` | ThreadPoolForeg | on |
  | 4 | 2026-10-17 09:07:04 | `rmqueue_bulk+0x11b/0x780` | `0xdead000000000108` 
| qoder | on |
  | **5** | **2026-10-20 01:40:25** | **`uncharge_folio+0x189/0x230`** | 
**`0xffff1323224727a0`** | **ThreadPoolForeg** | **off (0x0000)** |
  
  Event 5, full trace in `03-evidence.txt`:
  
  ```
  general protection fault, probably for non-canonical address 
0xffff1323224727a0: 0000 [#1] PREEMPT SMP NOPTI
  CPU: 6 PID: 26610 Comm: ThreadPoolForeg Not tainted 6.8.0-138-generic
  RIP: 0010:uncharge_folio+0x189/0x230
  Code: ... 49 8b 46 10 a8 03 75 6a <65> 48 ff 00 ...
  RAX: ffff899072b727a0  R13: ffff898f4e2ecff8  R14: ffffe9fdcc35ab88
  Call Trace:
   __mem_cgroup_uncharge_list+0x62/0xb0
   release_pages+0x13a/0x490
   free_pages_and_swap_cache+0x4a/0x60
   tlb_batch_pages_flush+0x43/0x80
   tlb_flush_mmu+0x3a/0x120
   zap_pte_range+0x707/0xc30
   unmap_vmas+0xb5/0x190
   exit_mmap+0x10a/0x3f0
   mmput/exit_mm/do_exit
  ```
  
  The faulting instruction is `incq %gs:(%rax)` — a per-CPU add through a 
pointer taken
  from the folio/memcg side, resolving to a non-canonical address.
  
  **In the same second** (`mm/memcontrol.c:1460`):
  
  ```
  mem_cgroup_update_lru_size(00000000c92e446b, 0, -1): lru_size -1
  WARNING: CPU: 7 PID: 26540 Comm: Chrome_ChildIOT Tainted: G  D
  ```
  
  After the oops the task never released its RCU read-side section, so the box 
spent the
  next 35 minutes in a repeating `rcu_preempt detected stalls ... P26610` 
cascade —
  logind/dbus calls timed out, the desktop became unusable, and the machine had 
to be
  power-cycled.
  
  Event 4 is the same family seen from the allocator side — 32 `BUG: Bad page 
state`
  reports in ~1 s, all for ext4 page-cache pages of one file, every one with
  `page dumped because: page still charged to cgroup`, followed 37 ms later by
  `rmqueue_bulk` walking a PCP list whose `next` pointer was `LIST_POISON1`.
  
  ## What has been excluded
  
  * **RAM**: `memtest86+` from USB, **12 passes, 0 errors, 9 h 45 min** over 
the full
    15.4 GiB. (The same tool found a genuinely bad DIMM on this machine in Aug 
2026 with
    4 passes, so it is sensitive here.) No ECC, so this is the strongest 
available check.
  * **Disk**: NVMe SMART clean; ext4 `fsck` clean.
  * **Applications**: the crashing processes are Chrome/Qoder/VS Code worker 
threads, but
    the bad pages belong to unrelated memory (e.g. a FITS file's page cache), 
and the
    same fault class hits `kswapd0` with no application involved.
  * **MGLRU**: disabled for event 5, crash persisted.
  
  ## Reproduction attempts (negative)
  
  Synthetic loads did **not** reproduce it:
  
  * 900 sequential `app.slice` transient scopes, 48 MB shmem each → nothing
  * 60 batches x 8 concurrent scopes x 256 MB (2 GB per batch) → nothing
  * 8 GiB anonymous ballast (MemAvailable ~2 GiB) + 2657 scope churn cycles with
    direct reclaim active (`pgscan_direct` 44k, `pswpout` ~33k pages) → nothing
  
  Total ~3600 cgroup create/destroy cycles, zero warnings. The trigger appears 
to need
  real Chromium-family process behaviour (threads, i915 GEM buffers, shared 
memory)
  and/or many hours of uptime, not just memory pressure.
  
  ## Impact
  
  Machine is unusable after each event (hard power-off required; this model has 
no
  battery, so every event is an unclean shutdown). 5 events in 9 days.
  
  ## What I can do to help
  
  * Run any debug kernel / patch (KASAN, page_owner, debug_pagealloc) if you 
tell me which one.
  * Test a mainline kernel if that helps narrow it down.
  * Provide full `pstore` dumps, journals and the reproduction scripts.
  
  ## Attachments
  
  * `03-evidence.txt` — assembled bundle (system info, all five traces, MGLRU 
evidence,
    reproduction attempts)
  * `journal_20261020_crash_excerpt.log` — 01:35–02:16 window covering event 5 
and the
    RCU stall cascade (273 KB). The full journal of that boot (2.3 MB) is 
available on request.
  * `journal_boot-5_20261014_crash.log`, `journal_boot-3_20261014_crash.log` — 
events 2 and 3
  * `pstore-179170409/`, `pstore-179198512/`, `pstore-179198924/`, 
`pstore-179219922/`,
    `pstore-179243162/` — EFI pstore dmesg dumps (each directory = one 
oops/panic)
+ --- 
+ ProblemType: Bug
+ ApportVersion: 2.20.11-0ubuntu82.10
+ Architecture: amd64
+ AudioDevicesInUse:
+  USER        PID ACCESS COMMAND
+  /dev/snd/controlC0:  ajst       2623 F.... pulseaudio
+  /dev/snd/controlC1:  ajst       2623 F.... pulseaudio
+ CRDA: N/A
+ CasperMD5CheckResult: pass
+ CurrentDesktop: ubuntu:GNOME
+ DistroRelease: Ubuntu 22.04
+ InstallationDate: Installed on 2024-03-16 (948 days ago)
+ InstallationMedia: Ubuntu 22.04.4 LTS "Jammy Jellyfish" - Release amd64 
(20240220)
+ MachineType: MECHREVO M5
+ Package: linux (not installed)
+ ProcFB: 0 i915drmfb
+ ProcKernelCmdLine: BOOT_IMAGE=/boot/vmlinuz-6.8.0-138-generic 
root=UUID=e7bc3822-7d1c-4573-8569-c0706eefb3ac ro quiet splash vt.handoff=7
+ ProcVersionSignature: Ubuntu 6.8.0-138.138~22.04.1-generic 6.8.12
+ RelatedPackageVersions:
+  linux-restricted-modules-6.8.0-138-generic N/A
+  linux-backports-modules-6.8.0-138-generic  N/A
+  linux-firmware                             20220329.git681281e4-0ubuntu3.42
+ Tags:  jammy
+ Uname: Linux 6.8.0-138-generic x86_64
+ UpgradeStatus: No upgrade log present (probably fresh install)
+ UserGroups: adm cdrom dip lpadmin lxd plugdev sambashare sudo
+ _MarkForUpload: True
+ dmi.bios.date: 08/23/2023
+ dmi.bios.release: 5.27
+ dmi.bios.vendor: American Megatrends International, LLC.
+ dmi.bios.version: J002NS4
+ dmi.board.asset.tag: Default string
+ dmi.board.name: H45
+ dmi.board.vendor: MECHREVO
+ dmi.board.version: V1.0
+ dmi.chassis.asset.tag: Default string
+ dmi.chassis.type: 3
+ dmi.chassis.vendor: MECHREVO
+ dmi.modalias: 
dmi:bvnAmericanMegatrendsInternational,LLC.:bvrJ002NS4:bd08/23/2023:br5.27:svnMECHREVO:pnM5:pvr:rvnMECHREVO:rnH45:rvrV1.0:cvnMECHREVO:ct3:cvr:sku800046290:
+ dmi.product.family: WuJie
+ dmi.product.name: M5
+ dmi.product.sku: 800046290
+ dmi.sys.vendor: MECHREVO

-- 
You received this bug notification because you are a member of Ubuntu
Bugs, which is subscribed to Ubuntu.
https://bugs.launchpad.net/bugs/2171572

Title:
  mm/memcg: repeated general protection fault in uncharge_folio +
  lru_size underflow on 6.8.0-138 (jammy HWE), independent of MGLRU

To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/linux/+bug/2171572/+subscriptions


-- 
ubuntu-bugs mailing list
[email protected]
https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs

Reply via email to