Hallo,
ich bin derzeit dabei den vzlogger auf meinem System zum Laufen zu
bringen. Prinzipiell funktioniert dieser auch schon und liefert
sinnvolle Werte, läuft aber leider nach einigen Minuten auf einen
Segmentation Fault!
vzlogger von https://github.com/stv0g/vzlogger.git
Zur Fehlersuche habe ich vzlogger mit --enable-debug compiliert und
unter dbg laufen lassen. Ich habe die problematische Stelle zwar auch
finden können, aber für eine vernünftige/sinnvolle Änderung des
Source-Codes fehlt mir der Überblick über die Programmstruktur. Ich
hoffe einer der Spezialisten kann hier mal helfen und den Source-Code
sinnvoll korrigieren!
Hier die Details:
In der Funktion *meter_read_sml()* (Datei
./vzlogger/src/protocols/sml.c) wird die Funktion *sml_transport_read()*
aus ./libsml/sml/src/sml_transport.c aufgerufen. Diese liefert im
Fehlerfall als Return-Wert eine *0*!! Da dies nicht abgefangen wird,
wird anschließend die Funktion *sml_file_parse(**)* mit ungültigen
Parametern (bytes -16 = -16) aufgerufen und läuft dann auf einen
Segmentation Fault!
Zeile 159:
...
/* wait until a we receive a new datagram from the meter (blocking
read) */
bytes = *sml_transport_read*(handle->fd, buffer, SML_BUFFER_LEN);
/* parse SML file & stripping escape sequences */
file = *sml_file_parse*(buffer + 8, *bytes - 16*);
...
Grüße
Dieter