收起左侧

更新后,网页端打不开应用中心安装的应用,APP可以

5
回复
246
查看
[ 复制链接 ]

1

主题

4

回帖

0

牛值

江湖小虾

2026-5-18 21:06:11 显示全部楼层 阅读模式

WebChat 不支持文件发送,直接贴给你,复制即可:


🐛 fnOS Bug 反馈:应用中心「打开」按钮无效

系统信息

SAC 版本 v1.1.3104 (build 3.49.1)|SAC MD5 21d653ae74ef65c551c7993087dde8b9|编译时间 2026-05-13

问题现象

应用中心所有已安装应用点击「打开」无任何反应,不跳转不报错。直接访问代理地址(如 http://NAS_IP:5666/p/)正常。

根因

SAC 的 entry 模块路由注册从「公开」变成「内部」:

2026-03-26: module entry register route success           ← 公开 ✅
2026-05-06: module entry register internal route success  ← 内部 ❌

浏览器 Console 报错:

errno: 10000002
errmsg: "no register handler"
req: "appcgi.sac.entry.v1.getUserDesktop"

影响链路

getUserDesktop 返回 no register handler
→ 前端 RD store 加载 entry 数据失败
→ 点击「打开」在 RD.state 中找不到应用
→ 静默失败

已验证排除

数据库、API、nginx、WebSocket、用户 session 全部正常。

架构分析

entry 模块使用 app/core/internalweb.RegisterRoute(仅进程内部可访问),而非 app/core/web.RegisterRoute(公开,ext socket 可访问)。浏览器 WebSocket → trim CGI → SAC ext socket 路径无法到达内部路由。

请求

请确认 entry 模块是否应恢复为公开路由,或提供修复版本。

收藏
送赞
分享
2026-5-21 11:48:19 显示全部楼层

感谢反馈!麻烦提供一下应用中心点击打开无反应的截图,以及浏览器控制台或系统诊断日志中的相关报错,我们会结合报错继续排查。

都没法上传视频和截图,怎么反馈,MP4格式3.7M就是上传失败,力竭了  详情 回复
2026-6-1 11:35

1

主题

4

回帖

0

牛值

江湖小虾

2026-6-1 09:20:30 楼主 显示全部楼层

5553c9219ef16c0d14c6958a2a045908.png

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x

1

主题

4

回帖

0

牛值

江湖小虾

2026-6-1 11:35:41 楼主 显示全部楼层
[quote][size=2][url=forum.php?mod=redirect&goto=findpost&pid=294672&ptid=64025][color=#999999]飞牛运营同学 发表于 2026-5-21 11:48[/color][/url][/size] 感谢反馈!麻烦提供一下应用中心点击打开无反应的截图,以及浏览器控制台或系统诊断日志中的相关报错,我们 ...[/quote]

都没法上传视频和截图,怎么反馈,MP4格式3.7M就是上传失败,力竭了
21d38859a67aad928823e788c212e198.png

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x

1

主题

4

回帖

0

牛值

江湖小虾

2026-6-30 10:24:32 楼主 显示全部楼层

fnOS App Center “打开”按钮无响应 — 问题分析与修复报告

适用场景:fnOS 系统升级后,App Center / 桌面主页中点击已安装应用的”打开”按钮,完全无反应(不弹窗、不跳转、不报错)。


一、问题现象

  1. 在 App Center(应用中心)或桌面主页点击任意已安装应用的”打开”按钮,无任何响应
  2. F12 开发者工具 Console 面板显示:

{
"data":** null,**
"errmsg":** "no register handler",**
"errno":** 10000002,**
"result":** **"fail"
}

  1. 直接通过地址栏访问应用(如 http://NAS_IP:5666/p)可以正常打开
  2. App Center 后端 HTTP API 全部正常返回 200
  3. 仅有部分用户受影响,同一 NAS 上其他账户可能正常

二、根因分析

直接原因

SAC(trim_sac)进程的多个核心模块(entry、i18n、externalnotify、common 等)在启动时 GORM AutoMigrate 触发** panic**,被 goroutine pool 吞掉,导致 handler 未注册。

深层原因

GORM AutoMigrate 内部查询 information_schema.columns 时,会执行类似:

SELECT ... FROM pg_attribute WHERE attrelid = ... AND attnum > 0

PostgreSQL 系统表 pg_attribute.attnum 的类型是 smallint(int2),而 GORM 代码中的字面量 0 被识别为 integer(int4)。

正常情况下 PostgreSQL 有隐式类型转换,smallint > integer 能正常执行。但 fnOS 系统升级后,PostgreSQL 的 search_path 或类型转换规则发生变化,导致运算符解析失败:

ERROR: operator is not unique: integer * smallint (SQLSTATE 42725)
ERROR: operator is not unique: smallint > integer (SQLSTATE 42725)

影响链路

fnOS 升级
→ PG 系统表类型规则变化
→ GORM AutoMigrate panic(被
ants worker pool 捕获)
→ SAC handler 注册被跳过
→ 前端
WebSocket/tRPC 请求找不到 handler

→ "no register handler" (errno: 10000002)
→ "打开"按钮静默失败

关键日志特征

journalctl -u trim_sac | grep -E "panic|ERROR"

如果看到以下日志即为该问题:

ERROR: operator is not unique: smallint > integer (SQLSTATE 42725)
worker exits from panic: ERROR: ...
/app/core/modules/entry/upgrade/init.go
/app/core/modules/i18n/storage/init.go
/app/core/modules/externalnotify/storage/init.go


三、修复方案

原理

重建trim_sac数据库,让 SAC 在新 PG 环境下重新执行 AutoMigrate 创建兼容的表结构,然后恢复备份数据。

手动修复步骤

如果脚本不可用,按以下步骤手动修复:

1. SSH 登录* NAS*

ssh your_user@NAS_IP

2. 停止 SAC 服务

sudo systemctl stop trim_sac.service

3. 导出关键数据

sudo -u postgres psql -d trim_sac -c "COPY entry TO '/tmp/trim_backup_entry.csv' CSV HEADER;"
sudo** -u postgres psql -d trim_sac -c "COPY user_desktop_entry TO '/tmp/trim_backup_entry_desktop.csv' CSV HEADER;"
sudo
-u postgres psql -d trim_sac -c "COPY user_preference TO '/tmp/trim_backup_preference.csv' CSV HEADER;"
sudo
-u postgres psql -d trim_sac -c "COPY wallpaper TO '/tmp/trim_backup_wallpaper.csv' CSV HEADER;"
sudo
-u postgres psql -d trim_sac -c **"COPY sac_config TO '/tmp/trim_backup_sac_config.csv' CSV HEADER;"

4. 重建数据库

sudo -u postgres psql -c "DROP DATABASE IF EXISTS trim_sac;"
sudo** -u postgres psql -c "CREATE DATABASE trim_sac OWNER postgres;"
sudo
-u postgres psql -d trim_sac -c "GRANT ALL ON SCHEMA public TO public;"
sudo
-u postgres psql -d trim_sac -c "ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT ALL ON TABLES TO public;"
sudo
-u postgres psql -d trim_sac -c **"ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT ALL ON SEQUENCES TO public;"

5.启动SAC(让它创建表结构)

sudo systemctl start trim_sac.service
sleep** 5**
sudo** systemctl stop trim_sac.service**

6. 恢复数据

for t in entry user_desktop_entry user_preference wallpaper sac_config**;** do
sudo -u postgres psql -d trim_sac -c "TRUNCATE TABLE $t RESTART IDENTITY CASCADE;"
sudo -u postgres psql -d trim_sac -c "COPY $t FROM '/tmp/trim_backup_${t}.csv' CSV HEADER;"
done

7. 启动服务

sudo systemctl start trim_sac.service
sudo** systemctl restart trim_app_center.service**
sudo** systemctl restart trim_http_cgi.service**

8. 刷新浏览器验证

硬刷新 App Center 页面(Ctrl+Shift+R),点击”打开”按钮应正常响应。


四、验证方法

修复后执行以下命令确认:

# SAC 启动无报错
journalctl** -u trim_sac -n 20 **| grep -i "panic\|ERROR"

# 应该输出为空(或无可疑报错)

# entry 数据正常
sudo** -u postgres psql -d trim_sac -c **"SELECT count(*) FROM entry WHERE source='trim.app-center';"

# 应输出 11 左右


五、预防建议

  1. fnOS 系统升级前,建议先备份 trim_sac 数据库:

for t in entry user_desktop_entry user_preference wallpaper sac_config**;** do
sudo -u postgres psql -d trim_sac -c "COPY $t TO '/tmp/trim_backup_$t**.csv' CSV HEADER;"**
done

  1. 升级后如发现异常,直接执行修复脚本即可,无需联系官方支持
  2. 该问题只在 SAC 的 GORM AutoMigrate 阶段触发,不影响应用数据完整性

六、时间线

时间 操作
15:58 发现问题,开始诊断
16:30 定位到 SAC handler未注册
20:38 F12 Console确认no register handler 报错
20:48 从 SAC日志确认 AutoMigrate panic
20:50 创建 PG跨类型运算符(部分修复)
20:52 重建trim_sac 数据库
20:53 恢复数据,SAC 干净启动
20:55 验证成功,所有”打开”按钮恢复正常
经过不懈努力终于找到原因并且修复了,希望可以帮到同样问题的同学们  详情 回复
2026-6-30 10:25

1

主题

4

回帖

0

牛值

江湖小虾

2026-6-30 10:25:26 楼主 显示全部楼层
惟有熟尔 发表于 2026-6-30 10:24
fnOS App Center “打开”按钮无响应 — 问题分析与修复报告
适用场景:fnOS 系统升级后,App Center / 桌 ...

经过不懈努力终于找到原因并且修复了,希望可以帮到同样问题的同学们
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则