Ошибка сегментации в Simple Scan, XSane и scanimage

Я не вижу никакого способа сделать это легко. Вам нужно будет передать вывод complete -pиз родительской оболочки в дочерние оболочки.

Для начала это позволяет вам вводить дополнительные команды в подоболочку:

$ bash --rcfile <(echo '. ~/.bash_profile')

Теперь, если мы попытаемся ввести complete -pв это, вот так:

$ bash --rcfile <(echo '. ~/.bash_profile'; while read line; do echo "$line"; done < <(complete -p))
complete: usage: complete [-abcdefgjksuv] [-pr] [-DE] [-o option] [-A action] [-G globpat] [-W wordlist]  [-F function] [-C command] [-X filterpat] [-P prefix] [-S suffix] [name...]

Это почти работает, кажется, что он спотыкается на поступающих командах complete. Попытка использовать файл в качестве промежуточного звена также не сработала:

$ complete -p > /tmp/cmp.txt; bash --rcfile <(echo '. ~/.bash_profile'; echo '. /tmp/cmp.txt')
complete: usage: complete [-abcdefgjksuv] [-pr] [-DE] [-o option] [-A action] [-G globpat] [-W wordlist]  [-F function] [-C command] [-X filterpat] [-P prefix] [-S suffix] [name...]

Попытка понять, почему он терпит неудачу, на самом деле не проливает много дополнительного света на вещи. Здесь я включаю подробный вывод из bash через-set -x:

$ bash
$ set -x

Затем мы получаем файл, который создали секунду назад:

$. /tmp/cmp.txt
+. /tmp/cmp.txt
++ complete -F _manila manila
++ complete -F _minimal
complete: usage: complete [-abcdefgjksuv] [-pr] [-DE] [-o option] [-A action] [-G globpat] [-W wordlist]  [-F function] [-C command] [-X filterpat] [-P prefix] [-S suffix] [name...]
++ complete -F _command time
++ complete -F _command do
++ complete -o bashdefault -o default -o nospace -F __git_wrap_git_checkout gcob

Таким образом, если не прибегать к какой-либо хитрости, похоже, что данные, содержащиеся в выводе complete -p, в данном конкретном случае не переносимы.

Ссылки

1
16.08.2020, 17:25
2 ответа

Некоторые обновления решили эту проблему.

0
18.03.2021, 23:12

У меня возникли проблемы с ошибкой сегментации в Xsane при использовании моего USB-сканера HP4200 после обновления до Ubuntu 20.04 с Ubuntu 18.04.

Я нашел множество предложений Google, которые не помогли.Я настроил и скомпилировал серверную часть для HP4200, но она все равно давала сбой.

Я включил отладочные сообщения в исходном коде и обнаружил, что отладочные сообщения говорят мне, что происходит сбой всегда в одном и том же месте

подпрограмма с именем do_fine_calibrationв файле hp4200.c. В этой подпрограмме вызывается memset, и оказалось, что именно здесь произошел сбой.

Если memsetвызывается с нулевым указателем, он пытается получить доступ к несуществующей памяти. Я пытался выяснить, делает ли Ubuntu 20.04 что-то другое в управлении памятью, но ничего не нашел.

В любом случае, казалось, что этот код устанавливает большой массив с именем registro, для которого не существует указателя!

Я не гуру управления памятью, но после некоторых исследований я решил изменить объявление реестра, чтобы установить его в 0 при объявлении (о строке 1377-int registro[30][5460 * 3] = {0};с моей сдачей)

, а затем удалите секцию кода (строку 1496 -около 1505 ), которая mem устанавливает массив регистров в 0.

После повторного ./configuration, make sudo make installи запуска скан-изображения для сканирования, о чудо, двигатель взлетел и снова начал сканирование!

0
27.05.2021, 02:05

Теги

Похожие вопросы