xfangfang / wiliwili

第三方B站客户端,目前可以运行在PC全平台、PSVita、PS4 、Xbox 和 Nintendo Switch上
https://xfangfang.github.io/wiliwili
GNU General Public License v3.0
3.18k stars 146 forks source link

wiliwili占用内存过大导致从相册启动hbmenu后白屏死机 #150

Closed Gokou-Ruri closed 1 year ago

Gokou-Ruri commented 1 year ago

目前我NS上所有的游戏或软件都没有这个情况,只有wiliwili会这样。 在启动wiliwili的时候绝对不能从相册进入hbmenu,否则必定白屏死机,只能长按电源键强制关机。 启动其它游戏包括王国之泪都能正常进入相册hbmenu,从桌面图标启动nxmp等自制软件再进入相册hbmenu也不会导致死机。

xfangfang commented 1 year ago

@Gokou-Ruri

我认为你的结论是错误的:

  1. 据我所知,通过桌面图标进入应用时,内存分配是固定的,不会存在过大的内存导致从相册启动hbmenu时内存不足。
  2. 而且,刚刚开启应用时内存占用并不高,不可能因为内存不足出现这个问题。

目前我正在使用靠注入器越狱的初代switch,并没有这个现象。但是我确实听到过其他人出现类似的问题,我认为有几个可能:

  1. lite机型可能会有不同
  2. exFat 内存卡导致的各种奇怪问题
xfangfang commented 1 year ago

我倾向于认为是内存卡或者虚拟系统导致的奇怪问题,因为我本地没有这个问题,所以先关闭这个issue了。

如果有其他进一步的证据证明是wiliwili的问题,欢迎随时重新打开这个issue。

Gokou-Ruri commented 1 year ago

@Gokou-Ruri

我认为你的结论是错误的:

  1. 据我所知,通过桌面图标进入应用时,内存分配是固定的,不会存在过大的内存导致从相册启动hbmenu时内存不足。
  2. 而且,刚刚开启应用时内存占用并不高,不可能因为内存不足出现这个问题。

目前我正在使用靠注入器越狱的初代switch,并没有这个现象。但是我确实听到过其他人出现类似的问题,我认为有几个可能:

  1. lite机型可能会有不同
  2. exFat 内存卡导致的各种奇怪问题

为什么内存卡的文件系统也会导致这种问题?

xfangfang commented 1 year ago

@Gokou-Ruri 我对这一块了解的不多,大家的普遍说法是 switch系统对exFat驱动支持不佳。

比如我遇到过,exFat卡运行nro后 nro 内容发生变更导致无法再次运行,按理说只是把程序从卡里读到内存里运行,怎么也不会出现源文件被更改的情况吧?

还遇到过 exFat卡虚拟系统打开系统输入法报错,等等一系列莫名其妙的问题,最终解决办法都是换成Fat32。

所以我在 wiliwili 的文档中 特别注明了,反馈问题需要保证自己正在使用 Fat32 内存卡。包括很多自制软件都有标注需要使用Fat32内存卡运行。

国内的情况相对比较复杂,即使在各种宣传下仍然有相当一部分人认为 exFat 格式更佳,逛了贴吧或者一些论坛,推荐使用 exFat 卡的声音还在持续着,这个我也搞不明白。

xfangfang commented 1 year ago

@Gokou-Ruri 刚刚收到了群友反馈,他表示问题可能是sys-dvr插件导致的,他删除这个插件问题就解决了。 另外一个观点是可能是中文特斯拉导致的问题。

他的解决方案是换了一个整合包。


群友反馈说,正在使用oled非树莓派硬破机型,整合包作者说自己的机器没问题,但是群友的机器却存在问题。

另一位存在问题的群友,使用的是初代注入破解switch。

看起来与机型无关,问题很可能是contents下是安装了太多的后台插件。

contents下插件使用的内存来源我不是特别了解,我认为可能是和相册hbmenu共享的。 但是这样的话就没办法解释为什么只在wiliwili运行时会出现问题。

一个解释是,和其他自制应用相比wiliwili申请了很多的系统资源(包括socket相关的内容:BSD service session number, Number of buffers for each socket)

可能是这部分资源不足导致的问题,从github搜了一下,使用到相似设定的软件不多,可以测试看看有没有类似的问题:

https://supertuxkart.net/zh_CN/Download

https://github.com/t-flo/nxTransmission

还有chiaki

Gokou-Ruri commented 1 year ago

@xfangfang 谢谢解答,我当初制作系统的时候选exfat主要是考虑到需要在NS上播放视频,因为NS屏幕比较大,在没有电视的环境下我一般是用NS看电影的,后面有空我会试试把卡转成fat32看看。 exfat的可靠性确实是不如fat32,因为其分配表只有一份,没法做校验和备份。当初在选文件系统的时候也确实纠结过,但碍于fat32的文件大小限制,就选了exfat。 驱动问题也确实有可能,因为我也确实见过NS以外的其它一些设备对exfat兼容很差,大概也是驱动问题吧。

我的NS是续航版,插件不多,系统是自己做的,集成的插件也不多,没有SYS-DVR之类的插件。中文特斯拉这个舍弃不了XD 不知道有没有什么技术手段排查这种问题?比如输出日志?hbmenu崩溃时好像大气层和自制软件都没崩,比如我用triplayer播放音乐时,如果碰到这种崩溃,音乐依旧在后台播放,但是在蓝屏界面只能按音量键重启,无法回到系统界面,这种情况下应该是能够输出日志并保存的?没有日志的纠错确实是盲人摸象,难度太高了。

xfangfang commented 1 year ago

群友说,他换了一个整合包,包内还是有中文特斯拉和sys-dvr,但是问题就消失了。 特斯拉里面一共也没有几句英语,用原版应该就可以了,而且确实会节约一些内存(因为需要把中文字体完整地载入内存中)。

一般的崩溃,会在大气层目录下 crash_report 或者其他目录下生成部分堆栈信息,但是对应死机的情况不一定能保存下内容来。

这个问题不一定是什么原因导致的,如果十分在意,确实可以换一换整合包看看。也可以尝试更新大气层,暂时删除所有插件一点点尝试。

Gokou-Ruri commented 1 year ago

把卡换成了fat32,虚拟系统里安装的所有游戏都失效了……

xfangfang commented 1 year ago

@Gokou-Ruri 我猜你是做了虚拟系统的迁移,这可能就是exfat在switch上的问题之一,即使是简单的拷贝都不能保持稳定。