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 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
- Debian -- Подробная информация о пакете claws-mail в buster
- Debian -- Список файлов пакета claws-mail/buster/i386
Есть ли эта версия в 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 архивов. После данной операции объём занятого дискового пространства возрастёт на 2 469 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!

