最近,我在笔记本电脑(Dell Precision M4700,16GB RAM)上安装了 Ubuntu 18.04.1,目前它非常纯净。问题是 Evince 3.30.0 在启动时会产生分段错误(核心转储)。自从安装系统以来,这种情况就一直存在,清除和重新安装(也通过 Synaptic)没有帮助。有什么想法可以让它正常工作吗?
我进入了
~/.local/share/gnome-shell
检查扩展文件夹中有什么 - 碰巧,没有这样的文件夹(根本没有文件夹),/gnome-shell 中的“ls”生成:
application_state
切换到另一个(新创建的)用户并在那里运行 Evince 会产生相同的结果。
运行 sudo debsums -s 提供的输出:
debsums: changed file /usr/share/X11/xkb/symbols/pl (from xkb-data package)
这是我手动编辑的文件。用原始文件替换它(并删除我创建的新用户)后,我在终端中运行 evince 得到了更多输出:
Attempting to read the recently used resources file at
'/home/january/.local/share/recently-used.xbel', but the parser failed:
Failed to open file “/home/january/.local/share/recently-used.xbel”:
Permission denied.
Segmentation fault (core dumped)
该文件对我的用户具有读取和写入权限,但我的组没有权限。我编辑了这些权限以向我的组提供读取和写入权限,现在Segmentation fault
当我运行 Evince 时,它就像以前一样。
我再次使用 Synaptic 清除了 Evince 以安装版本3.28.2-1
(通过 Synaptic)。首先,当我Apply
尝试再次安装 Evince 时使用 GUI 按钮时,我遇到了一个错误:
E: Unable to correct problems, you have held broken packages.
E: Error, pkgProblemResolver::Resolve generated breaks, this may be caused by held packages.
E: Unable to correct dependencies
E: Unable to lock the download directory.
当我选择时,错误并没有出现Edit->Apply Marked Changes
。运行 Evince 时,重新安装仍然会产生 Seg.fault。
运行sudo evince
我得到:
No protocol specified
Unable to init server: Could not connect: Connection refused
Cannot parse arguments: Cannot open display:
由于事情有时会随机发生,我设法从 GUI 中的 evince 获取错误(您会称之为 splash 吗?),抱歉,它很大,我想包含所有可能的数据。
https://i.stack.imgur.com/rcHk7.jpg
fsck
在恢复根命令行中运行没有产生任何错误。
几天前我做了 memtest,然后在做了之后我又做了一次fsck
,得到了这个结果:
答案1
从昨天开始,在 evince 3.28.4 上出现了同样的错误(与描述完全一致),没有内存故障,开发人员,检查从昨天开始在 evince 和 4.15.0-43-generic 64 位上进行了哪些修改。检查了 /var/log/apt/history.log
在 evince 正常工作和不工作之间,我遇到了以下问题: 此文件的内容 ,没有引用 evince:amd64 (3.28.4-0ubuntu1) 或任何已安装的库:libevdocument3-4:amd64 (3.28.4-0ubuntu1)、libgxps2:amd64 (0.3.0-2)、libspectre1:amd64 (0.2.8-1)、libevview3-3:amd64 (3.28.4-0ubuntu1)
没有提供任何依赖关系改变的证据ldd 的输出命令:
因此,看起来 3.28.4 已损坏。
最终解决了问题:
sudo snap install evince # version 3.30.2
一切正常,但如果我从命令行调用 evince,会出现一些 gtk 警告。但有一个缺点,通过安装的 evince 无法访问 /tmp,通过 Thunderbird 或 Firefox 打开 pdf 会失败。您必须先保存它。
答案2
来自评论...
Evince 存在 malloc 错误。
步骤1:
要检查 Ubuntu 分区上的文件系统是否存在错误...
- 启动到 GRUB 菜单
- 选择高级选项
- 选择恢复模式
- 选择 Root 访问
- 在 # 提示符下,输入
sudo fsck -f /
fsck
如果有错误则重复命令- 类型
reboot
如果由于某种原因您无法执行上述操作...
- 启动至 Ubuntu Live DVD/USB
- 启动
gparted
并确定哪个 /dev/sdaX 是你的 Ubuntu EXT4 分区 - 辞职
gparted
- 打开
terminal
窗户 - 输入
sudo fsck -f /dev/sdaX
# 用你之前找到的数字替换 X - 如果有错误,请重复 fsck 命令
- 类型
reboot
第2步:
启动到 Ubuntu Live DVD/USB 并运行memtest
一次完整过程。
更新#1:
正如我所怀疑的,Memtest 显示内存故障。移除或更换一些 RAM 条。