4/ILL падение пары сервисов

1. Краткое описание проблемы
Два сервиса, работающие с MQTT (wb-mqtt-db и wb-mqtt-adc), периодически аварийно завершаются с кодом 4/ILL (Illegal instruction), systemd их автоматически рестартует, счётчик перезапусков за сутки достигает 400+. Несмотря на это, данные в MQTT продолжают передаваться, но постоянные рестарты создают нагрузку на систему и запутывают диагностику.


2. Информация об устройстве

  • Модель: 8.5.1
  • Аппаратная ревизия: 8.5.1D/2GS 1.2D-2G
  • Версия прошивки (firmware): wb-2504

3. ОС и пакеты

  • ОС: Debian stable (bullseye), архитектура arm64
  • Ядро: 6.8.0-wb136 #1 SMP Thu Apr 24 05:25:49 UTC 2025 aarch64 GNU/Linux и wb138
  • libwbmqtt1-5: 5.3.4 (Installed/Candidate 5.3.4, http://deb.wirenboard.com/wb8/bullseye)
  • Система ранее была на testing, переведена на stable, сбрасывалась до заводских настроек, в MQTT только минимальные данные.

4. Подробное описание

  • В логах systemd:
Main process exited, code=killed, status=4/ILL  
Failed with result 'signal'.  
Scheduled restart job, restart counter is at N.
  • Core-dump показал, что в libwbmqtt1.so.5 исполняется “dot-product” инструкция ARMv8.2-A (.inst 0xf7f0a123), отсутствующая на CPU Cortex-A53 (ARMv8.0-A), из-за чего и падает процесс.
  • Сбои происходят при минимальной нагрузке (несколько подписок), даже после чистого сброса системы.
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/aarch64-linux-gnu/libthread_db.so.1".
__pthread_clockjoin_ex (threadid=281473489830288, thread_return=0x0, clockid=0, abstime=<optimized out>, 
    block=<optimized out>) at pthread_join_common.c:145
145	pthread_join_common.c: No such file or directory.
(gdb) continue
Continuing.

Thread 5 "backend: reques" received signal SIGILL, Illegal instruction.
[Switching to Thread 0xffffa5800190 (LWP 26765)]
0x0000ffffa8280600 in ?? () from /lib/aarch64-linux-gnu/libwbmqtt1.so.5
(gdb) bt
#0  0x0000ffffa8280600 in ?? () from /lib/aarch64-linux-gnu/libwbmqtt1.so.5
#1  0x0000ffffa82f9e00 in ?? () from /lib/aarch64-linux-gnu/libwbmqtt1.so.5
#2  0x0000ffffa82f9f6c in ?? () from /lib/aarch64-linux-gnu/libwbmqtt1.so.5
#3  0x0000ffffa8258a28 in std::_Function_handler<void (), WBMQTT::TDriverBackendImpl::StartRequestProcessorsLoop()::{lambda()#1}>::_M_invoke(std::_Any_data const&) () from /lib/aarch64-linux-gnu/libwbmqtt1.so.5
#4  0x0000ffffa8256324 in ?? () from /lib/aarch64-linux-gnu/libwbmqtt1.so.5
#5  0x0000ffffa80b5cac in ?? () from /lib/aarch64-linux-gnu/libstdc++.so.6
#6  0x0000ffffa81cb648 in start_thread (arg=0xffffa57ffa90) at pthread_create.c:477
#7  0x0000ffffa7f25c9c in thread_start () at ../sysdeps/unix/sysv/linux/aarch64/clone.S:78
(gdb) x/12i 0x0000ffffa8280600
=> 0xffffa8280600:	.inst	0xf7f0a123 ; undefined
   0xffffa8280604:	b	0xffffa82803b8
   0xffffa8280608:	mov	w0, w19
   0xffffa828060c:	ldp	x19, x20, [sp, #16]
   0xffffa8280610:	ldp	x21, x22, [sp, #32]
   0xffffa8280614:	ldp	x23, x24, [sp, #48]
   0xffffa8280618:	ldp	x25, x26, [sp, #64]
   0xffffa828061c:	ldp	x27, x28, [sp, #80]
   0xffffa8280620:	ldp	x29, x30, [sp], #256
   0xffffa8280624:	ret
   0xffffa8280628:	adrp	x0, 0xffffa8359000 <_ZTVN9__gnu_cxx13stdio_filebufIcSt11char_traitsIcEEE>
   0xffffa828062c:	mov	x8, x19


Буду признателен за помощь в выпуске исправленной версии библиотеки или другого решения, устраняющего SIGILL и постоянные рестарты сервисов.

Добрый день.
Для полноты картины загрузите пожалуйста еще диагностический архив с этого контроллера. Создание архива описано в документации.
Посмотрел на стенде:

позову разработчиков.

Добрый день.
Дайте архив пожалуйста - без такового довольно сложно (даже предварительно) диагностировать.

Сейчас нахожусь далеко от контроллера без доступа, там еще есть проблема с сертификатами для wb-cloud, но это другая история, потом хотел спросить в другой теме)

Сброшу в конце недели.
Насколько я помню когда разбирался суть в том что
В логе видно, что процесс падал на неизвестной инструкции ARMv8.2-A dot-product (.inst 0xf7f0a123), которой нет в Cortex-A53 (ARMv8.0-A), из-за чего ядро посылает SIGILL (Illegal instruction) и systemd перезапускает сервис
Cortex-A53: реализует ARMv8.0-A без расширения dot-product.
• Cortex-A55, A75, A76 и другие ARM-ядра семейства 8.2+: реализуют ARMv8.2-A (опционально поддерживают dot-product)

Там в подтверждение вы скинули что есть такие падения и на тестовом стенде.
Скорей всего будет достаточно пересобрать библиотеку libmqtt

Отлично, жду.

Да, высоковероятно. Но на стенде за всю историю было несколько подобных записей, я фильровал весь журнал.
Мне интересно почему они часто возникают. Ну и точные версии пакетов из архива посмотреть хочу.

И, напишите пожалуйста сразу (если есть записанный) серийный номер контроллера. И какие внутренние модули расширения установлены.
Коллеги посоветовали поменять - подозревают аппаратные проблемы.
Напишете номер и запустим процесс обмена. Бесплатно, в рамках шарантии.

приложен диагностический архив, доступен только сотрудникам поддержки
(155,3 КБ)

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

Пока собирал по инструкциям вашу прошивку и прочее столкнулся с TODO и некоторыми неточностями в доках и тп. Если будет интересно то могу написать потом.

Подскажите пожалуйста возможно ли удаленно получить сертификаты для wb-cloud, там я случайно затер скрытый раздел в котором они хранились. Написано в логах обратиться в саппорт или раньше была почта на домене контактлесс. Если возможно то могу написать на почту или отдельную тему создать

Если это брендированное (то есть написано не “Wirenboard”) устройство - нет, сразу не поменяем.
Тогда нужно менять через производителя.

Да, конечно интересно.

Сертификаты - в CryptodevATECCx08 Auth — Wiren Board, их невозможно удалить. Или имеются в виду какие-то другие?

device.crt.pem device_bundle.crt.pem вот эти у меня не удается восстановить. Скрипт установки в логе пишет написать в саппорт, раньше там был email.

Так, то есть выводится после factory reset c флешки - это сообщение?
Спрошу у коллег.

Да , это есть в диагностическом архиве в логе апдейта.

Так… Вот тут я боюсь навредить. Поскольку оборудование не наше - то пожалуйста обратитесь в поддержку именно производителя - возможно что они реализовали по-другому эту часть.

По сути к теме не относится, но мне бы сами файлики получить сретификатов. (можно в личные сообщения или на почту).
Это демо стенд и я на нем пробую всякий софт и собирать систему из исходников, ставить и тд.
По сути темы просто в логах столкнулся с падением сервиса и воспроизвел на официальных прошивках stable/testing поэтому и создал тему. Тк ошибка явно не связано с моими тестами.