Open MingcongBai opened 8 months ago
另附百度网盘一处疑似发行质量问题:/opt/baidunetdisk/chrome-sandbox
应为 root:root
所有并带有 4755 权限位,但安装软件包后发现是 755;他们在 /usr/share/applications/baidunetdisk.desktop
中使用 --no-sandbox
绕过了这一问题,不开沙箱功能的原因不详,但最好报告反馈一下
该错误现象疑似因为载入了不正确的 so,建议以此为入口开始排查。
该错误疑似因为载入了不正确的 so,建议以此为入口开始排查。
经查,baidunetdisk 中只有 libEGL.so
和 libGLES.so
两个库可以删除,其余都是应用必须的 CEF 库,不能删;删除后症状依旧
经查,情况和 #8 一致,都是因为没有正确连接 openssl 所致,涉及的 so 有:
libbrowserengine.so
libkernel.so
libminosagent.so
libplayer.so
经查,情况和 #8 一致,都是因为没有正确连接 openssl 所致,涉及的 so 有:
* `libbrowserengine.so` * `libkernel.so` * `libminosagent.so` * `libplayer.so`
啧,那就只能报告给厂商了
经查,情况和 #8 一致,都是因为没有正确连接 openssl 所致,涉及的 so 有:
libbrowserengine.so
libkernel.so
libminosagent.so
libplayer.so
百度网盘的情况和 #8 不完全一致,在钉钉中,是本应动态链接 libssl 却未能在链接时指定,导致 SSL 相关符号缺少定义。在百度网盘中,情况时上述四个动态链接库静态链接了 libssl,却误将静态连接进来的 libssl 的符号又作为动态符号导出了。上述行为致使在启动后,这四个动态链接库用到的 SSL 相关符号被指向了系统提供的 openssl 3.0 的同名符号。
该问题的解决办法为:增加 -Wl,--version-script=version-script
选项,并在 version-script
中使用形如 {global: foo; bar; local: *;}
的指令显式指定要导出的符号。
同时,上述动态链接库也存在未能连接系统库,致使出现符号缺少定义的情况:
libbrowserengine.so
:缺少 -lpthread
-ldl
libkernel.so
:缺少 -lpthread
-ldl
-lrt
libminosagent.so
:缺少 -lpthread
-ldl
libplayer.so
:缺少 -lpthread
-ldl
-lrt
-lz
因此可以推知,这些 so 文件在链接时也未能使用 -Wl,-z,defs
避免缺少链接必要的动态链接库。
使用 libLoL 0.1.3 及 0.1.4~pre4,百度网盘均无法启动,报错如下:
GDB backtrace (0.1.3)