Claws Mail segfault libglib-2.0.so в Debian Linux

archive view archive save

claws-mail-logo_0, jpg May  7 21:09:07 falian kernel: [28158.268823] claws-mail[17051]: segfault at 4f300868 ip 4feb2633 sp bf93a630 error 4 in libglib-2.0.so.0.5800.3[4fe7e000+82000]

Claws Mail - хороший легковесный кросплатформенный почтовый клиент. В сравнении например с тем же "тундраболтом" жрёт вразы меньше оперативной памяти, да и по функционалу он мне больше нравится.

Однако спустя несколько месяцев обновлений ядра и прочего хозяйства системы, конец 2020-го начало 2021-го года, в самой последней версии Debian Buster (10.9) повадились глюки разные из Claws Mail 3.17.3 segfault-ом вылазить.

claws-mail-logo_3.17.3, jpg

Воспроизведение Claws Mail segfault libglib-2.0.so

segfault libglib-2.0.so замечен в двух случаях.

segfault libglib-2.0.so при отправке почты

После того, как написали ответ или создали новое сообщение нажимаем "Отправить" и нам вылазит то гавно, но почта при этом успешно отправляется.

$ sudo tail -f /var/log/messages
...
May 7 21:09:07 falian kernel: [28158.268823] claws-mail[17051]: segfault at 4f300868 ip 4feb2633 sp bf93a630 error 4 in libglib-2.0.so.0.5800.3[4fe7e000+82000]
May 7 21:09:07 falian kernel: [28158.268842] Code: 14 39 4f 14 0f 8f 6d 01 00 00 a8 10 74 19 8b 47 14 83 44 24 10 01 c7 45 2c 00 00 00 00 89 44 24 14 eb a4 8d 74 26 00 8b 47 08 <8b> 30 85 f6 0f 84 b3 00 00 00 83 ec 0c 83 45 38 01 55 e8 56 c9 04
 
 
$ claws-mail --debug
...
imap.c:4670:get_num_list - ok - 0
msgcache.c:271:TIMING msgcache_get_msg_list : 0s000ms
imap.c:5565:IMAP switching to batch mode
imap.c:5584:IMAP switching away from batch mode
msgcache.c:271:TIMING msgcache_get_msg_list : 0s000ms
msgcache.c:271:TIMING msgcache_get_msg_list : 0s000ms
addr_compl.c:772:end_address_completion ref count 0
hooks.c:91:unregistered hook 5 in 'folder_update'
gtkaspell.c:733:Aspell: Deleting gtkaspeller 0xa30bef0.
gtkaspell.c:754:Aspell: gtkaspeller 0xa30bef0 deleted.
gtkaspell.c:738:Aspell: number of existing checkers 1
gtkaspell.c:733:Aspell: Deleting gtkaspeller 0xac769b0.
gtkaspell.c:754:Aspell: gtkaspeller 0xac769b0 deleted.
gtkaspell.c:738:Aspell: number of existing checkers 0
gtkaspell.c:472:Aspell: deleting gtkaspell 0xac76510
compose.c:5401:called inc_unlock (lock count 0)
Ошибка сегментирования

segfault libglib-2.0.so при редактировании настроек

Открываем "Настройки - Параметры", в секции "Составление" клацаем на "Проверка правописания" и Claws Mail "ауфидерзейн".

$ claws-mail --debug
...
account.c:1295:called inc_unlock (lock count 0)
prefswindow.c:671:0,000000
prefswindow.c:671:0,000000
gtkaspell.c:1596:Aspell: found dictionary uk_UA uk_UA
gtkaspell.c:1596:Aspell: found dictionary en_US en_US
gtkaspell.c:1596:Aspell: found dictionary uk uk
gtkaspell.c:1596:Aspell: found dictionary en en
gtkaspell.c:1596:Aspell: found dictionary en_CA en_CA
gtkaspell.c:1596:Aspell: found dictionary ru ru
gtkaspell.c:1596:Aspell: found dictionary ru_RU ru_RU
gtkaspell.c:1596:Aspell: found dictionary en_GB en_GB
gtkaspell.c:1596:Aspell: found dictionary en_AU en_AU
prefswindow.c:671:0,000000

Лечение Claws Mail segfault libglib-2.0.so

Перепробованы различные варианты лечения

Вариант №1. Отключить проверку правописания

Выключить Claws Mail, отредактировать ~/.claws-mail/clawsrc, снова запустить Claws Mail. Оказалось, что ни.уя не вариант.

$ vi ~/.claws-mail/clawsrc
...
enable_aspell=0
dictionary=ru
alt_dictionary=en
use_alternate_dict=0
check_while_typing=0
recheck_when_changing_dict=0

Вариант №2. Удалить "спелчикеры"

"claws-mail --debug" говорит, что "глюк" связан с файлом "gtkaspell.c" (строка: 1596). Из описания файла "src/gtk/gtkaspell.c" понятно, что это "original code for ispell".

https://tracker.debian.org/media/packages/c/claws-mail/copyright-3.11.1-3%2Bdeb8u1

Files: src/gtk/gtkaspell.c
Copyright:
2000 Evan Martin (original code for ispell).
2002 Melvin Hadasht.
2001-2013 the Claws Mail Team
2000,2001 Grigroy Bakunov, Sergey Pinaev
2001-2002 by Hiroyuki Yamamoto & The Claws Mail Team
License: GPL-3+

"Мы им будем удалять":

$ sudo apt-get purge myspell-ru myspell-uk ispell irussian
...один шиш segfault...
 
$ sudo apt-get purge aspell aspell-en aspell-ru aspell-uk
...хочет удалиться вместе с Claws Mail...

Всё по.уям и всё до п.зды, Claws Mail требует как минимум наличие какого-то одного "спелчекера", и с любым из них один хрен вылазит segfault libglib-2.0.so

Вариант №3. Правка кода и пересборка

Ковыряться в говнокоде и отлавливать глюки разные занятие увлекательное, но когда на повестке барано-вирусного дня стоит куча иных, боле стратегически и тактически важных, задач, то как бы не до ковыряния говнокода.

Но, ни.уя не поделаешь, гамно сие лезет уже несколько месяцев подряд и уже в конец заколебало - отправил сообщение, получи segfault libglib-2.0.so, снова запускай Claws Mail.

Для начала был создан "глюк-репорт":

Когда "глюк-репорт" создавался, было выдано несколько похожих тем про segfault, одна из которых как раз по теме:

2329 – claws-mail segfault when sending message
...
commenting out line 463 of gtkaspeel.c
gtkaspeller_delete(gtkaspell->alternate_speller);

Типа закомментируй строку 463 в файле "gtkaspeel.c" и прибудет тебе счастье.

Для Debian Buster версия Claws Mail 3.17.3

Есть ли эта версия в Claws Mail - Git выяснять было некогда. Последняя версия из Git 3.17.8-79-g6b3666 (...666 - как это знаково), но нам нужна версия 3.17.3, бо часто бывает в новой версии новые геморрои, а оно нам нах.й надо. В сети найдены варианты, один из которых и будем собирать:

В ходе подготовительных мероприятий пришлось немного по граблям походить:

$ ./autogen.sh
...
configure.ac:51: installing 'config/config.guess'
configure.ac:51: installing 'config/config.sub'
configure.ac:54: installing 'config/install-sh'
configure.ac:54: installing 'config/missing'
src/Makefile.am: installing 'config/depcomp'
configure.ac: installing 'config/ylwrap'
sh: 1: .: Cant open ./version
configure: error: *** could not determine program version
 
 
$ ./configure
...
configure: error: *** could not determine program version
 
 
# Не хватает ему файла "./version", а шо в нём должно быть ХЗ, клонируем последнюю версию из git и глянем в "./version"
 
https://www.claws-mail.org/git.php?section=projects
 
$ git clone https://git.claws-mail.org/readonly/claws.git
$ less ./version
echo 3.17.8-79-g6b3666
$ echo 'echo 3.17.3' > ./version
 
 
$ ./configure
checking for libetpan-config... no
*** Claws Mail requires libetpan 0.57 or newer. See http://www.etpan.org/
*** You can use --disable-libetpan if you dont need IMAP4 and/or NNTP support.
configure: error: libetpan 0.57 not found
 
 
# Найдём и установим libetpan
 
$ sudo apt-cache search libetpan
claws-mail-mailmbox-plugin - mbox format mailboxes handler for Claws Mail
libetpan-dev - mail handling library - development files
libetpan-doc - mail handling library - API documentation
libetpan20 - mail handling library
 
$ sudo apt-get install libetpan-dev
Чтение списков пакетов… Готово
Построение дерева зависимостей
Чтение информации о состоянии… Готово
Будут установлены следующие дополнительные пакеты:
 libcurl4-gnutls-dev liblockfile-dev
Предлагаемые пакеты:
 libcurl4-doc libkrb5-dev librtmp-dev libssh2-1-dev libetpan-doc
Следующие пакеты будут УДАЛЕНЫ:
 libcurl4-openssl-dev
Следующие НОВЫЕ пакеты будут установлены:
 libcurl4-gnutls-dev libetpan-dev liblockfile-dev
Обновлено 0 пакетов, установлено 3 новых пакетов, для удаления отмечено 1 пакетов, и 0 пакетов не обновлено.
Необходимо скачать 909 kB архивов.
После данной операции объём занятого дискового пространства возрастёт на 2469 kB.
Хотите продолжить? [Д/н]
 
 
# Узнаем, где у нас установлен бинарный файл
 
$ sudo locate claws-mail|grep bin
/etc/apparmor.d/usr.bin.claws-mail
/usr/bin/claws-mail

Плагины к Claws Mail установлены из репозитория Debian, в каталоге /usr/lib/i386-linux-gnu/claws-mail/plugins/, потому отключаем их сборку при конфигурации. Кроме того, для сборки плагинов понядобится установить кучу зависимостей.

Чтобы верняк знать, куда-чего в нашей системе должно устанавливатся, какие значения параметров конфигурации "./configure ..." должны быть - можно заглянуть в журнал сборки пакета:

В "./configure --help" можно найти параметр отключающий злосчастную проверку орфографии (вместо комментирования строки 463 в gtkaspeel.c):

  • --disable-enchant - Do not build Enchant support for spell-checking

Полная строка "./configure ..." Claws Mail 3.17.3 для Debian Buster i386:

Только после полного отключения блокировщика скриптов и рекламы на этом месте появится полезная подсказка/ссылка/код/пример конфигурации/etc!

Результат "./configure ...":

...
 
claws-mail 3.17.3
 
Using Address Book : Original stable interface
JPilot : no
LDAP : no
gnuTLS : yes
iconv : yes
compface : no
IPv6 : no
enchant : no
IMAP4 : yes
NNTP : yes
Crash dialog : no
LibSM : no
DBUS : no
NetworkManager : no
Manual : no
Generic UMPC code : no
SVG support : no
Config dir : .claws-mail
Password crypto : gnutls
Unit tests : no
Plugins
 Built:
 Disabled:
 - acpi_notifier
 - address_keeper
 - archive
 - att_remover
 - attachwarner
 - bogofilter
 - bsfilter
 - clamd
 - demo
 - dillo
 - fancy
 - fetchinfo
 - gdata
 - libravatar
 - mailmbox
 - managesieve
 - newmail
 - notification
 - pdf_viewer
 - perl
 - python
 - pgpcore
 - pgpmime
 - pgpinline
 - rssyl
 - spamassassin
 - smime
 - spam_report
 - tnef_parse
 - vcalendar
 
The binary will be installed in /usr/bin
 
Configure finished, type 'make' to build.

Сборка и запуск Claws Mail

$ make
$ ./src/claws-mail

Отключив при сборке ненужные "фичи" получили бинарник в 3 раза меньше оригинала, а нафига ж нам лишнее место в РАМе порожняком то забивать?!

$ ls -la /usr/bin/claws-mail
-rwxr-xr-x 1 root root 4820956 апр 3 2019 /usr/bin/claws-mail
 
$ ls -la ./src/claws-mail
-rwxr-x--- 1 yuzver yuzver 14687752 мая 9 00:59 ./src/claws-mail

Другие проблемы в работе Claws Mail

Нет окна программы после запуска

Если claws-mail запустился без ошибок, но пользовательского интерфейса нигде не видно и claws-mail есть в списке процессов, тогда выполним следующие экзекуции:

Только после полного отключения блокировщика скриптов и рекламы на этом месте появится полезная подсказка/ссылка/код/пример конфигурации/etc!


Добавить комментарий

АХТУНГ! Все комменты гостей модерасятся модерастом.
  1. Мессаги исключительно рекламного содержания, либо содержащие только одни оценочные суждения типа "круто" ("отлично", "спасибо", "автор дебил" и т.п.) не публикуются;
  2. Злостным спамерам, пранкерам и прочей сетевой нечисти рекомендуем напрасно не тратить своего времени и удовлетворять свои больные фантазии на специализированных Интернет ресурсах!;
  3. Разумная обоснованная критика, замечания, дополнения приветствуются. Поля помеченные символом * обязательны к заполнению.


Защитный код
Обновить

Нет комментариев

Вы можете стать первым, кто добавит комментарий к этой записи.

Комментарии в блоге
Новое на форуме