Simple Scan, XSane 및 scanimage의 분할 오류

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-releasePPA에서 업그레이드를 시도했지만 문제가 해결되지 않는 것 같습니다. rolfbensch/sane-gitPPA를 사용해 봐야 할까요 ?

감사해요,

답변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에서 분할 오류 문제가 발생합니다.

나는 아무 소용이 없는 많은 Google 제안을 발견했습니다. HP4200용 백엔드를 구성하고 컴파일했지만 여전히 충돌이 발생합니다.

소스 코드에서 디버그 메시지를 활성화했는데 디버그 메시지에서 항상 같은 위치에서 충돌이 발생한다는 것을 알았습니다.

do_fine_calibration파일에서 호출되는 서브루틴입니다 hp4200.c. 해당 서브루틴 내에서 memset호출되며 여기서 충돌이 발생하는 것으로 보입니다.

널 포인터로 호출 하면 memset존재하지 않는 메모리에 액세스하려고 시도합니다. Ubuntu 20.04가 메모리 관리와 관련하여 다른 기능을 수행하는지 알아보려고 했지만 빈손으로 나왔습니다.

어쨌든 이 코드는 registro라는 큰 배열을 설정하는 것 같은데 배열에 대한 포인터가 존재하지 않는 것 같습니다!

저는 메모리 관리 전문가는 아니지만, 몇 가지 연구 끝에 등록 시 선언 시 0으로 설정되도록 변경하기로 결정했습니다(라인 1377 관련 - int registro[30][5460 * 3] = {0};내 변경 사항).

그런 다음 registro 배열 mem을 0으로 설정하는 코드 부분을 삭제합니다(라인 1496 - 대략 1505).

재부팅하고 스캔 이미지를 시작한 후 ./configuration, make sudo make install보라, 모터가 떨어져서 다시 스캔을 시작했습니다!

관련 정보