Files
MeowOS-For-R3P2/patch_v2/meow_amsd/meow_amsd_host
T
MeowOS 6d1189eadc fix(amsd): launcher 重启后 amsd 失联三修 — am 命令连接被陈旧 revents 提前关闭/ipc_xchg 无超时冻结/无自动重连
launcher 重启后 am start/kill (MSG_AMS_START/KILL 0x00A0/0x00A1) 不再转发到 launcher。

根因(均在 meow_amsd.c,launcher 无需改):
① am 命令连接被提前关闭(真根因):poll 循环 pfds[] 每圈未清零,上一连接关闭残留的
   POLLHUP/POLLERR 落在 pfds[2+i];accept 后同圈用陈旧 revents 处理新连接 → 误判 HUP/ERR
   提前 close(am 收 SIGPIPE/141)。launcher 重启后 EV 事件连接密集、每条约关闭 → 必触发。
   修:每圈 memset(pfds,0,sizeof pfds),新连接当轮 revents=0、下轮才处理。
② ipc_xchg 无收发超时 → 阻塞 read 冻结整个单线程 amsd(launcher 接受但不回包窗口)。
   修:设 SO_SNDTIMEO/SO_RCVTIMEO(tv_usec<1000000,否则 setsockopt 返 EINVAL 静默失效)。
③ ams_request_ctl 加指数短退避重试(2 次,250ms 基数),launcher 数秒内回来即自动恢复。

验证(宿主端到端):假 launcher 杀→重启 am start 恢复 OK;注入多条 EV 后 am list×10 全
exit=0(无 141);哑 launcher(接受不回包)am start ~2s 有界返回 ERR 且 amsd 存活可继续
am list。meow_amsd mipsel md5 c6c2eda2d63ac73c4b6fac29008e0c9b(am 不变 d687d8bc)。
不动 launcher/sdk/根目录文档。
2026-08-31 19:38:33 +08:00

75 KiB
Executable File