Scanimage l ошибка сегментирования


Description


Alexandr Shashkin



2022-09-13 16:45:53 MSK

Версия программы:
=================
hplip-3.22.6-alt1
sane-server-1.0.32-alt4

Шаги, приводящие к ошибке:
==========================
1) Настроить sane-server:
  1.1) Установить sane-server sane xinetd
  1.2) Раскомментировать строки в /etc/services, начинающиеся с sane-port.
  1.3) Создать файл /etc/xinetd.d/sane со следующим содержимым:
service sane
{
disable = no
port = 6566
socket_type = stream
wait = no
user = _saned
group = scanner
server = /usr/sbin/saned
only_from = <ВВЕСТИ IP АДРЕС КЛИЕНТА>
}
  1.4) Запустить сервис xinetd
  1.5) Подключить сканер к серверу
2) Выполнить команду scanimage -L на сервере и на клиенте, сравнить выводы
3) На сервер установить hplip и установить hp plugin с помощью команды hp-plugin
4) Снова сравнить выводы команды scanimage -L на клиенте и на сервере.

Результат:
==========
До установки плагина hp сканеры отображаются на клиенте, и на них можно проводить сканирование. После установки плагина: на клиенте при вызове команды scanimage -L возникает ошибка сегментирования. Такие программы как gimagereader-qt5 и xsane также не запускаются из-за этой ошибки.

Ожидаемый результат:
====================
Подключенные к серверу сканеры отображаются в выводе scanimage -L на клиенте. Сканирование на клиенте на сканерах с удаленного сервера проходит успешно.

Дополнительно:
==============
В P10 на таких же версиях указанных программ и в P9 на hplip-3.21.12-alt1 и sane-server-1.0.32-alt2 ошибка сегментирования не возникает: сканеры, подключенные к серверу, больше не определяются и отсутствуют в выводе команды scanimage -L, запущенной на клиенте.


0

1

Спецы приветствую.

Linux mint 17. Сканер hp scanjet 2400.

При попытке сканирования падает с ошибкой ошибка сегментирования, падает под user и под root. Сканер определяется в списках, нормально сканирует в виртуальной windows XP. А в linux никак…

Как ему мозги вправить?

scanimage -L

device `genesys:libusb:005:006′ is a Hewlett Packard ScanJet 2400c flatbed scanner

sane-find-scanner -q

found USB scanner (vendor=0x03f0 [Hewlett-Packard], product=0x0a01 [hp scanjet scanner]) at libusb:005:006

Ошибка сегментирования

Модераторы: Warderer, Модераторы разделов

Cormorant

Сообщения: 9
ОС: Debian

Ошибка сегментирования

С некоторых пор при запуске например tilda, в консоли пишет такое сообщение.
Еще сканер настроил, пробую scanimage -L — тоже «Ошибка сегментирования».
Результат: нет любимого терминала под рукой и сканер не пашет (xsane не запускается, только с другой ошибкой).
Система Debian 5.03 lenny, gnome/openbox.
Пишу:
$ scanimage -L
Ошибка сегментирования
$ tilda
Ошибка сегментирования
$ tail /var/log/messages

Jan 12 09:08:02 MAINCOMP kernel: [ 3318.991559] scanimage[2694]: segfault at 5a18db4 ip bff9b094 sp b7f3dce0 error 4
Jan 12 09:08:12 MAINCOMP kernel: [ 3329.122793] tilda[2696]: segfault at 0 ip 0805012b sp bf952f20 error 4 in tilda[8048000+13000]

Переустановил пакет tilda — всё тоже самое.
В непонятках.

La propriete c’est le vol.

Аватара пользователя

SoaT

Сообщения: 52
ОС: Debian sid

Re: Ошибка сегментирования

Сообщение

SoaT » 12.01.2010 04:33

Пардон, присоединюсь. У меня она вываливается при apt-get update очень часто. Приходится по несколько раз прогонять :(

noob.Debian.sid.ждиответногогудка

Аватара пользователя

Uncle_Theodore

Сообщения: 3339
ОС: Slackware 12.2, ArchLinux 64

Re: Ошибка сегментирования

Сообщение

Uncle_Theodore » 12.01.2010 05:33

1) Проверьте память на предмет битости;
2) Попробуйте запускать вылетающую программу через strace или gdb;
3) Посмотрите в свежих багрепортах и, если не найдете, пишите свой багрепорт.

Сегфолт — это проблема в аппликации, а не в настройках. Ничего не поделать.

Аватара пользователя

44616e

Сообщения: 204
ОС: Debian testing

Re: Ошибка сегментирования

Сообщение

44616e » 12.01.2010 16:17

Если мне не изменяет память Intel начинает тротлить уже при 69. 77 — это много. Из процессоров, которые были у меня самым горячим был P2.4 Prescott — 60.

Аватара пользователя

Bluetooth

Сообщения: 4395
Статус: Блюзовый
ОС: Debian Squeeze amd64

Re: Ошибка сегментирования

Сообщение

Bluetooth » 12.01.2010 18:21

SoaT писал(а): ↑

12.01.2010 11:01

Скорее по-оффтопу. 77 °C камня — норма?

нет, не норма :)
Я, правда, не знаю на 100%, но lm-sensors пишут, что у моего квада хай температура — 74, а критическая — 100. Честно говоря, я не уверен, что это не взято с потолка, однако, по моему опыту, такая температура не есть здоровая. У вас ноутбук или десктоп?(вот у меня он щас на 41, при нагрузке больше 50 не нагревается)

Аватара пользователя

SoaT

Сообщения: 52
ОС: Debian sid

Re: Ошибка сегментирования

Сообщение

SoaT » 12.01.2010 20:35

У меня десктоп. Разогнано шиной, 77-78 держит, выше 80 не поднимается даже при больших нагрузках. В биосе вроде прописано что это еще нормально :)

noob.Debian.sid.ждиответногогудка

Аватара пользователя

Bluetooth

Сообщения: 4395
Статус: Блюзовый
ОС: Debian Squeeze amd64

Re: Ошибка сегментирования

Сообщение

Bluetooth » 12.01.2010 21:19

SoaT писал(а): ↑

12.01.2010 20:35

У меня десктоп. Разогнано шиной, 77-78 держит, выше 80 не поднимается даже при больших нагрузках. В биосе вроде прописано что это еще нормально :)

Я бы снизил разгон, или добавил бы охлаждения, чтобы довести до того, чтобы температура не поднималась выше 70. Потом поюзал бы систему. Скорее всего, все эти сегфолты пропадут.

Аватара пользователя

SoaT

Сообщения: 52
ОС: Debian sid

Re: Ошибка сегментирования

Сообщение

SoaT » 13.01.2010 10:55

Дело в том что траблы с сигментированием пришли внезапно. Имели место, а сейчас опять пропали. Где-то какой-то пакет обновился наверное и решил вопрос, просто не заметил… надеюсь что так было дело))

noob.Debian.sid.ждиответногогудка

Sb0y

Сообщения: 17
ОС: Gentoo Linux

Re: Ошибка сегментирования

Сообщение

Sb0y » 25.03.2010 04:16

Такая же беда. Tilda валится вот так:

Код: Выделить всё

sb0y@box ~ $ tilda -C

(tilda:19989): Gtk-WARNING **: GtkSpinButton: setting an adjustment with non-zero page size is deprecated

(tilda:19989): Gtk-WARNING **: GtkSpinButton: setting an adjustment with non-zero page size is deprecated

(tilda:19989): Gtk-WARNING **: GtkSpinButton: setting an adjustment with non-zero page size is deprecated

(tilda:19989): Gtk-WARNING **: GtkSpinButton: setting an adjustment with non-zero page size is deprecated

(tilda:19989): Gtk-WARNING **: GtkSpinButton: setting an adjustment with non-zero page size is deprecated

(tilda:19989): Gtk-WARNING **: GtkSpinButton: setting an adjustment with non-zero page size is deprecated

(tilda:19989): Gtk-WARNING **: GtkSpinButton: setting an adjustment with non-zero page size is deprecated

(tilda:19989): Gtk-WARNING **: GtkSpinButton: setting an adjustment with non-zero page size is deprecated

(tilda:19989): Gtk-WARNING **: GtkSpinButton: setting an adjustment with non-zero page size is deprecated

(tilda:19989): Gtk-WARNING **: GtkSpinButton: setting an adjustment with non-zero page size is deprecated

(tilda:19989): Gtk-WARNING **: GtkSpinButton: setting an adjustment with non-zero page size is deprecated

(tilda:19989): Gtk-WARNING **: GtkSpinButton: setting an adjustment with non-zero page size is deprecated

(tilda:19989): Gtk-WARNING **: GtkSpinButton: setting an adjustment with non-zero page size is deprecated

(tilda:19989): Gtk-WARNING **: GtkSpinButton: setting an adjustment with non-zero page size is deprecated

(tilda:19989): Gtk-WARNING **: GtkSpinButton: setting an adjustment with non-zero page size is deprecated

(tilda:19989): Gtk-CRITICAL **: gtk_file_chooser_select_filename: assertion `filename != NULL' failed
Ошибка сегментирования

Наверно какая-то из gtk-библеотек обновилась. Знать бы ещё какая.

Очень рад что получилось. Я всего лишь пересказал своими словами указанное в моей первой ссылке.

Этот баг связан с изменениями службы сканирования в Ubuntu 18.04, значит может затронуть множество моделей сканеров.

здравствуйте

следовал Вашему мануалу с МФУ Samsung М2070 но к сожалению так и не заработало

sudo sane-find-scanner -q

found USB scanner (vendor=0x04e8 [Samsung Electronics Co., Ltd.], product=0x3469 [M2070 Series]) at libusb:001:003

eyesless@eyesless-desktop:~$ ls /usr/lib/sane
libsane-smfp.so  libsane-smfp.so.1  libsane-smfp.so.1.0.1

sudo ln -sfr /usr/lib/sane/libsane-smfp* /usr/lib/x86_64-linux-gnu/sane

ls /usr/lib/x86_64-linux-gnu/sane

eyesless@eyesless-desktop:~$ ls /usr/lib/x86_64-linux-gnu/sane
libsane-abaton.so.1               libsane-kvs40xx.so.1.0.27
libsane-abaton.so.1.0.27          libsane-leo.so.1
libsane-agfafocus.so.1            libsane-leo.so.1.0.27
libsane-agfafocus.so.1.0.27       libsane-lexmark.so.1
libsane-apple.so.1                libsane-lexmark.so.1.0.27
libsane-apple.so.1.0.27           libsane-ma1509.so.1
libsane-artec_eplus48u.so.1       libsane-ma1509.so.1.0.27
libsane-artec_eplus48u.so.1.0.27  libsane-magicolor.so.1
libsane-artec.so.1                libsane-magicolor.so.1.0.27
libsane-artec.so.1.0.27           libsane-matsushita.so.1
libsane-as6e.so.1                 libsane-matsushita.so.1.0.27
libsane-as6e.so.1.0.27            libsane-microtek2.so.1
libsane-avision.so.1              libsane-microtek2.so.1.0.27
libsane-avision.so.1.0.27         libsane-microtek.so.1
libsane-bh.so.1                   libsane-microtek.so.1.0.27
libsane-bh.so.1.0.27              libsane-mustek_pp.so.1
libsane-canon630u.so.1            libsane-mustek_pp.so.1.0.27
libsane-canon630u.so.1.0.27       libsane-mustek.so.1
libsane-canon_dr.so.1             libsane-mustek.so.1.0.27
libsane-canon_dr.so.1.0.27        libsane-mustek_usb2.so.1
libsane-canon_pp.so.1             libsane-mustek_usb2.so.1.0.27
libsane-canon_pp.so.1.0.27        libsane-mustek_usb.so.1
libsane-canon.so.1                libsane-mustek_usb.so.1.0.27
libsane-canon.so.1.0.27           libsane-nec.so.1
libsane-cardscan.so.1             libsane-nec.so.1.0.27
libsane-cardscan.so.1.0.27        libsane-net.so.1
libsane-coolscan2.so.1            libsane-net.so.1.0.27
libsane-coolscan2.so.1.0.27       libsane-niash.so.1
libsane-coolscan3.so.1            libsane-niash.so.1.0.27
libsane-coolscan3.so.1.0.27       libsane-p5.so.1
libsane-coolscan.so.1             libsane-p5.so.1.0.27
libsane-coolscan.so.1.0.27        libsane-pie.so.1
libsane-dc210.so.1                libsane-pie.so.1.0.27
libsane-dc210.so.1.0.27           libsane-pieusb.so.1
libsane-dc240.so.1                libsane-pieusb.so.1.0.27
libsane-dc240.so.1.0.27           libsane-pixma.so.1
libsane-dc25.so.1                 libsane-pixma.so.1.0.27
libsane-dc25.so.1.0.27            libsane-plustek_pp.so.1
libsane-dell1600n_net.so.1        libsane-plustek_pp.so.1.0.27
libsane-dell1600n_net.so.1.0.27   libsane-plustek.so.1
libsane-dll.so.1                  libsane-plustek.so.1.0.27
libsane-dll.so.1.0.27             libsane-pnm.so.1
libsane-dmc.so.1                  libsane-pnm.so.1.0.27
libsane-dmc.so.1.0.27             libsane-qcam.so.1
libsane-epjitsu.so.1              libsane-qcam.so.1.0.27
libsane-epjitsu.so.1.0.27         libsane-ricoh.so.1
libsane-epson2.so.1               libsane-ricoh.so.1.0.27
libsane-epson2.so.1.0.27          libsane-rts8891.so.1
libsane-epsonds.so.1              libsane-rts8891.so.1.0.27
libsane-epsonds.so.1.0.27         libsane-s9036.so.1
libsane-epson.so.1                libsane-s9036.so.1.0.27
libsane-epson.so.1.0.27           libsane-sceptre.so.1
libsane-fujitsu.so.1              libsane-sceptre.so.1.0.27
libsane-fujitsu.so.1.0.27         libsane-sharp.so.1
libsane-genesys.so.1              libsane-sharp.so.1.0.27
libsane-genesys.so.1.0.27         libsane-sm3600.so.1
libsane-gphoto2.so.1              libsane-sm3600.so.1.0.27
libsane-gphoto2.so.1.0.27         libsane-sm3840.so.1
libsane-gt68xx.so.1               libsane-sm3840.so.1.0.27
libsane-gt68xx.so.1.0.27          libsane-smfp.so
libsane-hp3500.so.1               libsane-smfp.so.1
libsane-hp3500.so.1.0.27          libsane-smfp.so.1.0.1
libsane-hp3900.so.1               libsane-snapscan.so.1
libsane-hp3900.so.1.0.27          libsane-snapscan.so.1.0.27
libsane-hp4200.so.1               libsane-sp15c.so.1
libsane-hp4200.so.1.0.27          libsane-sp15c.so.1.0.27
libsane-hp5400.so.1               libsane-st400.so.1
libsane-hp5400.so.1.0.27          libsane-st400.so.1.0.27
libsane-hp5590.so.1               libsane-stv680.so.1
libsane-hp5590.so.1.0.27          libsane-stv680.so.1.0.27
libsane-hpaio.so.1                libsane-tamarack.so.1
libsane-hpaio.so.1.0.0            libsane-tamarack.so.1.0.27
libsane-hpljm1005.so.1            libsane-teco1.so.1
libsane-hpljm1005.so.1.0.27       libsane-teco1.so.1.0.27
libsane-hpsj5s.so.1               libsane-teco2.so.1
libsane-hpsj5s.so.1.0.27          libsane-teco2.so.1.0.27
libsane-hp.so.1                   libsane-teco3.so.1
libsane-hp.so.1.0.27              libsane-teco3.so.1.0.27
libsane-hs2p.so.1                 libsane-test.so.1
libsane-hs2p.so.1.0.27            libsane-test.so.1.0.27
libsane-ibm.so.1                  libsane-u12.so.1
libsane-ibm.so.1.0.27             libsane-u12.so.1.0.27
libsane-kodakaio.so.1             libsane-umax1220u.so.1
libsane-kodakaio.so.1.0.27        libsane-umax1220u.so.1.0.27
libsane-kodak.so.1                libsane-umax_pp.so.1
libsane-kodak.so.1.0.27           libsane-umax_pp.so.1.0.27
libsane-kvs1025.so.1              libsane-umax.so.1
libsane-kvs1025.so.1.0.27         libsane-umax.so.1.0.27
libsane-kvs20xx.so.1              libsane-xerox_mfp.so.1
libsane-kvs20xx.so.1.0.27         libsane-xerox_mfp.so.1.0.27
libsane-kvs40xx.so.1

eyesless@eyesless-desktop:~$ ls /etc/udev/rules.d
59-smfp_samsung.rules  70-snap.core.rules

# This file is a part of Unified Linux Driver
# Rules to allow low level USB device access for smfpautoconf
#
# For new distributions,
# Permissions and group are set according to common libsane rules
#

ACTION!="add", GOTO="smfp_label_end"

# Check device type
ENV{DEVTYPE}=="usb_device", GOTO="smfp_create_usb_dev"

# Check SUBSYSTEM (should be either "usb" or "usb_device")
SUBSYSTEM=="usb", GOTO="smfp_create_usb_dev"
SUBSYSTEM=="usb_device", GOTO="smfp_create_usb_dev"

GOTO="smfp_label_end"

LABEL="smfp_create_usb_dev"

# Check Vendor ID
ATTR{idVendor}!="04e8", GOTO="smfp_label_end"

ATTRS{idProduct}=="3425", ENV{libsane_matched}="yes"
ATTRS{idProduct}=="341c", ENV{libsane_matched}="yes"
ATTRS{idProduct}=="342a", ENV{libsane_matched}="yes"
ATTRS{idProduct}=="343d", ENV{libsane_matched}="yes"
ATTRS{idProduct}=="3456", ENV{libsane_matched}="yes"
ATTRS{idProduct}=="345a", ENV{libsane_matched}="yes"
ATTRS{idProduct}=="3427", ENV{libsane_matched}="yes"
ATTRS{idProduct}=="343a", ENV{libsane_matched}="yes"
ATTRS{idProduct}=="3428", ENV{libsane_matched}="yes"
ATTRS{idProduct}=="343b", ENV{libsane_matched}="yes"
ATTRS{idProduct}=="3455", ENV{libsane_matched}="yes"
ATTRS{idProduct}=="3421", ENV{libsane_matched}="yes"
ATTRS{idProduct}=="3439", ENV{libsane_matched}="yes"
ATTRS{idProduct}=="3444", ENV{libsane_matched}="yes"
ATTRS{idProduct}=="343f", ENV{libsane_matched}="yes"
ATTRS{idProduct}=="344e", ENV{libsane_matched}="yes"
ATTRS{idProduct}=="3431", ENV{libsane_matched}="yes"
ATTRS{idProduct}=="345c", ENV{libsane_matched}="yes"
ATTRS{idProduct}=="344d", ENV{libsane_matched}="yes"
ATTRS{idProduct}=="3462", ENV{libsane_matched}="yes"
ATTRS{idProduct}=="3464", ENV{libsane_matched}="yes"
ATTRS{idProduct}=="3461", ENV{libsane_matched}="yes"
ATTRS{idProduct}=="3460", ENV{libsane_matched}="yes"
ATTRS{idProduct}=="340e", ENV{libsane_matched}="yes"
ATTRS{idProduct}=="3435", ENV{libsane_matched}="yes"
ATTRS{idProduct}=="340f", ENV{libsane_matched}="yes"
ATTRS{idProduct}=="3441", ENV{libsane_matched}="yes"
ATTRS{idProduct}=="344f", ENV{libsane_matched}="yes"
ATTRS{idProduct}=="3413", ENV{libsane_matched}="yes"
ATTRS{idProduct}=="341b", ENV{libsane_matched}="yes"
ATTRS{idProduct}=="342e", ENV{libsane_matched}="yes"
ATTRS{idProduct}=="3426", ENV{libsane_matched}="yes"
ATTRS{idProduct}=="342b", ENV{libsane_matched}="yes"
ATTRS{idProduct}=="3433", ENV{libsane_matched}="yes"
ATTRS{idProduct}=="3440", ENV{libsane_matched}="yes"
ATTRS{idProduct}=="3434", ENV{libsane_matched}="yes"
ATTRS{idProduct}=="345b", ENV{libsane_matched}="yes"
ATTRS{idProduct}=="3457", ENV{libsane_matched}="yes"
ATTRS{idProduct}=="341f", ENV{libsane_matched}="yes"
ATTRS{idProduct}=="3453", ENV{libsane_matched}="yes"
ATTRS{idProduct}=="344b", ENV{libsane_matched}="yes"
ATTRS{idProduct}=="3409", ENV{libsane_matched}="yes"
ATTRS{idProduct}=="3412", ENV{libsane_matched}="yes"
ATTRS{idProduct}=="3419", ENV{libsane_matched}="yes"
ATTRS{idProduct}=="342c", ENV{libsane_matched}="yes"
ATTRS{idProduct}=="343c", ENV{libsane_matched}="yes"
ATTRS{idProduct}=="3432", ENV{libsane_matched}="yes"
ATTRS{idProduct}=="342d", ENV{libsane_matched}="yes"
ATTRS{idProduct}=="3430", ENV{libsane_matched}="yes"
ATTRS{idProduct}=="342f", ENV{libsane_matched}="yes"
ATTRS{idProduct}=="3446", ENV{libsane_matched}="yes"
ATTRS{idProduct}=="341a", ENV{libsane_matched}="yes"
ATTRS{idProduct}=="3437", ENV{libsane_matched}="yes"
ATTRS{idProduct}=="3442", ENV{libsane_matched}="yes"
ATTRS{idProduct}=="3466", ENV{libsane_matched}="yes"
ATTRS{idProduct}=="340d", ENV{libsane_matched}="yes"
ATTRS{idProduct}=="341d", ENV{libsane_matched}="yes"
ATTRS{idProduct}=="3420", ENV{libsane_matched}="yes"
ATTRS{idProduct}=="3429", ENV{libsane_matched}="yes"
ATTRS{idProduct}=="3443", ENV{libsane_matched}="yes"
ATTRS{idProduct}=="3438", ENV{libsane_matched}="yes"
ATTRS{idProduct}=="344c", ENV{libsane_matched}="yes"
ATTRS{idProduct}=="345d", ENV{libsane_matched}="yes"
ATTRS{idProduct}=="3463", ENV{libsane_matched}="yes"
ATTRS{idProduct}=="3465", ENV{libsane_matched}="yes"
ATTRS{idProduct}=="3450", ENV{libsane_matched}="yes"
ATTRS{idProduct}=="3468", ENV{libsane_matched}="yes"
ATTRS{idProduct}=="3469", ENV{libsane_matched}="yes"
ATTRS{idProduct}=="3467", ENV{libsane_matched}="yes"
ATTRS{idProduct}=="346b", ENV{libsane_matched}="yes"
ATTRS{idProduct}=="346a", ENV{libsane_matched}="yes"
ATTRS{idProduct}=="346e", ENV{libsane_matched}="yes"
ATTRS{idProduct}=="3471", ENV{libsane_matched}="yes"
ATTRS{idProduct}=="3472", ENV{libsane_matched}="yes"
ATTRS{idProduct}=="347d", ENV{libsane_matched}="yes"
ATTRS{idProduct}=="347c", ENV{libsane_matched}="yes"
ATTRS{idProduct}=="347e", ENV{libsane_matched}="yes"
ATTRS{idProduct}=="3481", ENV{libsane_matched}="yes"
ATTRS{idProduct}=="3482", ENV{libsane_matched}="yes"
ATTRS{idProduct}=="3331", ENV{libsane_matched}="yes"
ATTRS{idProduct}=="3332", ENV{libsane_matched}="yes"
ATTRS{idProduct}=="3483", ENV{libsane_matched}="yes"
ATTRS{idProduct}=="3484", ENV{libsane_matched}="yes"
ATTRS{idProduct}=="3485", ENV{libsane_matched}="yes"
ATTRS{idProduct}=="3478", ENV{libsane_matched}="yes"
ATTRS{idProduct}=="3325", ENV{libsane_matched}="yes"
ATTRS{idProduct}=="3327", ENV{libsane_matched}="yes"
ATTRS{idProduct}=="346f", ENV{libsane_matched}="yes"
ATTRS{idProduct}=="3477", ENV{libsane_matched}="yes"
ATTRS{idProduct}=="3324", ENV{libsane_matched}="yes"
ATTRS{idProduct}=="3326", ENV{libsane_matched}="yes"
ATTRS{idProduct}=="3486", ENV{libsane_matched}="yes"
ATTRS{idProduct}=="3487", ENV{libsane_matched}="yes"
ATTRS{idProduct}=="3489", ENV{libsane_matched}="yes"

ENV{libsane_matched}=="yes", OWNER="root", MODE="664", GROUP="lp"

LABEL="smfp_label_end"


пробовал в последней строке менять
ENV{libsane_matched}==»yes», OWNER=»eyesless», MODE=»0777″, GROUP=»scanner»

а также

sudo usermod -G lp -a eyesless

безполезно, scanimage -L в т.ч. через sudo не работает

Не всегда программы в Linux запускаются как положено. Иногда, в силу разных причин программа вместо нормальной работы выдает ошибку. Но нам не нужна ошибка, нам нужна программа, вернее, та функция, которую она должна выполнять. Сегодня мы поговорим об одной из самых серьезных и непонятных ошибок. Это ошибка сегментации Ubuntu. Если такая ошибка происходит только один раз, то на нее можно не обращать внимания, но если это регулярное явление нужно что-то делать.

Конечно, случается эта проблема не только в Ubuntu, а во всех Linux дистрибутивах, поэтому наша инструкция будет актуальна для них тоже. Но сосредоточимся мы в основном на Ubuntu. Рассмотрим что такое ошибка сегментирования linux, почему она возникает, а также как с этим бороться и что делать.

Что такое ошибка сегментации?

Ошибка сегментации, Segmentation fault, или Segfault, или SIGSEGV в Ubuntu и других Unix подобных дистрибутивах, означает ошибку работы с памятью. Когда вы получаете эту ошибку, это значит, что срабатывает системный механизм защиты памяти, потому что программа попыталась получить доступ или записать данные в ту часть памяти, к которой у нее нет прав обращаться.

Чтобы понять почему так происходит, давайте рассмотрим как устроена работа с памятью в Linux, я попытаюсь все упростить, но приблизительно так оно и работает.

Допустим, в вашей системе есть 6 Гигабайт оперативной памяти, каждой программе нужно выделить определенную область, куда будет записана она сама, ее данные и новые данные, которые она будет создавать. Чтобы дать возможность каждой из запущенных программ использовать все шесть гигабайт памяти был придуман механизм виртуального адресного пространства. Создается виртуальное пространство очень большого размера, а из него уже выделяется по 6 Гб для каждой программы. Если интересно, это адресное пространство можно найти в файле /proc/kcore, только не вздумайте никуда его копировать.

Выделенное адресное пространство для программы называется сегментом. Как только программа попытается записать или прочитать данные не из своего сегмента, ядро отправит ей сигнал SIGSEGV и программа завершится с нашей ошибкой. Более того, каждый сегмент поделен на секции, в некоторые из них запись невозможна, другие нельзя выполнять, если программа и тут попытается сделать что-то запрещенное, мы опять получим ошибку сегментации Ubuntu.

Почему возникает ошибка сегментации?

И зачем бы это порядочной программе лезть, куда ей не положено? Да в принципе, незачем. Это происходит из-за ошибки при написании программ или несовместимых версиях библиотек и ПО. Часто эта ошибка встречается в программах на Си или C++. В этом языке программисты могут вручную работать с памятью, а язык со своей стороны не контролирует, чтобы они это делали правильно, поэтому одно неверное обращение к памяти может обрушить программу.

Почему может возникать эта ошибка при несовместимости библиотек? По той же причине — неверному обращению к памяти. Представим, что у нас есть библиотека linux (набор функций), в которой есть функция, которая выполняет определенную задачу. Для работы нашей функции нужны данные, поэтому при вызове ей нужно передать строку. Наша старая версия библиотеки ожидает, что длина строки будет до 256 символов. Но программа была обновлена формат записи поменялся, и теперь она передает библиотеке строку размером 512 символов. Если обновить программу, но оставить старую версию библиотеки, то при передаче такой строки 256 символов запишутся нормально в подготовленное место, а вот вторые 256 перезапишут данные программы, и возможно, попытаются выйти за пределы сегмента, тогда и будет ошибка сегментирования linux.

Что делать если возникла ошибка сегментирования?

Если вы думаете, что это ошибка в программе, то вам остается только отправить отчет об ошибке разработчикам. Но вы все-таки еще можете попытаться что-то сделать.

Например, если падает с ошибкой сегментации неизвестная программа, то мы можем решить что это вина разработчиков, но если с такой ошибкой падает chrome или firefox при запуске возникает вопрос, может мы делаем что-то не так? Ведь это уже хорошо протестированные программы.

Первое, что нужно сделать — это обновить систему до самой последней версии, возможно, был баг и его уже исправили, а может у вас установлены старые версии библиотек и обновление решит проблему. В Ubuntu это делается так:

sudo apt update
sudo apt full-upgrade

Если это не помогло, нужно обнулить настройки программы до значений по умолчанию, возможно, удалить кэш. Настройки программ в Linux обычно содержатся в домашней папке, скрытых подкаталогах с именем программы. Также, настройки и кэш могут содержаться в каталогах ~/.config и ~/.cache. Просто удалите папки программы и попробуйте снова ее запустить. Если и это не помогло, вы можете попробовать полностью удалить программу, а потом снова ее установить, возможно, какие-нибудь зависимости были повреждены:

sudo apt remove пакет_программы
sudo apt autoremove
sudo apt install пакет_программы

Если есть возможность, попробуйте установить программу из другого источника, например, не из PPA, а более старую версию, из официальных репозиториев.

Когда вы все это выполнили, скорее всего, проблема не в вашем дистрибутиве, а в самой программе. Нужно отправлять отчет разработчикам. В Ubuntu это можно сделать с помощью программы apport-bug. Обычно Ubuntu предлагает это сделать сразу, после того как программа завершилась с ошибкой сегментирования. Если же ошибка сегментирования Ubuntu встречается не в системной программе, то вам придется самим искать разработчиков и вручную описывать что произошло.

Чтобы помочь разработчикам решить проблему, недостаточно отправить им только сообщение что вы поймали Segmentation Fault, нужно подробно описать проблему, действия, которые вы выполняли перед этим, так чтобы разработчик мог их воспроизвести. Также, желательно прикрепить к отчету последние функции, которые вызывала программа (стек вызовов функций), это может очень сильно помочь разработчикам.

Рассмотрим, как его получить. Это не так уж сложно. Сначала запустите вашу программу, затем узнайте ее PID с помощью команды:

pgrep программа

Дальше запускаем отладчик gdb:

sudo gdb -q

Подключаемся к программе:

(gdb) attach ваш_pid

После подключения программа станет на паузу, продолжаем ее выполнение командой:

(gdb) continue

segfault

Затем вам осталось только вызвать ошибку:

segfault1

И набрать команду, которая выведет стек последних вызовов:

(gdb) backtrace

Вывод этой команды и нужно отправлять разработчикам. Чтобы отключиться от программы и выйти наберите:

(gdb) detach
(gdb) quit

Дальше остается отправить отчет и ждать исправления ошибки. Если вы не уверены, что ошибка в программе, можете поспрашивать на форумах. Когда у вас есть стек вызовов, уже можно попытаться, если не понять в чем проблема, то попытаться узнать, не сталкивался ли с подобной проблемой еще кто-то.

Выводы

Теперь у вас есть приблизительный план действий, что нужно делать, когда появляется ошибка сегментирования сделан дамп памяти ubuntu. Если вы знаете другие способы решить эту проблему, напишите в комментариях!

Обнаружили ошибку в тексте? Сообщите мне об этом. Выделите текст с ошибкой и нажмите Ctrl+Enter.

Creative Commons License

Статья распространяется под лицензией Creative Commons ShareAlike 4.0 при копировании материала ссылка на источник обязательна .

Понравилась статья? Поделить с друзьями:
  • Scania ошибка p2047
  • Scania ошибка aps 169
  • Scania ошибка 8993
  • Scania ошибка 732
  • Scania ошибка 576