Simple Scan、XSane 和 scanimage 中的分段錯誤
幾年來,我一直在 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 嗎?謝謝,
一些更新似乎已經解決了這個問題。
從 Ubuntu 18.04 升級到 Ubuntu 20.04 後,我的 HP4200 USB 掃描器在 Xsane 中出現分段錯誤問題。
我發現許多Google建議無濟於事。我為 HP4200 配置和編譯了後端,但它仍然崩潰。
我在原始碼中啟用了調試消息,發現調試消息告訴我它總是在同一個地方崩潰
文件中呼叫的
do_fine_calibration
子程序hp4200.c
。在那個子程序memset
中被呼叫,看起來那是發生崩潰的地方。如果
memset
使用空指針呼叫它,它會嘗試訪問不存在的記憶體。我試圖找出 Ubuntu 20.04 是否在記憶體管理方面做了一些不同的事情,但什麼也沒找到。無論如何,這段程式碼似乎正在設置一個名為 registro 的大型數組,其中似乎不存在指針!
我不是記憶體管理專家,但經過一些研究後,我決定更改註冊聲明,在聲明時將其設置為 0(關於第 1377 行 -
int registro[30][5460 * 3] = {0};
我的更改)然後消除將系統資料庫數組設置為 0 的程式碼部分(第 1496 行 - 大約 1505 行)。
重新啟動後
./configuration
,make sudo make install
啟動 scanimage 進行掃描,你瞧,馬達起飛並再次開始掃描!