nixp.ru v3.0

19 октября 2017,
четверг,
10:21:13 MSK

DevOps с компанией «Флант»
Аватар пользователя splinter
splinter написал 28 февраля 2011 года в 11:49 (2564 просмотра) Ведет себя как четкий пацан; открыл 134 темы в форуме, оставил 1458 комментариев на сайте.

Ubuntu Lucid МФУ Гнусмас SXC-4824FN. Sane стояла 1.0.14 обновил до 1.0.22 но суть проблемы не исчезла:
splinter@sprogrammer:~$ scanimage -L

netdiscovery: relocation error: /lib/tls/i686/cmov/libnss_files.so.2: symbol strcmp, version GLIBC_2.0 not defined in file libc.so.6 with link time reference

netdiscovery: relocation error: /lib/tls/i686/cmov/libnss_files.so.2: symbol strcmp, version GLIBC_2.0 not defined in file libc.so.6 with link time reference

device `smfp:SAMSUNG SCX-4×24 Series on USB:0\′ is a SAMSUNG SCX-4×24 Series on USB:0 Flatbed Scanner

splinter@sprogrammer:~$ scanimage --device-name=’smfp:SAMSUNG SCX-4×24 Series on USB:0\′ -T

Segmentation fault

[code]sudo cat /var/log/syslog
Feb 28 11:26:08 sprogrammer kernel: [ 6243.242419] scanimage[3765]: segfault at 0 ip 00566dc4 sp bf9e13e0 error 4 in libsane-smfp.so.1.0.1[555000+44000]
[/code]

 

splinter

strace выдает:

strace scanimage --device-name=’smfp:SAMSUNG SCX-4×24 Series on USB:0\′

stat64(«/dev/usb/lp0», {st_mode=S_IFCHR|0666, st_rdev=makedev(180, 0), …}) = 0

open(«/dev/usb/lp0», O_RDWR)            = 3

ioctl(3, SNDCTL_DSP_SYNC, 0xbfd29748)   = 0

close(3)                                = 0

stat64(«/dev/usb/lp1», 0xbfd29ab4)      = -1 ENOENT (No such file or directory)

open(«/dev/usblp1», O_RDWR)             = -1 ENOENT (No such file or directory)

stat64(«/dev/usb/lp2», 0xbfd29ab4)      = -1 ENOENT (No such file or directory)

open(«/dev/usblp2», O_RDWR)             = -1 ENOENT (No such file or directory)

stat64(«/dev/usb/lp3», 0xbfd29ab4)      = -1 ENOENT (No such file or directory)

open(«/dev/usblp3», O_RDWR)             = -1 ENOENT (No such file or directory)

stat64(«/dev/usb/lp4», 0xbfd29ab4)      = -1 ENOENT (No such file or directory)

open(«/dev/usblp4», O_RDWR)             = -1 ENOENT (No such file or directory)

stat64(«/dev/usb/lp5», 0xbfd29ab4)      = -1 ENOENT (No such file or directory)

open(«/dev/usblp5», O_RDWR)             = -1 ENOENT (No such file or directory)

stat64(«/dev/usb/lp6», 0xbfd29ab4)      = -1 ENOENT (No such file or directory)

open(«/dev/usblp6», O_RDWR)             = -1 ENOENT (No such file or directory)

stat64(«/dev/usb/lp7», 0xbfd29ab4)      = -1 ENOENT (No such file or directory)

open(«/dev/usblp7», O_RDWR)             = -1 ENOENT (No such file or directory)

-— SIGSEGV (Segmentation fault) @ 0 (0) —

+++ killed by SIGSEGV +++

Segmentation fault

rgo
splinter

netdiscovery: relocation error: /lib/tls/i686/cmov/libnss_files.so.2: symbol strcmp, version GLIBC_2.0 not defined in file libc.so.6 with link time reference
netdiscovery: relocation error: /lib/tls/i686/cmov/libnss_files.so.2: symbol strcmp, version GLIBC_2.0 not defined in file libc.so.6 with link time reference


Многозначительные ошибки… Что-то ты забыл пересобрать после обновлений. Это я к тому, что я бы забил на сегфолт, и занялся бы пересборкой системы. Либо выборочно, до тех пор пока не будет уверенности в том, что все бинари, которые динамически линкуются друг с другом, совместимы по версиям; либо просто целиком систему.

Хотя… Я вогнал в строку поиска гугла слово libsane-smfp, по ссылкам не ходил, но у меня сложилось впечатление, что это самсунговый драйвер и более того, что он не-FOSS и распространяется блобом. А если так, то может быть что просто libsane-smfp несовместим по версиям с какой-то-там библиотекой, но (сука-такая) грузит эту библиотеку каким-нибудь извратным образом, чтобы не возникало ошибок (у закрытого кода бывают такие заскоки).

Но даже несмотря на «хотя», я бы начал с «отсутствующего в glibc» символа strcmp. Сел бы и вспомнил, что я последнее время пересобирал, отследил бы все обратные депендансы, и пересобрал бы их. В генту, тупой emerge не умеет этого делать, и поэтому в генту есть revdep-rebuild, которая обновляет обратные депендансы. А в убунте ведь ничего такого нету?

splinter

Спасибо за ответ! Сначало стоял стандартный для убунты Lucid sane 1.0.14-9, обновил до sane 1.0.22 ошибки одинаковые что тогда что сейчас. Драйвер на самсунг ставил не я, драйвер скачан с оф.сайта самсунга. Имеет ли смысл попробовать обновиться до Ubuntu Maverick или до Netty?

rgo

Сложно сказать имеет ли смысл. То есть попробовать конечно же имеет. Но даст ли это что-нибудь, я не знаю. Если ничего вручную не пересобиралось, и всё ставилось через убунтовский менагер пакетов (кроме драйвера), то проблема однозначно в несовместимости драйвера с какими-то библиотеками. Но поди-ж угадай какую версию библиотеки драйверу надо: более старую или более новую? Более того, я не могу с уверенностью сказать, с какой библиотекой проблемы. То есть я почти уверен что проблема с несовпадающей версией glibc, но relocation error — это штука, с которой я не сталкивался.

А самсунги ничего не пишут о депендансах своих дров?

rgo

Погуглил ещё, вот ссылка https://bugs.launchpad.net/ubuntu/+source/xsane/+bug/576531

Там обсуждается очень похожая ошибка, даже упоминается эта в комментах. И там приведены «наколеночные» решения проблемы. Замена бинарника netdiscovery скриптом в #12, судя по всему работает.

splinter

Поставил дрова от xerox, почти все хорошо работает, только вот если через USB то не определяет ошибки устройства (замятие, тонер) а если через сетевой интерфейс то определяет. Еще такой вопрос как можно отслеживать что пользователь отправил на сканирование столько то страниц? И вообще как отследить сам факт сканирования?