收起左侧

相册应用扫描大容量硬盘时因内存分配失败崩溃

1
回复
26
查看
[ 复制链接 ]

2

主题

2

回帖

0

牛值

江湖小虾

相册应用扫描大容量硬盘时因内存分配失败崩溃(附 dmesg 证据)

环境信息

  • 系统版本:FNOS(内核 6.18.18-trim)
  • 相册版本:trim.photos v0.9.3
  • 硬件:i3-8100 / Z370 / 16GB DDR4 / GTX 1060 6GB
  • 存储:vol2(12TB 西数)+ vol00 外挂两块 14TB(WUH721414ALE6L0、TOSHIBA MG07ACA14TE)
  • 照片总量:约 80 万张

问题描述

相册应用在扫描包含大量文件的目录时,必定崩溃并显示"找不到文件夹",随后自动重启,再次扫描再次崩溃,进入死循环。

经过逐步排查,定位到问题的根本原因是应用一次性向系统申请约 22.4GB 内存,远超物理内存总量(16GB),被内核拒绝后进程直接退出。

复现步骤

  1. 清空相册数据库,重新启用应用
  2. 添加小目录(如几百张照片的文件夹)→ 扫描正常完成
  3. 添加大目录(14TB 外挂盘根目录,含数十万文件)→ 应用在开始遍历目录树后约 1-2 分钟内崩溃

关键日志证据

dmesg 内核日志(多次出现完全相同的分配请求):

[Tue May  5 00:02:28 2026] __vm_enough_memory: pid: 8214, comm: trim-photos, bytes: 24020779008 not enough memory for the allocation
[Tue May  5 01:25:07 2026] __vm_enough_memory: pid: 13471, comm: trim-photos, bytes: 24020779008 not enough memory for the allocation
[Tue May  5 08:39:39 2026] __vm_enough_memory: pid: 23723, comm: trim-photos, bytes: 24020779008 not enough memory for the allocation
[Tue May  5 09:12:51 2026] __vm_enough_memory: pid: 66716, comm: trim-photos, bytes: 24020779008 not enough memory for the allocation
[Tue May  5 11:00:29 2026] __vm_enough_memory: pid: 78900, comm: trim-photos, bytes: 24020779008 not enough memory for the allocation
[Tue May  5 11:02:04 2026] __vm_enough_memory: pid: 100174, comm: trim-photos, bytes: 24020779008 not enough memory for the allocation

每一次都是请求 24,020,779,008 字节(约 22.4GB),系统只有 16GB 物理内存,分配必然失败。

应用 error.log 中在崩溃时刻(11:02:26)没有任何错误输出,说明进程是被系统直接终止,并非应用内部捕获的异常。

eventlogger 事件日志

错误,ALL,2026-05-05 11:02:26,system,应用 相册 异常退出

分析

从日志来看,trim-photos 在遍历目录树 / 构建文件列表时,可能将所有待处理文件信息一次性加载到内存,而非分批流式处理。当文件数量达到数十万级别时,内存需求暴增至 22GB+,导致 16GB 甚至 32GB 内存的机器都无法承受。

建议开发团队排查扫描逻辑中的内存分配策略,考虑对大目录做分页/流式遍历处理。

临时规避方法

目前只能通过拆分目录(不将整块大容量硬盘根目录直接添加,而是逐个添加子目录)来规避,但对于文件量大的用户来说并不现实。

诉求

希望官方早日解决此BUG,专业场景且有大量应用数据情况下使用飞牛OS的用户正在逐渐增加,想必这种场景以后触发的会越来越多。之前已经反馈过一次并且提交了日志,但官方在帖子下回复后不了了之,这次请朋友找到了日志中的问题点,希望官方能尽快修复。如需联系可在飞牛fnOS粉丝群648找我,昵称:陌上。

收藏
送赞
分享

感谢详细整理!从日志看,trim-photos 在扫描大容量目录时出现了较大的内存申请失败,确实需要从相册扫描任务的批处理、流式遍历和内存占用控制方向进一步排查。相关信息已经转交负责该模块的技术同学跟进,后续会结合你提供的日志和复现路径继续确认。

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则