pymumu / smartdns

A local DNS server to obtain the fastest website IP for the best Internet experience, support DoT, DoH. 一个本地DNS服务器,获取最快的网站IP,获得最佳上网体验,支持DoH,DoT。
https://pymumu.github.io/smartdns/
GNU General Public License v3.0
8.49k stars 1.09k forks source link

新版本OPENWRT下真正导致路由器死机的元凶找到了 #1849

Open qwerttvv opened 2 weeks ago

qwerttvv commented 2 weeks ago

省流:luci的毛病,无论js版本还是lua版本(那个lite的我没试)

以下是发现过程

前情提要 https://github.com/pymumu/smartdns/issues/1844#issuecomment-2442725595

抱歉,上次说结案了是谎报军情,这次找到正经的元凶了…100%复现啊我去……

上次因为大早起着急,只装了个主程序smartdns.1.2024.06.12-2222.aarch64-openwrt-all.ipk,之后覆盖了我以前的配置文件,重启了路由器两次也不是三次之后没死机,就觉得是我自己编译的毛病吧?又直接升级(我的版本号大)了我自己在23.05(openssl3)环境下编译的,之后我发现rc.d没有启动文件,手工建了,重启之后没死,又重启了几下也没事,我就草草误判是没有rc.d的文件谎报军情了

因为一直没装luci,后来就装上了,装完了web没菜单,重启了一下路由就有菜单了,当时路由器也还没有设置自动重启,就又用了几天

再后来我把自动重启加到计划任务了,夜里自动重启的

前天早起我也没留意,直接出门儿了,晚上晚回家发现路由器又死机了

今天有时间,来回来去反复尝试,最后我发现,不装luci就好好的,怎么重启也没事,一装就挂,再后来我试了lua版的luci,也不行…

我分别编译了以下两个luci库的固件,都是js版本当前最新的库,都不行,直接死机…非得进去uboot重刷……

lean的 https://github.com/coolsnowwolf/luci/tree/openwrt-23.05 版本是 https://github.com/coolsnowwolf/luci/tree/146f750ec15debfcc863b2ff00eb79d093ed090e

immortalwrt的 https://github.com/immortalwrt/luci 版本是 https://github.com/immortalwrt/luci/tree/fc76f3e05cbbe5c3938560e32a19cfb32b5e3fb5

100%复现的操作过程 1、采用以上两个js版新luci库编译的固件 2、安装smartdns主程序 3、安装目前最新smartdns的luci,无论js版还是lua版都有问题,这里采用js版操作复现演示 https://github.com/pymumu/smartdns/tree/84f217dbd19f97e30f24af640ddb4cd21ae1e3ec/package/luci-compat https://github.com/pymumu/smartdns/tree/84f217dbd19f97e30f24af640ddb4cd21ae1e3ec/package/luci 3、此时你直接刷新浏览器,smartdns的luci菜单是不显示的,重启路由器 4、第一次重启路由器进来之后,你可以看到smartdns的luci菜单了,无需其它任何操作也不用点进smartdns的luci界面(此时经测试,主程序的服务是好的),直接进行第二次的重启路由器,然后就挂了…… !!!!注意!!!!路由器会死机,断电重启后依旧,得uboot刷机,谨慎操作!!!!

因为我只装主程序,覆盖配置后可以正常使用,然后装js版本luci之后重启一次路由器才看见smartdns的luci菜单,此时不用点进去smartdns的luci界面直接第二次重启路由器就死了

进一步测试 https://downloads.immortalwrt.org/releases/packages-23.05/aarch64_cortex-a53/luci/luci-app-smartdns_1.2024.45_all.ipk https://downloads.immortalwrt.org/releases/packages-23.05/aarch64_cortex-a53/luci/luci-i18n-smartdns-zh-cn_git-24.272.29284-d386ad6_all.ipk 这个luci是好的,重启几次也没事,路由器不会挂,我说immortalwrt库里怎么主程序版本46,luci用的45…我还奇怪……

但是更奇怪的来了,非常诡异,非常搞不懂,官方rls上一个版本也会死机啊… https://github.com/pymumu/smartdns/releases/download/Release45/luci-app-smartdns.1.2024.02.08-0828.all-luci-all.ipk 而且官方直接是中文的,immortalwrt那边是多语言的,不知道他们改了哪里,相关代码仓库跟哪儿

行了,具体哪里有毛病不是我能力范畴了,反正问题定位了,能用的版本和不能用的版本也说清楚了,大佬来看一下子吧 @pymumu @PikuZheng

备注: 1、官方openwrt的luci库我没试 2、smartdns那个lite版luci我没试 3、lean和immortalwrt这两个luci库大致相关的组件版本分别如下

liblua5.1.5 - 5.1.5-r11
liblucihttp-lua - 2023.03.15~9b5b683f-r1
liblucihttp-ucode - 2023.03.15~9b5b683f-r1
liblucihttp0 - 2023.03.15~9b5b683f-r1
以上版本相同,以下不同
libuci-lua - 2023.08.10~5781664d-r1
libuci20130104 - 2023.08.10~5781664d-r1
libuclient20201210 - 2024.10.22~88ae8f20-r1
libuci-lua - 2021-10-22-f84f49f0-6
libuci20130104 - 2021-10-22-f84f49f0-6
libuclient20201210 - 2021-05-14-6a6011df-1
lua - 5.1.5-r11
lua-neturl - 1.1-1-r3
luci - 24.305.31342~fc76f3e
lua - 5.1.5-11
lua-neturl - 1.1-1-3
luci - git-24.302.59055-146f750
luci-base - 24.305.31342~fc76f3e
luci-compat - 24.305.31342~fc76f3e
luci-base - git-24.302.59055-146f750
luci-compat - git-24.302.59055-146f750
luci-lib-base - 24.305.31342~fc76f3e
luci-lib-base - git-24.302.59055-146f750
luci-lua-runtime - 24.305.31342~fc76f3e
luci-lua-runtime - git-24.302.59055-146f750
uci - 2023.08.10~5781664d-r1
uci - 2021-10-22-f84f49f0-6

最后发个抓图吧,看看我来回来去装了多少个版本…也就说进uboot重新刷机多少次… image