Modbus incoming connection, Segmentation fault


#1

День добрый.
Есть WB5 (5.8), вновь вдруг понадобился RTU Modbus-TCP для HMI на смартфоне.
В конце 2017, как помню, всё прекрасно работало.
Чёрт меня дернул обновляться (периодически)… и… На днях обнаружил, что при попытке считать чего-либо или записать wb-mqtt-mbgate вываливается (умирает и перестаёт слушать 502/tcp).

Включил debug. И в лучшем случае вижу:
2019-09-06 14:28:53.877 INFO: Connected to MQTT server
2019-09-06 14:28:55.854 DEBUG: Modbus incoming connection
Segmentation fault

Потыкался на этот порт telnet’ом - как только чего-либо передаю на wb-mqtt-mbgate - сразу вновь “Segmentation fault” и старт руками.

Что не так? Как выявить проблему? Как увеличить детализацию debug?

Firmware version: 201906131405

wb-mqtt-mbgate --version
wb-mqtt-mbgate version 0.1.4
Git revision 01f7980c428a6acb5ae44f6e1db7e34b3cf023ff
Build date: Oct 4 2018 10:01:u5408:

wb-adc-tools-mxs/stretch,now 1.0 armel [installed]
wb-configs/stretch,stretch,now 1.81.0 all [installed]
wb-configs-stretch/stretch,stretch,now 1.81.0 all [installed,automatic]
wb-daemon-watchdogs/stretch,stretch,now 1.1 all [installed]
wb-dt-overlays/stretch,stretch,now 1.3 all [installed]
wb-homa-adc/stretch,now 1.14.6 armel [installed]
wb-homa-gpio/stretch,now 1.19.5 armel [installed]
wb-homa-ism-radio/stretch,stretch,now 1.17.3 all [installed]
wb-homa-w1/stretch,now 1.10.1 armel [installed]
wb-hwconf-manager/stretch,stretch,now 1.28.0 all [installed]
wb-mqtt-confed/stretch,now 1.2.2 armel [installed]
wb-mqtt-dac/stretch,stretch,now 1.1.1 all [installed]
wb-mqtt-db/stretch,now 1.7.3 armel [installed]
wb-mqtt-db-cli/stretch,stretch,now 1.2.1 all [installed]
wb-mqtt-homeui/stretch,stretch,now 1.7.1 all [installed]
wb-mqtt-mbgate/stretch,now 0.1.4 armel [installed]
wb-mqtt-serial/stretch,now 1.53.0 armel [installed]
wb-rules/stretch,now 1.7.1 armel [installed]
wb-rules-system/stretch,stretch,now 1.6.2 all [installed]
wb-test-suite/stretch,stretch,now 1.15.1 all [installed]
wb-utils/stretch,stretch,now 2.1.2 all [installed,automatic]

Спасибо.


#2

Добрый день, KuZia495!

Чтобы более детально посмотреть на отладочную информацию, остановите сервис
systemctl stop wb-mqtt-mbgate
а затем запустите в терминале
/usr/bin/wb-mqtt-mbgate -vvv -c /etc/wb-mqtt-mbgate.conf

Попробуйте удалить и вручную установить старую версию https://github.com/contactless/wb-mqtt-mbgate/releases/download/v0.1.1/wb-mqtt-mbgate_0.1.1_armel.deb


#3

Kilpio, именно так и запускаю:
wb-mqtt-mbgate -c"/etc/wb-mqtt-mbgate.conf" -vvvv
2019-09-06 15:43:18.583 DEBUG: Modbus configuration: host *, port 502
2019-09-06 15:43:18.589 DEBUG: MQTT configuration: host localhost, port 1883, keepalive 60
2019-09-06 15:43:18.593 DEBUG: Processing store 2
2019-09-06 15:43:18.598 DEBUG: Processing store 1
2019-09-06 15:43:18.603 DEBUG: Processing store 8
2019-09-06 15:43:18.605 DEBUG: Processing store 4
2019-09-06 15:43:18.608 DEBUG: Modbus cache allocated
2019-09-06 15:43:18.614 INFO: Modbus listening
2019-09-06 15:43:18.635 INFO: Start loops
2019-09-06 15:43:18.640 INFO: Connected to MQTT server
2019-09-06 15:43:21.006 DEBUG: Modbus incoming connection
Segmentation fault

Увы, предыдущая версия не запускается:

wb-mqtt-mbgate -c"/etc/wb-mqtt-mbgate.conf" -v
wb-mqtt-mbgate: symbol lookup error: wb-mqtt-mbgate: undefined symbol: _ZN7log4cpp15OstreamAppenderC1ERKSsPSo.

Попробую откатить полный образ FW на что-то более старое. Что порекомендуете в порядке убывания? Могу это сделать через USB (mxsldr), если это требуется.


#4

В общем - заработало.
Сохранил конфигурации на ПК и установил “чистую” (так не хотелось этим заниматься) прошивку через USB FW (mxsldr). Руками вернул файлы-конфигурации.
Перезагрузился - вуаля:

2019-09-06 17:20:40.954 DEBUG: Set value via Modbus: /devices/wb-gpio/controls/EXT2_K1 : 1
2019-09-06 17:20:40.978 DEBUG: Received MQTT message on /devices/wb-gpio/controls/EXT2_K1: 1
2019-09-06 17:20:42.048 DEBUG: Set value via Modbus: /devices/wb-gpio/controls/EXT2_K1 : 0
2019-09-06 17:20:42.070 DEBUG: Received MQTT message on /devices/wb-gpio/controls/EXT2_K1: 0
2019-09-06 17:20:54.932 DEBUG: Set value via Modbus: /devices/wb-gpio/controls/EXT2_K1 : 1

Спасибо, тему можно закрыть.


#5

В общем - не помогло :frowning:
Несколько дней поработала программа без проблем, опять начинает выпадать с указанным сообщением.

Предположение: какой-то из нескольких клиентов (HMI на телефоне) при подключении, если подключение нестабильное (может прислать “битые” данные) заваливает эту программу наглухо. Приходится руками делать service start.

Попытался воспроизвести - заслать “мусор” на порт 502/tcp сканированием (nmap) – программа падает.
Включаю вновь - подключился telnet’ом на тот же порт – программа падает.

Можно как-то повысить её стабильность? Это же одна из самых важных возможностей контроллера - возможность удалённого доступа через modbus-tcp.

Ps. могу предоставить доступ к контроллеру (открою порты в NAT).


назначил(а) ответственного EvgenyBoger #6

#7

KuZia495, а можете сказать, как вы воспроизводите проблему с помощью nmap?


#8

nmap -sS 1.2.3.4 -p 502

Но проще: telnet 1.2.3.4 502 и отправить чего-либо -> программа падает.


#9

Удалось повторить: подключаемся telnet’ом, несколько раз нажимаем Enter, соединение рвется, но wb-mbgate остается висеть в памяти. Подключаемся второй раз, опять нажимаем Enter несколько раз, соединение снова рвется, и mbgate падает.
Передаю разработчикам.