Out of memory on TL-WR1043ND with 21.02

I've been a happy user of OpenWRT for quite a lot of time. On one of the older devices I've been seeing out of memory errors in the kernel log with 21.02 (fresh install without keeping old configs, no additional packages installed). The device is configured as a dumb AP. Similar topics suggest to try the small buffers package, but it is not available for this hardware. Is there something, which could be done except downgrading to 19.07? Should this be reported as a bug?

Kernel log:

[214637.973792] udhcpc invoked oom-killer: gfp_mask=0x100cca(GFP_HIGHUSER_MOVABLE), order=0, oom_score_adj=0
[214637.984536] CPU: 0 PID: 1646 Comm: udhcpc Not tainted 5.4.154 #0
[214637.991739] Stack : 00000240 800b98ec 80660000 805fa498 00000000 00000000 00000000 00000000
[214638.000563]         00000000 00000000 00000000 00000000 00000000 00000001 808b5bb8 27990fdc
[214638.009239]         808b5c50 00000000 00000000 000000af 00000038 8057ac04 6420352e 342e3135
[214638.018387]         000000af e3c00000 00000000 6d3a2075 80000000 808b5b98 81e61d40 00000000
[214638.027418]         00000000 8065e8fc 0000007c 00100cca 00000000 8032041c 00000000 80790000
[214638.036219]         ...
[214638.038828] Call Trace:
[214638.038846] [<800b98ec>] 0x800b98ec
[214638.045299] [<80660000>] 0x80660000
[214638.048943] [<8057ac04>] 0x8057ac04
[214638.052830] [<8032041c>] 0x8032041c
[214638.056688] [<80069364>] 0x80069364
[214638.060331] [<8006936c>] 0x8006936c
[214638.064125] [<8012eb0c>] 0x8012eb0c
[214638.068067] [<8012f5a4>] 0x8012f5a4
[214638.071746] [<8012fd6c>] 0x8012fd6c
[214638.075494] [<8016f964>] 0x8016f964
[214638.080081] [<8012aec4>] 0x8012aec4
[214638.083713] [<8012b688>] 0x8012b688
[214638.087325] [<80577934>] 0x80577934
[214638.092100] [<80128304>] 0x80128304
[214638.095795] [<80155ba8>] 0x80155ba8
[214638.099406] [<8015ab18>] 0x8015ab18
[214638.103399] [<801940b0>] 0x801940b0
[214638.108016] [<8006f8b8>] 0x8006f8b8
[214638.111646] [<80074ccc>] 0x80074ccc
[214638.115263] 
[214638.117790] Mem-Info:
[214638.120321] active_anon:336 inactive_anon:3 isolated_anon:0
[214638.120321]  active_file:39 inactive_file:85 isolated_file:0
[214638.120321]  unevictable:0 dirty:0 writeback:0 unstable:0
[214638.120321]  slab_reclaimable:209 slab_unreclaimable:1370
[214638.120321]  mapped:2 shmem:12 pagetables:66 bounce:0
[214638.120321]  free:617 free_pcp:0 free_cma:0
[214638.153325] Node 0 active_anon:1344kB inactive_anon:12kB active_file:156kB inactive_file:340kB unevictable:0kB isolated(anon):0kB isolated(file):0kB mapped:8kB dirty:0kB writeback:0kB shmem:48kB writeback_tmp:0kB unstable:0kB all_unreclaimable? yes
[214638.176245] Normal free:2448kB min:5120kB low:5376kB high:5632kB active_anon:1344kB inactive_anon:12kB active_file:156kB inactive_file:340kB unevictable:0kB writepending:0kB present:32768kB managed:26044kB mlocked:0kB kernel_stack:320kB pagetables:264kB bounce:0kB free_pcp:0kB local_pcp:0kB free_cma:0kB
[214638.203622] lowmem_reserve[]: 0 0
[214638.207345] Normal: 1*4kB (U) 127*8kB (U) 88*16kB (U) 0*32kB 0*64kB 0*128kB 0*256kB 0*512kB 0*1024kB 0*2048kB 0*4096kB = 2428kB
[214638.219387] 136 total pagecache pages
[214638.223213] 0 pages in swap cache
[214638.227084] Swap cache stats: add 0, delete 0, find 0/0
[214638.232612] Free swap  = 0kB
[214638.235630] Total swap = 0kB
[214638.238796] 8192 pages RAM
[214638.241657] 0 pages HighMem/MovableOnly
[214638.245897] 1681 pages reserved
[214638.249167] Tasks state (memory values in pages):
[214638.254026] [  pid  ]   uid  tgid total_vm      rss pgtables_bytes swapents oom_score_adj name
[214638.263320] [    619]    81   619      315       20    20480        0             0 ubusd
[214638.271911] [    620]     0   620      235        9    16384        0             0 askfirst
[214638.280779] [    654]     0   654      261       12    16384        0             0 urngd
[214638.290424] [    912]   514   912      316       31    16384        0             0 logd
[214638.299854] [    964]     0   964      521       41    20480        0             0 rpcd
[214638.308364] [   1027]     0  1027      287       12    16384        0             0 dropbear
[214638.317951] [   1076]     0  1076     1065       45    24576        0             0 hostapd
[214638.327595] [   1077]     0  1077     1048       27    20480        0             0 wpa_supplicant
[214638.337682] [   1139]     0  1139      430       35    16384        0             0 netifd
[214638.346246] [   1258]     0  1258      984       35    24576        0             0 uhttpd
[214638.354709] [   1646]     0  1646      313       10    16384        0             0 udhcpc
[214638.363254] [   1650]     0  1650      267       13    16384        0             0 odhcp6c
[214638.372021] [   1714]     0  1714      314       11    12288        0             0 ntpd
[214638.380801] [   4518]     0  4518      277        6    12288        0             0 ntpd-hotplug
[214638.389996] oom-kill:constraint=CONSTRAINT_NONE,nodemask=(null),global_oom,task_memcg=/,task=hostapd,pid=1076,uid=0
[214638.401075] Out of memory: Killed process 1076 (hostapd) total-vm:4260kB, anon-rss:176kB, file-rss:4kB, shmem-rss:0kB, UID:0 pgtables:24kB oom_score_adj:0
[214638.418802] oom_reaper: reaped process 1076 (hostapd), now anon-rss:0kB, file-rss:0kB, shmem-rss:0kB
[214638.429082] logd invoked oom-killer: gfp_mask=0x100cca(GFP_HIGHUSER_MOVABLE), order=0, oom_score_adj=0
[214638.438889] CPU: 0 PID: 912 Comm: logd Not tainted 5.4.154 #0
[214638.445029] Stack : 00000240 800b98ec 80660000 805fa498 00000000 00000000 00000000 00000000
[214638.454108]         00000000 00000000 00000000 00000000 00000000 00000001 814a9bb8 94e0c3d2
[214638.463115]         814a9c50 00000000 00000000 000000ed 00000038 8057ac04 2e342e31 35342023
[214638.471926]         000000ed c6400000 00000000 3a206c6f 80000000 814a9b98 81e62be0 00000000
[214638.480714]         00000000 8065e8fc 0000007c 00100cca 00000001 8032041c 00000000 80790000
[214638.489388]         ...
[214638.491965] Call Trace:
[214638.491983] [<800b98ec>] 0x800b98ec
[214638.498366] [<80660000>] 0x80660000
[214638.503107] [<8057ac04>] 0x8057ac04
[214638.506789] [<8032041c>] 0x8032041c
[214638.510413] [<80069364>] 0x80069364
[214638.514165] [<8006936c>] 0x8006936c
[214638.517811] [<8012eb0c>] 0x8012eb0c
[214638.521760] [<8012f5a4>] 0x8012f5a4
[214638.525369] [<8012fd6c>] 0x8012fd6c
[214638.529150] [<8016f964>] 0x8016f964
[214638.532831] [<8012aec4>] 0x8012aec4
[214638.536714] [<8012b688>] 0x8012b688
[214638.540399] [<801e52a4>] 0x801e52a4
[214638.544020] [<80577934>] 0x80577934
[214638.547805] [<80128304>] 0x80128304
[214638.551473] [<801e51c8>] 0x801e51c8
[214638.555491] [<80155ba8>] 0x80155ba8
[214638.559331] [<8015ab18>] 0x8015ab18
[214638.563290] [<8006f8b8>] 0x8006f8b8
[214638.566955] [<801e69d0>] 0x801e69d0
[214638.570846] [<80074ccc>] 0x80074ccc
[214638.574512] 
[214638.576095] Mem-Info:
[214638.578694] active_anon:292 inactive_anon:3 isolated_anon:0
[214638.578694]  active_file:39 inactive_file:85 isolated_file:0
[214638.578694]  unevictable:0 dirty:0 writeback:0 unstable:0
[214638.578694]  slab_reclaimable:209 slab_unreclaimable:1371
[214638.578694]  mapped:2 shmem:12 pagetables:66 bounce:0
[214638.578694]  free:774 free_pcp:0 free_cma:0
[214638.611212] Node 0 active_anon:1168kB inactive_anon:12kB active_file:156kB inactive_file:340kB unevictable:0kB isolated(anon):0kB isolated(file):0kB mapped:8kB dirty:0kB writeback:0kB shmem:48kB writeback_tmp:0kB unstable:0kB all_unreclaimable? yes
[214638.633991] Normal free:3024kB min:5120kB low:5376kB high:5632kB active_anon:1168kB inactive_anon:12kB active_file:156kB inactive_file:340kB unevictable:0kB writepending:0kB present:32768kB managed:26044kB mlocked:0kB kernel_stack:320kB pagetables:264kB bounce:0kB free_pcp:0kB local_pcp:0kB free_cma:0kB
[214638.662227] lowmem_reserve[]: 0 0
[214638.665942] Normal: 16*4kB (U) 106*8kB (U) 88*16kB (U) 16*32kB (U) 2*64kB (U) 0*128kB 0*256kB 0*512kB 0*1024kB 0*2048kB 0*4096kB = 2960kB
[214638.678792] 136 total pagecache pages
[214638.682805] 0 pages in swap cache
[214638.686568] Swap cache stats: add 0, delete 0, find 0/0
[214638.692178] Free swap  = 0kB
[214638.695532] Total swap = 0kB
[214638.698699] 8192 pages RAM
[214638.701507] 0 pages HighMem/MovableOnly
[214638.705866] 1681 pages reserved
[214638.709111] Tasks state (memory values in pages):
[214638.713969] [  pid  ]   uid  tgid total_vm      rss pgtables_bytes swapents oom_score_adj name
[214638.722956] [    619]    81   619      315       20    20480        0             0 ubusd
[214638.731344] [    620]     0   620      235        9    16384        0             0 askfirst
[214638.740123] [    654]     0   654      261       12    16384        0             0 urngd
[214638.748681] [    912]   514   912      316       31    16384        0             0 logd
[214638.757188] [    964]     0   964      521       41    20480        0             0 rpcd
[214638.766266] [   1027]     0  1027      287       12    16384        0             0 dropbear
[214638.775493] [   1076]     0  1076     1065        0    24576        0             0 hostapd
[214638.784329] [   1077]     0  1077     1048       27    20480        0             0 wpa_supplicant
[214638.793554] [   1139]     0  1139      430       35    16384        0             0 netifd
[214638.802840] [   1258]     0  1258      984       35    24576        0             0 uhttpd
[214638.811523] [   1646]     0  1646      313       10    16384        0             0 udhcpc
[214638.820375] [   1650]     0  1650      267       13    16384        0             0 odhcp6c
[214638.828935] [   1714]     0  1714      314       11    12288        0             0 ntpd
[214638.837398] [   4518]     0  4518      277        6    12288        0             0 ntpd-hotplug
[214638.846963] oom-kill:constraint=CONSTRAINT_NONE,nodemask=(null),global_oom,task_memcg=/,task=rpcd,pid=964,uid=0
[214638.857699] Out of memory: Killed process 964 (rpcd) total-vm:2084kB, anon-rss:160kB, file-rss:4kB, shmem-rss:0kB, UID:0 pgtables:20kB oom_score_adj:0
[214638.935201] ubusd invoked oom-killer: gfp_mask=0x100cca(GFP_HIGHUSER_MOVABLE), order=0, oom_score_adj=0
[214638.945292] CPU: 0 PID: 619 Comm: ubusd Not tainted 5.4.154 #0
[214638.951352] Stack : 00000240 800b98ec 80660000 805fa498 00000000 00000000 00000000 00000000
[214638.960238]         00000000 00000000 00000000 00000000 00000000 00000001 814ddbb8 58ea59b3
[214638.969075]         814ddc50 00000000 00000000 0000012c 00000038 8057ac04 352e342e 31353420
[214638.977856]         0000012c ce400000 00000000 3a207562 80000000 814ddb98 81c7dd40 00000000
[214638.986925]         00000000 8065e8fc 0000007c 00100cca 00000002 8032041c 00000000 80790000
[214638.996265]         ...
[214638.999544] Call Trace:
[214638.999570] [<800b98ec>] 0x800b98ec
[214639.006713] [<80660000>] 0x80660000
[214639.010503] [<8057ac04>] 0x8057ac04
[214639.014347] [<8032041c>] 0x8032041c
[214639.018052] [<80069364>] 0x80069364
[214639.021686] [<8006936c>] 0x8006936c
[214639.025709] [<8012eb0c>] 0x8012eb0c
[214639.029683] [<8012f5a4>] 0x8012f5a4
[214639.033301] [<8012fd6c>] 0x8012fd6c
[214639.037383] [<8016f964>] 0x8016f964
[214639.041346] [<8012aec4>] 0x8012aec4
[214639.045183] [<8012b688>] 0x8012b688
[214639.049212] [<801e52a4>] 0x801e52a4
[214639.052890] [<80577934>] 0x80577934
[214639.056761] [<80128304>] 0x80128304
[214639.060558] [<801e51c8>] 0x801e51c8
[214639.064397] [<80155ba8>] 0x80155ba8
[214639.068059] [<8015ab18>] 0x8015ab18
[214639.071878] [<8006f8b8>] 0x8006f8b8
[214639.075603] [<801e69d0>] 0x801e69d0
[214639.079245] [<80074ccc>] 0x80074ccc
[214639.082867] 
[214639.084736] Mem-Info:
[214639.087190] active_anon:252 inactive_anon:3 isolated_anon:0
[214639.087190]  active_file:39 inactive_file:85 isolated_file:0
[214639.087190]  unevictable:0 dirty:0 writeback:0 unstable:0
[214639.087190]  slab_reclaimable:209 slab_unreclaimable:1375
[214639.087190]  mapped:2 shmem:12 pagetables:61 bounce:0
[214639.087190]  free:835 free_pcp:0 free_cma:0
[214639.119673] Node 0 active_anon:1008kB inactive_anon:12kB active_file:156kB inactive_file:340kB unevictable:0kB isolated(anon):0kB isolated(file):0kB mapped:8kB dirty:0kB writeback:0kB shmem:48kB writeback_tmp:0kB unstable:0kB all_unreclaimable? yes
[214639.142384] Normal free:3328kB min:5120kB low:5376kB high:5632kB active_anon:1008kB inactive_anon:12kB active_file:156kB inactive_file:340kB unevictable:0kB writepending:0kB present:32768kB managed:26044kB mlocked:0kB kernel_stack:320kB pagetables:244kB bounce:0kB free_pcp:0kB local_pcp:0kB free_cma:0kB
[214639.169869] lowmem_reserve[]: 0 0
[214639.173384] Normal: 84*4kB (U) 117*8kB (U) 91*16kB (U) 9*32kB (U) 5*64kB (U) 0*128kB 0*256kB 0*512kB 0*1024kB 0*2048kB 0*4096kB = 3336kB
[214639.186490] 136 total pagecache pages
[214639.190328] 0 pages in swap cache
[214639.194061] Swap cache stats: add 0, delete 0, find 0/0
[214639.200174] Free swap  = 0kB
[214639.203757] Total swap = 0kB
[214639.206858] 8192 pages RAM
[214639.209683] 0 pages HighMem/MovableOnly
[214639.213642] 1681 pages reserved
[214639.217730] Tasks state (memory values in pages):
[214639.222841] [  pid  ]   uid  tgid total_vm      rss pgtables_bytes swapents oom_score_adj name
[214639.232168] [    619]    81   619      315       20    20480        0             0 ubusd
[214639.241239] [    620]     0   620      235        9    16384        0             0 askfirst
[214639.250374] [    654]     0   654      261       12    16384        0             0 urngd
[214639.258861] [    912]   514   912      316       31    16384        0             0 logd
[214639.267362] [   1027]     0  1027      287       12    16384        0             0 dropbear
[214639.276183] [   1076]     0  1076     1065        0    24576        0             0 hostapd
[214639.285626] [   1077]     0  1077     1048       27    20480        0             0 wpa_supplicant
[214639.295141] [   1139]     0  1139      430       35    16384        0             0 netifd
[214639.303768] [   1258]     0  1258      984       35    24576        0             0 uhttpd
[214639.313241] [   1646]     0  1646      313       10    16384        0             0 udhcpc
[214639.322745] [   1650]     0  1650      267       13    16384        0             0 odhcp6c
[214639.331476] [   1714]     0  1714      314       11    12288        0             0 ntpd
[214639.340245] [   4518]     0  4518      277        6    12288        0             0 ntpd-hotplug
[214639.349442] oom-kill:constraint=CONSTRAINT_NONE,nodemask=(null),global_oom,task_memcg=/,task=uhttpd,pid=1258,uid=0
[214639.360331] Out of memory: Killed process 1258 (uhttpd) total-vm:3936kB, anon-rss:136kB, file-rss:4kB, shmem-rss:0kB, UID:0 pgtables:24kB oom_score_adj:0
[214639.813741] wpa_supplicant invoked oom-killer: gfp_mask=0x100cca(GFP_HIGHUSER_MOVABLE), order=0, oom_score_adj=0
[214639.825164] CPU: 0 PID: 1077 Comm: wpa_supplicant Not tainted 5.4.154 #0
[214639.832204] Stack : 00000240 800b98ec 80660000 805fa498 00000000 00000000 00000000 00000000
[214639.840766]         00000000 00000000 00000000 00000000 00000000 00000001 8086dbb8 a30e3eaa
[214639.849517]         8086dc50 00000000 00000000 0000016a 00000038 8057ac04 74207461 696e7465
[214639.858097]         0000016a c1c00000 00000000 6d3a2077 80000000 8086db98 81d1a220 00000000
[214639.866850]         00000000 8065e8f4 00000000 00100cca 00000000 8032041c 00000000 80790000
[214639.875525]         ...
[214639.878186] Call Trace:
[214639.878206] [<800b98ec>] 0x800b98ec
[214639.884495] [<80660000>] 0x80660000
[214639.888125] [<8057ac04>] 0x8057ac04
[214639.891773] [<8032041c>] 0x8032041c
[214639.895652] [<80069364>] 0x80069364
[214639.899962] [<8006936c>] 0x8006936c
[214639.903626] [<8012eb0c>] 0x8012eb0c
[214639.907273] [<8012f5a4>] 0x8012f5a4
[214639.911065] [<8012fd6c>] 0x8012fd6c
[214639.914705] [<8016f964>] 0x8016f964
[214639.918362] [<8012aec4>] 0x8012aec4
[214639.923291] [<8012b688>] 0x8012b688
[214639.927117] [<80577934>] 0x80577934
[214639.931053] [<80128304>] 0x80128304
[214639.934735] [<80155ba8>] 0x80155ba8
[214639.938535] [<8015ab18>] 0x8015ab18
[214639.942566] [<8006e314>] 0x8006e314
[214639.946802] [<801e6990>] 0x801e6990
[214639.950743] [<8006f8b8>] 0x8006f8b8
[214639.954549] [<801e69d0>] 0x801e69d0
[214639.958186] [<80074ccc>] 0x80074ccc
[214639.962002] 
[214639.963687] Mem-Info:
[214639.966419] active_anon:218 inactive_anon:3 isolated_anon:0
[214639.966419]  active_file:39 inactive_file:85 isolated_file:0
[214639.966419]  unevictable:0 dirty:0 writeback:0 unstable:0
[214639.966419]  slab_reclaimable:204 slab_unreclaimable:1379
[214639.966419]  mapped:2 shmem:12 pagetables:55 bounce:0
[214639.966419]  free:1185 free_pcp:0 free_cma:0
[214639.998920] Node 0 active_anon:872kB inactive_anon:12kB active_file:156kB inactive_file:340kB unevictable:0kB isolated(anon):0kB isolated(file):0kB mapped:8kB dirty:0kB writeback:0kB shmem:48kB writeback_tmp:0kB unstable:0kB all_unreclaimable? yes
[214640.022243] Normal free:4688kB min:5120kB low:5376kB high:5632kB active_anon:872kB inactive_anon:12kB active_file:156kB inactive_file:340kB unevictable:0kB writepending:0kB present:32768kB managed:26044kB mlocked:0kB kernel_stack:320kB pagetables:220kB bounce:0kB free_pcp:0kB local_pcp:0kB free_cma:0kB
[214640.049668] lowmem_reserve[]: 0 0
[214640.053109] Normal: 150*4kB (U) 133*8kB (U) 95*16kB (U) 24*32kB (U) 9*64kB (U) 1*128kB (U) 0*256kB 0*512kB 0*1024kB 0*2048kB 0*4096kB = 4656kB
[214640.066720] 136 total pagecache pages
[214640.070563] 0 pages in swap cache
[214640.074115] Swap cache stats: add 0, delete 0, find 0/0
[214640.079599] Free swap  = 0kB
[214640.082705] Total swap = 0kB
[214640.085744] 8192 pages RAM
[214640.088562] 0 pages HighMem/MovableOnly
[214640.092600] 1681 pages reserved
[214640.095868] Tasks state (memory values in pages):
[214640.100829] [  pid  ]   uid  tgid total_vm      rss pgtables_bytes swapents oom_score_adj name
[214640.109766] [    619]    81   619      315       20    20480        0             0 ubusd
[214640.118266] [    620]     0   620      235        9    16384        0             0 askfirst
[214640.127084] [    654]     0   654      261       12    16384        0             0 urngd
[214640.135441] [    912]   514   912      316       31    16384        0             0 logd
[214640.143794] [   1027]     0  1027      287       12    16384        0             0 dropbear
[214640.152508] [   1076]     0  1076     1065        0    24576        0             0 hostapd
[214640.161359] [   1077]     0  1077     1048       27    20480        0             0 wpa_supplicant
[214640.170558] [   1139]     0  1139      430       35    16384        0             0 netifd
[214640.179053] [   1646]     0  1646      313       10    16384        0             0 udhcpc
[214640.187711] [   1650]     0  1650      267       13    16384        0             0 odhcp6c
[214640.196723] [   1714]     0  1714      314       11    12288        0             0 ntpd
[214640.205485] [   4518]     0  4518      277        6    12288        0             0 ntpd-hotplug
[214640.214464] oom-kill:constraint=CONSTRAINT_NONE,nodemask=(null),global_oom,task_memcg=/,task=netifd,pid=1139,uid=0
[214640.225324] Out of memory: Killed process 1139 (netifd) total-vm:1720kB, anon-rss:136kB, file-rss:4kB, shmem-rss:0kB, UID:0 pgtables:16kB oom_score_adj:0
[214640.242296] oom_reaper: reaped process 1139 (netifd), now anon-rss:0kB, file-rss:0kB, shmem-rss:0kB

if your device is the Rev1 (the only rev with white case and black antennas), imho then there isn't much you can do besides going back to 19.xx or doing a hardware mod to change the RAM chip (this is not easy). https://openwrt.org/toh/tp-link/tl-wr1043nd
It has 32MB of RAM and that is too little for modern OpenWrt, this is a problem for all older devices.

2 Likes

you could check what services you got running, if you're only using it as an AP, with a fixed IP, you don't need a lot of the daemons started, like the udhcpc.

or just rebuild your firmware:
see https://openwrt.org/docs/guide-user/additional-software/saving_space
https://openwrt.org/faq/build_image_for_devices_with_only_16_32mb_ram

I've already disabled dnsmasq, firewall and odhcpd as per Dumb AP guide. udhcpc does not appear in LuCI as a package, which could be disabled.

First thing you should do is dump LuCI if you want to keep using this thing. That is literally the first package to remove.

The small buffers flavour applies to ath10k (802.11ac), yours is 802.11n.

1 Like

or just stop the httpd ?

2 Likes

for people that are comfortable with using SSH command line to manage their device, that is

I don't think it's optional if we're setting the bar at 8/64 for 21.02 and up.

I'm just pointing out that most users would rather install an older and unsupported version than lose web interface.

Yep, true that - I'd probably revert to 19.07 for that particular device. I've seen the 4/32 warning, but I was still expecting that a device, for which there is an official 21.02 build with LuCI and everything would be able to work at least as a dumb AP. I've missed the information that 21.02 is recommended only for 8/64 devices. The strangest part is that most of the time the device does not show lack of memory, this is why I wondered what might trigger oom's:

Mem: 18540K used, 7504K free, 1076K shrd, 1800K buff, 3964K cached
CPU:   0% usr   1% sys   0% nic  95% idle   0% io   0% irq   2% sirq

Devices are disabled from official builds due to low RAM only if people open bug reports or send patches to do so (and I mean patches to disable default build, not delete the source).

So just because you see a device in the release does not mean it actually works.

The only automated limit is for flash space, firmware images too big for the device are deleted automatically by the build system.

For the record, it's in the release announcement OpenWrt 21.02.0 - First Stable Release

If you disabled most services, only ram activity should come from Luci (that is activated only when you connect to the device and is otherwise mostly dormant) and wifi.

Also using opkg (installing packages) wastes a lot of RAM and that cache isn't cleared until reboot (or unless you do manual console commands to clear it). So if you installed packages in a low-RAM device, remember to reboot.

Thanks, bobafetthotmail!

I'll disable uhttpd for the moment and monitor how the device behaves. I should be able to start it again from the console in case I need LuCI.