Bitte um Hilfe, Programm stürzt nach einiger Zeit ab...



  • Als erstes mal ein "Hallo an alle!"

    Ich bin neu hier im Forum weil ich den Fehler in meinem Programm nicht finden kann und hoffe das jemand von euch mir weiterhelfen kann...

    Ich habe ein Programm geschrieben, welches mir Log-Files per HTTP-POST auf einen Server kopieren soll und Updates vom Server downloaden soll. Das funktioniert soweit auch, doch nach ein paar Stunden laufzeit, kann es sein, dass sich plötzlich meine Hardware rebootet... vielleicht überschreibe ich im Speicher irgendwelche wichtigen Daten, ich weiss es nicht..

    Das Programm läuft als Daemon auf einem embedded Linux-System mit ARM - Prozessor...

    Vielleicht hat jemand von euch Zeit sich mal mein Proggi anzuschauen, und sieht viellecht einen Fehler... Ich muss dazu sagen, dass ich ziemlich neu bin auf dem Gebiet von ANSI-C, darum ist mein Programmier-Stiel nicht der allerbeste. Eventuell kann mir auch jemand Tipps geben, wie man das ein oder andere besser machen kann...

    Da ich hier leider kein File posten kann, könnt ihr es euch hier herunterladen:
    http://www.file-upload.net/download-1469827/post_.c.html

    Ich wäre euch seeeehhhhrrrr dankbar für eure Hilfe!

    LG + Vielen Dank!
    holly



  • Ui, das ist ne Menge Code. Hast mal versucht das Ding mit valgrind zu checken?



  • ja das stimmt. es sind ein paar zeilen 😃

    valgrind, nein das kenn ich nicht... werd ich mir aber gleich mal anschauen...



  • mit dem valgrind kann ich keine ARM-compilierte Files auswerten...
    gibts da was ähnliches für ARM??



  • Hallo,

    leider konnte ich dein Programm bei mir nicht kompilieren.
    Aber vielleicht beseitigst du zuerst mal die Warnings,
    die beim Compilieren entstehen:

    gcc -W -Wall -pedantic liefert:
    post.c:24:16: Fehler: bx.h: Datei oder Verzeichnis nicht gefunden
    post.c:73:17: Warnung: C++-Stil-Kommentare sind in ISO-C90 nicht erlaubt
    post.c:73:17: Warnung: (dies wird nur einmal pro Eingabedatei gemeldet)
    post.c: In Funktion »start_daemon«:
    post.c:120: Warnung: Variable »fpid« wird nicht verwendet
    post.c: In Funktion »getTime«:
    post.c:446: Warnung: Funktion liefert Adresse einer lokalen Variablen zurück
    post.c: In Funktion »readConfig«:
    post.c:796: Warnung: Übergabe des Arguments 1 von »strncpy« entfernt Kennzeichner von Zeiger-Ziel-Typ
    post.c:797: Warnung: Übergabe des Arguments 1 von »trim« entfernt Kennzeichner von Zeiger-Ziel-Typ
    post.c:797: Warnung: Übergabe des Arguments 1 von »strncpy« entfernt Kennzeichner von Zeiger-Ziel-Typ
    post.c:807: Warnung: Übergabe des Arguments 1 von »strncpy« entfernt Kennzeichner von Zeiger-Ziel-Typ
    post.c:808: Warnung: Übergabe des Arguments 1 von »trim« entfernt Kennzeichner von Zeiger-Ziel-Typ
    post.c:808: Warnung: Übergabe des Arguments 1 von »sprintf« entfernt Kennzeichner von Zeiger-Ziel-Typ
    post.c:820: Warnung: Übergabe des Arguments 1 von »strncpy« entfernt Kennzeichner von Zeiger-Ziel-Typ
    post.c:821: Warnung: Übergabe des Arguments 1 von »trim« entfernt Kennzeichner von Zeiger-Ziel-Typ
    post.c:821: Warnung: Übergabe des Arguments 1 von »sprintf« entfernt Kennzeichner von Zeiger-Ziel-Typ
    post.c:833: Warnung: Übergabe des Arguments 1 von »strncpy« entfernt Kennzeichner von Zeiger-Ziel-Typ
    post.c:834: Warnung: Übergabe des Arguments 1 von »trim« entfernt Kennzeichner von Zeiger-Ziel-Typ
    post.c:834: Warnung: Übergabe des Arguments 1 von »sprintf« entfernt Kennzeichner von Zeiger-Ziel-Typ
    post.c: In Funktion »GetMySerial«:
    post.c:1045: Warnung: Implizite Deklaration der Funktion »hw_serial«
    post.c: In Funktion »Upload«:
    post.c:1080: Warnung: Vergleich zwischen vorzeichenbehaftet und vorzeichenlos
    post.c:1087: Warnung: Zeigerziele in Zuweisung unterscheiden sich im Vorzeichenbesitz
    post.c:1092: Warnung: Zeigerziele bei Übergabe des Arguments 1 von »DoCRC32_2« unterscheiden sich im Vorzeichenbesitz
    post.c: In Funktion »PostToHost«:
    post.c:1221: Warnung: Übergabe des Arguments 1 von »OpenSocket« entfernt Kennzeichner von Zeiger-Ziel-Typ
    post.c:1221: Warnung: Übergabe des Arguments 2 von »OpenSocket« entfernt Kennzeichner von Zeiger-Ziel-Typ
    post.c:1270: Warnung: format »%ld« erwartet Typ »long int«, aber Argument 3 hat Typ »int«
    post.c:1278: Warnung: Implizite Deklaration der Funktion »bg_serial«
    post.c:1278: Warnung: format »%ld« erwartet Typ »long int«, aber Argument 3 hat Typ »int«
    post.c:1278: Warnung: format »%s« erwartet Typ »char *«, aber Argument 4 hat Typ »int«
    post.c: In Funktion »HttpGet«:
    post.c:1486: Warnung: Übergabe des Arguments 1 von »OpenSocket« entfernt Kennzeichner von Zeiger-Ziel-Typ
    post.c:1486: Warnung: Übergabe des Arguments 2 von »OpenSocket« entfernt Kennzeichner von Zeiger-Ziel-Typ
    post.c:1505: Warnung: format »%ld« erwartet Typ »long int«, aber Argument 5 hat Typ »int«
    post.c:1507: Warnung: format »%ld« erwartet Typ »long int«, aber Argument 3 hat Typ »int«
    post.c:1509: Warnung: format »%ld« erwartet Typ »long int«, aber Argument 3 hat Typ »int«
    post.c:1509: Warnung: format »%s« erwartet Typ »char *«, aber Argument 4 hat Typ »int«
    post.c:1530: Warnung: Vergleich zwischen vorzeichenbehaftet und vorzeichenlos
    post.c: In Funktion »GetUpdateFileFromHost«:
    post.c:1665: Warnung: Übergabe des Arguments 1 von »OpenSocket« entfernt Kennzeichner von Zeiger-Ziel-Typ
    post.c:1665: Warnung: Übergabe des Arguments 2 von »OpenSocket« entfernt Kennzeichner von Zeiger-Ziel-Typ
    post.c:1685: Warnung: format »%ld« erwartet Typ »long int«, aber Argument 3 hat Typ »int«
    post.c:1687: Warnung: format »%ld« erwartet Typ »long int«, aber Argument 3 hat Typ »int«
    post.c:1687: Warnung: format »%s« erwartet Typ »char *«, aber Argument 4 hat Typ »int«
    post.c:1709: Warnung: Vergleich zwischen vorzeichenbehaftet und vorzeichenlos
    post.c: In Funktion »GetContentFile«:
    post.c:1840: Warnung: Übergabe des Arguments 1 von »OpenSocket« entfernt Kennzeichner von Zeiger-Ziel-Typ
    post.c:1840: Warnung: Übergabe des Arguments 2 von »OpenSocket« entfernt Kennzeichner von Zeiger-Ziel-Typ
    post.c:1859: Warnung: format »%ld« erwartet Typ »long int«, aber Argument 3 hat Typ »int«
    post.c:1861: Warnung: format »%ld« erwartet Typ »long int«, aber Argument 3 hat Typ »int«
    post.c:1861: Warnung: format »%s« erwartet Typ »char *«, aber Argument 4 hat Typ »int«
    post.c:1901: Warnung: Vergleich zwischen vorzeichenbehaftet und vorzeichenlos
    post.c: In Funktion »DownloadUpdate«:
    post.c:2048: Warnung: format »%ld« erwartet Typ »long int«, aber Argument 4 hat Typ »int«
    post.c:2113: Warnung: format »%ld« erwartet Typ »long int«, aber Argument 3 hat Typ »int«
    post.c:2114: Warnung: Übergabe des Arguments 1 von »Upload« entfernt Kennzeichner von Zeiger-Ziel-Typ
    post.c:2171: Warnung: format »%ld« erwartet Typ »long int«, aber Argument 4 hat Typ »int«
    post.c: In Funktion »PrepareLogForUpdate«:
    post.c:2296: Warnung: format »%ld« erwartet Typ »long int«, aber Argument 4 hat Typ »int«
    post.c: In Funktion »main«:
    post.c:2413: Warnung: Zeigerziele bei Übergabe des Arguments 1 von »md5sum« unterscheiden sich im Vorzeichenbesitz
    post.c:2413: Warnung: Zeigerziele bei Übergabe des Arguments 3 von »md5sum« unterscheiden sich im Vorzeichenbesitz
    post.c:2427: Warnung: Übergabe des Arguments 1 von »HttpGet« entfernt Kennzeichner von Zeiger-Ziel-Typ
    post.c:2475: Warnung: Übergabe des Arguments 1 von »UploadLogs« entfernt Kennzeichner von Zeiger-Ziel-Typ
    post.c:2482: Warnung: Übergabe des Arguments 1 von »DownloadUpdate« entfernt Kennzeichner von Zeiger-Ziel-Typ
    post.c:2482: Warnung: Übergabe des Arguments 2 von »DownloadUpdate« entfernt Kennzeichner von Zeiger-Ziel-Typ
    post.c:2487: Warnung: Übergabe des Arguments 1 von »HttpGet« entfernt Kennzeichner von Zeiger-Ziel-Typ
    

    Ich glaube zwar nicht, dass das dein Problem behebt, es
    macht aber den Code sicherer.

    Gruß mcr



  • Ja, werde ich machen!

    Was ich bis jetzt rausgefunden habe ist, dass der Reboot meiner Kiste immer nur nach den Downloads auftritt. Die Uploads laufen ohne Probleme - jetzt schon über einen Tag im Dauertest...

    Aber beim Download, bzw. nach dem Download muss irgendwo ein Fehler sein...

    Ich bin schon drauf und dran eine "Belohnung auszuschreiben" für den der den Fehler findet - ich bin wahrscheinlich schon zu blind, weil ich Stunden vor dem Code sitze und nichts finde...



  • mcr schrieb:

    Ich glaube zwar nicht, dass das dein Problem behebt, es
    macht aber den Code sicherer.

    Das hier:

    post.c:446: Warnung: Funktion liefert Adresse einer lokalen Variablen zurück
    

    ist aber eigentlich schonmal ein prima Kandidat für so einen Zufallsabsturz.


Anmelden zum Antworten