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



Antwort per Email an