![Simple Scan、XSane 和 scanimage 中的分段错误](https://linux22.com/image/178648/Simple%20Scan%E3%80%81XSane%20%E5%92%8C%20scanimage%20%E4%B8%AD%E7%9A%84%E5%88%86%E6%AE%B5%E9%94%99%E8%AF%AF.png)
我已经在 Ubuntu 18.04.5 LTS 上使用 Simple Scan 几年了,但今天我无法再启动它了。它打开窗口并立即崩溃。当我尝试使用 CLI 时,我收到以下消息:
bugchk_free(ptr=(nil))@modelinf.c(464)
Abandon (core dumped)
我尝试使用 Xsane 或 scanimage 代替,但我遇到了完全相同的问题。 Skanlite 似乎可以工作(但它无法识别我的扫描仪)。
这是我的 libsane 软件包(来自dpkg -l | grep sane
):
ii libsane-common 1.0.27-1~experimental3ubuntu2.2 all API library for scanners -- documentation and support files
ii libsane-hpaio:amd64 3.17.10+repack0-5 amd64 HP SANE backend for multi-function peripherals
ii libsane1:amd64 1.0.27-1~experimental3ubuntu2.2 amd64 API library for scanners
ii sane-utils 1.0.30-bionic1 amd64 API library for scanners -- utilities
我尝试从rolfbesnch/sane-release
PPA 升级这些,但这似乎并不能解决我的问题。我应该尝试使用rolfbensch/sane-git
PPA 吗?
谢谢,
答案1
我修复了我的“Pantum M6500”的段错误scanimage -L
:
$ scanimage -L
Segmentation fault (core dumped)
通过删除tcp ...
条目/etc/sane.d/pantum6500.conf
tcp M6500 9200
我发现通过trace scanimage -L
扫描图像读取/etc/sane.d/pantum6500.conf
并尝试绑定 TCP 端口,然后发生了段错误。
答案2
一些更新似乎已经解决了这个问题。
答案3
从 Ubuntu 18.04 升级到 Ubuntu 20.04 后,我的 HP4200 USB 扫描仪在 Xsane 中遇到分段错误问题。
我发现很多谷歌建议都无济于事。我配置并编译了 HP4200 的后端,但它仍然崩溃。
我在源代码中启用了调试消息,发现调试消息告诉我它总是在同一个地方崩溃
do_fine_calibration
文件中调用的子例程hp4200.c
。在该子例程中memset
被调用,看来这就是发生崩溃的地方。
如果memset
使用空指针调用,它会尝试访问不存在的内存。我试图找出 Ubuntu 20.04 在内存管理方面是否做了一些不同的事情,但一无所获。
无论如何,这段代码似乎正在设置一个名为 registro 的大数组,但该数组的指针似乎不存在!
我不是内存管理专家,但经过一番研究后,我决定更改 registro 声明,在声明时将其设置为 0 (关于第 1377 行 -int registro[30][5460 * 3] = {0};
我的更改)
然后删除将 registro 数组 mem 设置为 0 的代码部分(第 1496 行 - 大约 1505 行)。
重新启动并启动 scanimage 进行扫描后./configuration
,make sudo make install
你瞧,电机起飞并再次开始扫描!