由于最新更新(在过去两周内)skypeforlinux
停止工作,我在日志中发现的唯一内容是
[ 324.575813] traps: skypeforlinux[2487] trap int3 ip:555cb8dab847 sp:7fff797c57b0 error:0 in skypeforlinux[555cb6e96000+5016000]
. 谷歌搜索没有返回任何有用的信息,大多数结果处理的是一个invalid opcode
而不是int3
陷阱。
操作系统是kali-rolling 2019.3
,不知道 Skype 是哪个版本,因为甚至skypeforlinux --help
失败了。
我尝试重新安装skypeforlinux
,尝试以非 root 用户和 root 用户身份运行它,我已经升级了所有内容并重新启动了几次系统,但没有解决问题。
有没有人建议如何解决这个问题或至少获得更多信息来找出可能是这里的罪魁祸首?
根据要求,这里是 apt-cache 输出:
skypeforlinux:
Installed: 8.51.0.86
Candidate: 8.51.0.86
Version table:
*** 8.51.0.86 500
500 https://repo.skype.com/deb stable/main amd64 Packages
100 /var/lib/dpkg/status
8.51.0.72 500
500 https://repo.skype.com/deb stable/main amd64 Packages
8.50.0.38 500
500 https://repo.skype.com/deb stable/main amd64 Packages
8.49.0.49 500
500 https://repo.skype.com/deb stable/main amd64 Packages
8.48.0.51 500
500 https://repo.skype.com/deb stable/main amd64 Packages
查看日志,$HOME/.config/skypeforlinux/logs/skype-startup.log
我看到一个条目:运行时以及与用户一起运行[7784:0821/103123.389602:FATAL:atom_main_delegate.cc(207)] Running as root without --no-sandbox is not supported. See https://crbug.com/638180.
时都会得到它。skypeforlinux
root
non-root
在 Centos 7 下从 8.50.0.38-1.x86_64 升级到版本 8.51.0.86-1.x86_64 后,我遇到了同样的问题。
我通过检查日志文件发现以下消息:
如果您按照错误消息中的说明进行操作:
它解决了这个问题。
因此,您的
skypeforlinux
版本是 8.51.0.86,这是目前的最新版本——它是最近发布的。事实上,我的 Debian 10 系统上有完全相同的版本,并且运行良好。这
int3
是用于实现调试断点的 x86 处理器指令。但是在您的情况下,在没有在调试器下运行
int3
时遇到skypeforlinux
了,因此 int3 陷阱向量指向默认的内核例程,这基本上相当于向SIGTRAP
程序发送信号。为什么
skypeforlinux
程序代码int3
在没有调试器的生产版本中包含指令?只有能够访问源代码的 Microsoft 人员skypeforlinux
才能回答这个问题,而无需进行大量的逆向工程工作。请注意,微软只承诺
skypeforlinux
将在 Ubuntu、Debian、OpenSuSE 和 Fedora 上运行。可能是这个最新版本意外包含了一些调试代码,这些调试代码仅在某些条件与任何受支持的发行版不匹配时才会执行 - 并导致 Skype 崩溃,因为预期的调试环境不存在。您可以尝试将 Skype 降级到以前的版本(或输出中列出的任何版本
apt-cache policy
),看看这是否更适合您:如果降级软件包版本有帮助,您可能希望将软件包设置为暂停,因此
apt upgrade
在删除暂停之前不会再次升级它:然后,您可能会向 Microsoft 发送有关您的体验的错误报告,但由于他们没有做出任何支持 Kali 的承诺,它可能会被忽略或分配非常低的优先级。
我在 Manjaro 遇到了这个问题。研究之后发现
chmod 4755 /usr/share/skypeforlinux/chrome-sandbox
不是解决 Arch 或基于 Debian 的发行版中问题的首选方法。相反,建议使用
sudo sh -c 'echo "kernel.unprivileged_userns_clone=1" > /etc/sysctl.d/00-local-userns.conf'
一个持久的解决方案。更多信息可以在 LXC-Debian Wiki上找到。
已编辑:乔纳斯·柏林指出了原件中的一个错误命令,并进一步检查了他的评论。此外,删除了先前指向错误命令的链接。谢谢,乔纳斯。
出于完整性考虑,有些人可能会觉得这很有用: Skype 的网页版https://web.skype.com已经足够成熟,并且在 google chrome 浏览器下运行良好,因此您无需在本地安装应用程序即可使用 Skype . 这不仅包括聊天功能,还包括音频/视频通话和屏幕共享/录制。
我在 CentOS Linux 7.something 上尝试过
chmod 4755 /usr/share/skypeforlinux/chrome-sandbox
但没有成功(Skype 版本)。8.61.0.77-1
因此我决定强制降级:问题只是,
8.57.0.116-1
同时是他们的 RPM 存储库中最旧的可用版本,它也不起作用。Chrome 沙盒的skype-startup.log
提示:但是,在降级之后
chmod
,我收到了另一条 Electron 错误消息:检查可用版本时
libstdc++
:...它表明这
3.4.19
是最新的可用版本 - 虽然3.4.21
是必需的。但这很容易解决,通过编辑
~/.bashrc
和扩展LD_LIBRARY_PATH
:它需要链接
/usr/local/lib64/libstdc++.so.6
,它知道版本3.4.21
。当它没有从那里被拾取时,也可以直接将它添加到/bin/skypeforlinux
中,但缺点是每次软件包升级后它都会丢失。这适用于当前版本8.61.0.77-1
。我还发现,这基本上是 Electron问题 #17972。这是一个有效的简单解决方法。我按照这个答案中的说明,成功地在 kali linux root 的桌面上运行了 skypeforlinux。您需要创建另一个用户,例如 user2 才能工作。