自最新更新以来(过去两周内)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
,我尝试以非根用户和根用户身份运行它,我已经升级了所有内容并重新启动了系统几次,但没有解决问题。
有谁有如何解决这个问题的建议,或者至少获得更多信息来找出罪魁祸首?
根据要求,这里是 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
。
答案1
在 Centos 7 下从 8.50.0.38-1.x86_64 升级到版本 8.51.0.86-1.x86_64 后,我遇到了同样的问题。
通过检查日志文件,我发现以下消息:
FATAL:setuid_sandbox_host.cc(157)] The SUID sandbox helper binary was found,
but is not configured correctly. Rather than run without sandboxing I'm aborting now.
You need to make sure that /usr/share/skypeforlinux/chrome-sandbox is owned by root
and has mode 4755
如果您按照错误消息中的说明进行操作:
chmod 4755 /usr/share/skypeforlinux/chrome-sandbox
它解决了这个问题。
答案2
因此,您的skypeforlinux
版本是 8.51.0.86,这是目前的最新版本 - 这是最近发布的。事实上,我的 Debian 10 系统上有完全相同的版本,并且运行得很好。
这int3
是一条 x86 处理器指令,用于实现调试断点。
但在您的情况下,int3
当不在调试器下运行时遇到skypeforlinux
,因此 int3 陷阱向量指向默认内核例程,这本质上相当于SIGTRAP
向程序发送信号。
为什么skypeforlinux
程序代码包含int3
没有调试器的生产版本中的指令?只有能够访问源代码的微软人员skypeforlinux
才能回答这个问题,而无需进行大量的逆向工程工作。
请注意,微软仅承诺skypeforlinux
适用于 Ubuntu、Debian、OpenSuSE 和 Fedora。最新版本可能意外地包含了一些调试代码,这些代码仅在某些条件与任何受支持的发行版不匹配时才会执行,并导致 Skype 崩溃,因为预期的调试环境不存在。
您可以尝试将 Skype 降级到以前的版本(或输出中列出的任何版本apt-cache policy
),看看这是否更适合您:
# apt install skypeforlinux=8.51.0.72
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following packages will be DOWNGRADED:
skypeforlinux
0 upgraded, 0 newly installed, 1 downgraded, 0 to remove and 0 not upgraded.
Need to get 0 B/79.0 MB of archives.
After this operation, 1,024 B of additional disk space will be used.
Do you want to continue? [Y/n]
如果降级软件包版本有帮助,您可能希望将软件包设置为保留,因此apt upgrade
在取消保留之前不会再次升级它:
# apt-mark hold skypeforlinux
然后,您可能会向 Microsoft 发送有关您的体验的错误报告,但由于他们没有做出任何支持 Kali 的承诺,因此它可能会被忽略或被分配一个非常低的优先级。
答案3
我在 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。
编辑:乔纳斯·柏林指出原文中的一个错误命令,并进一步检查验证了他的评论。另外,删除了之前指向错误命令的链接。谢谢,乔纳斯。
答案4
我在 CentOS Linux 7.something 上尝试过chmod 4755 /usr/share/skypeforlinux/chrome-sandbox
但没有成功(Skype 版本)。8.61.0.77-1
因此我决定强制降级:
yum list skypeforlinux --showduplicates
sudo yum downgrade skypeforlinux-8.57.0.116-1
问题是,8.57.0.116-1
同时这是其 RPM 存储库中最旧的可用版本,它也不起作用。skype-startup.log
Chrome沙盒的提示:
cat ~/.config/skypeforlinux/logs/skype-startup.log
然而,在降级之后chmod
,我收到了另一条 Electron 错误消息:
A JavaScript error occurred in the main process
Uncaught Exception:
Error: /lib64/libstdc++.so.6: version `GLIBCXX_3.4.21' not found (required by /usr/share/skypeforlinux/resources/app.asar.unpacked/node_modules/electron-utility/build/Release/electron_utility.node)
...
检查可用版本时libstdc++
:
strings /usr/lib64/libstdc++.so.6 | grep GLIBCXX
...它表明这3.4.19
是最新的可用版本 - 而这将3.4.21
是必需的。
但这很容易解决,通过编辑~/.bashrc
和扩展LD_LIBRARY_PATH
:
export LD_LIBRARY_PATH=/usr/local/lib:/usr/lib:/usr/local/lib64:/usr/lib64
它需要链接/usr/local/lib64/libstdc++.so.6
,知道版本3.4.21
。当它没有从那里获取时,也可以将其直接添加到 中/bin/skypeforlinux
,但缺点是每次软件包升级后它都会丢失。这适用于当前版本8.61.0.77-1
。我还发现,这基本上是 Electron问题#17972。