Created attachment 304744 [details] console image of hang How to reproduce: Had 24 CPU Alderlake 16GB debian12 system running with default kernel (from makecondig) on 6.5-rc4, exercised with no swap to start with. using stress-ng tip commit 0f2ef02e9bc5abb3419c44be056d5fa3c97e0137 (see https://github.com/ColinIanKing/stress-ng ) build and run stress-ng for say 60 minutes: ./stress-ng --cpu-online 50 --brk 50 --swap 50 --vmstat 1 -t 60m Will hang in mm/swapfile.c:718 add_to_avail_list+0x93/0xa0 See attached file for an image of the console on the hang (I'm trying to get the full stack dump).
Hitting the WARN_ON in the following: static void add_to_avail_list(struct swap_info_struct *p) { int nid; spin_lock(&swap_avail_lock); for_each_node(nid) { WARN_ON(!plist_node_empty(&p->avail_lists[nid])); plist_add(&p->avail_lists[nid], &swap_avail_heads[nid]); } spin_unlock(&swap_avail_lock); }
Reminder: the right developers to fix this are unlikely to see this here; for details, search bugzilla.kernel.org in https://docs.kernel.org/admin-guide/reporting-issues.html
Note one needs to run this as root. Turns out one can reproduce this with: sudo ./stress-ng --brk 50 --swap 50 --vmstat 1 -t 60m
..and swapoff on all existing swap is useful before running the reproducer
Created attachment 304757 [details] crash with 6.1 kernel
Created attachment 304758 [details] crash with 6.1 kernel ppc64el