Здравствуйте!
Пытаюсь запустить wb-mqtt-serial на Orange Pi 3 LTS. Я понимаю, это не wirenboard, но по архитектуре схожа с WB8. libwbmqtt1-5 скачал с http://deb.wirenboard.com/wb8/bullseye/, wb-mqtt-serial пробовал как взять там же, так и собрать из исходников.
Но получаю один и тот же симптом: через минуту/две приложение падает с SIGILL. gdb показал что проблема именно в libwbmqtt1.so.5. К сожалению исходников libwbmqtt нет, поэтому пересобрать саму либу не могу.
Судя по документации архитектуры процессоров схожие, поэтому странно видеть SIGILL.
Я понимаю, что orange не wb8, но может можно что-то сделать с этим? Хочу использовать свой orange в одном месте, но чтобы данные шли через mqtt в том же формате, что и на wb. И конфигурация была одинаковой.
Может быть можно пересобрать либу с другими флагами. Возможно это даже потенциальная проблема и для wb8. Готов посодействовать в отлове проблемы.
Отпишитесь, пожалуйста, и в том случае, если не будете рассматривать этот вопрос. Заранее спасибо.
Вот некоторая информация:
/proc/cpuinfo (не отличается от wb8)
processor : 0
BogoMIPS : 48.00
Features : fp asimd evtstrm aes pmull sha1 sha2 crc32 cpuid
CPU implementer : 0x41
CPU architecture: 8
CPU variant : 0x0
CPU part : 0xd03
CPU revision : 4
processor : 1
BogoMIPS : 48.00
Features : fp asimd evtstrm aes pmull sha1 sha2 crc32 cpuid
CPU implementer : 0x41
CPU architecture: 8
CPU variant : 0x0
CPU part : 0xd03
CPU revision : 4
processor : 2
BogoMIPS : 48.00
Features : fp asimd evtstrm aes pmull sha1 sha2 crc32 cpuid
CPU implementer : 0x41
CPU architecture: 8
CPU variant : 0x0
CPU part : 0xd03
CPU revision : 4
processor : 3
BogoMIPS : 48.00
Features : fp asimd evtstrm aes pmull sha1 sha2 crc32 cpuid
CPU implementer : 0x41
CPU architecture: 8
CPU variant : 0x0
CPU part : 0xd03
CPU revision : 4
libwbmqtt1-5
Package: libwbmqtt1-5
Version: 5.3.2
Status: install ok installed
Priority: optional
Section: libs
Source: libwbmqtt1
Maintainer: Wiren Board team <info@wirenboard.com>
Installed-Size: 1,426 kB
Depends: libc6 (>= 2.30), libdb5.3++, libext2fs2 (>= 1.37), libgcc-s1 (>= 4.2), libmosquitto1 (>= 1.0), libssl1.1 (>= 1.1.0), libstdc++6 (>= 9), libcomerr2
Download-Size: unknown
APT-Manual-Installed: yes
APT-Sources: /var/lib/dpkg/status
Description: Wiren Board Smart Home MQTT abstraction layer and utils library
ошибка
Thread 5 "backend: reques" received signal SIGILL, Illegal instruction.
stacktrace на момент SIGILL
#0 0x0000fffff7ebc5b0 in ?? () from /lib/aarch64-linux-gnu/libwbmqtt1.so.5
#1 0x0000fffff7f36e20 in ?? () from /lib/aarch64-linux-gnu/libwbmqtt1.so.5
#2 0x0000fffff7f36f8c in ?? () from /lib/aarch64-linux-gnu/libwbmqtt1.so.5
#3 0x0000fffff7e949e8 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 0x0000fffff7e922e4 in ?? () from /lib/aarch64-linux-gnu/libwbmqtt1.so.5
#5 0x0000fffff7d22cac in ?? () from /lib/aarch64-linux-gnu/libstdc++.so.6
#6 0x0000fffff7fa2648 in start_thread () from /lib/aarch64-linux-gnu/libpthread.so.0
#7 0x0000fffff7ae801c in ?? () from /lib/aarch64-linux-gnu/libc.so.6
asm
│ 0xfffff7ebc554 add x1, x1, #0x1 │
│ 0xfffff7ebc558 bl 0xfffff7e77540 <_ZdlPvm@plt> │
│ 0xfffff7ebc55c cmp x21, x19 │
│ 0xfffff7ebc560 b.ne 0xfffff7ebc520 // b.any │
│ 0xfffff7ebc564 ldr x21, [sp, #176] │
│ 0xfffff7ebc568 cbz x21, 0xfffff7ebc64c │
│ 0xfffff7ebc56c ldr x1, [sp, #192] │
│ 0xfffff7ebc570 mov x0, x21 │
│ 0xfffff7ebc574 sub x1, x1, x21 │
│ 0xfffff7ebc578 bl 0xfffff7e77540 <_ZdlPvm@plt> │
│ 0xfffff7ebc57c ldp x21, x22, [sp, #32] │
│ 0xfffff7ebc580 b 0xfffff7ebc28c │
│ 0xfffff7ebc584 add x19, x19, #0x48 │
│ 0xfffff7ebc588 cmp x21, x19 │
│ 0xfffff7ebc58c b.ne 0xfffff7ebc520 // b.any │
│ 0xfffff7ebc590 ldr x21, [sp, #176] │
│ 0xfffff7ebc594 b 0xfffff7ebc568 │
│ 0xfffff7ebc598 adrp x0, 0xfffff7f4b000 <_ZTSFSt10shared_ptrIN6WBMQTT12TLocalDeviceEEONS0_16TLocalDeviceArgsEE+16> │
│ 0xfffff7ebc59c add x19, sp, #0xd8 │
│ 0xfffff7ebc5a0 ldr d0, [x0, #1416] │
│ 0xfffff7ebc5a4 bl 0xfffff7f335d0 │
│ 0xfffff7ebc5a8 tst w0, #0xff │
│ 0xfffff7ebc5ac b.eq 0xfffff7ebc368 // b.none │
│ >0xfffff7ebc5b0 .inst 0xf7f0a123 ; undefined │