Segmentation violation ohne Zugriff auf Werte....



  • Hi!
    Nachdem das Bus-error Problem geloest ist habe ich leider ein neues Problem:

    Ich habe in meinem Programm mehrere Funktionen, die ich nacheinander abklappere..
    in der main:

    ...
    local8(frame,hoehe); 
    printf ("local8 komplett durch\n"); 
    local3(frame,hoehe); 
    printf ("local3 komplett durch\n"); 
    ...
    

    Die Ausgaben sind da, weil es halt Probs gab...

    Ich habe jetzt das Probelm, dass er zwar meine local8() ausfuehrt, dann aber bei der local3() stirbt..:
    habe dann in meiner local3() auch noch ausgaben eingebaut, die letzte da wo die KOMPLETTE Funktion durch ist:

    printf ("local3 median Bottom right: %f \n", temp);		
    
    }              // hier wird die Funktion komplett geschlossen...
    

    Meine Ausgabe beim starten des Programms sieht folgendermassen aus:

    local8 komplett durch
    local3 median Bottom right: 11.000000 
    segmentation violation
    

    .. Dass heisst er geht in die funktion local3() rein, rechnet alles bis zum Ende, gbt dann meine printf aus und kommt in die main zurueck(?).
    Dann kann er aber nicht mehr die naechste printf ausgeben...
    oder er fliegt noch in der funktion raus, und kmmt nicht in die main zurueck..

    Jemand ne ahnung wie ich das catchen kann?????



  • mach noch ein fflush vielleicht steht nochwas im buffer das er nicht ausgibt



  • mach danach noch ein fflush vielleicht steht noch was im puffer



  • Das muss ich morgen früh direkt mal testen..
    aber noch was interessantes um es etwas schwieriger zu machen:

    Ich habe das ganze auf einem Alpha-Rechner kompiliert und es hat oben besagte Fehler gegeben.
    Auf einem Sun-System funktioniert es ohne Probleme....
    --> Ich muss mich echt verarscht fühlen... 😡

    PS: bei beiden Systemen ist ist die Versionsnummer des gcc 3.1 😕



  • manche systeme sind toleranter als andere was zugriffsfehler betrifft. Tatsache ist, dass in deinem code etwas falsch ist, sonst würde kein segmentation fault auftreten. Auf manchen systemen wird dies jedoch ohne zu meckern übergangen.

    Geschichte aus dem Nähkästchen: Ich habe mal etwa 250 positionen über einen Array gelesen, der selber nur zwei elemente hatte! Das war mit VC++ net. Ich hab mich dann gewundert, warum die Performance um 90% eingebrochen ist, bis ich herausfand, das es dieser Array war.



  • @Cholera

    Meine Vermutung ist, dass du irgendwann in deinem Programm an eine Stelle im Speicher schreibst, die eigentlich nicht überschrieben werden sollte. Zeig erstmal den Code deiner Funktion local3(), vielleicht ist bereits dort der Fehler zu finden.



  • hmm... koennte den code hier posten, aber alleine die local3 sind ca. 200 Zeilen Code..ohne allzuviel Dokumentation..
    werde es heute nochmal porbieren und wenn ich nciht mehr ausweiss werde ich den code mit erklaerungen posten...

    PS: Habe gerade alle benutzten arrays mit malloc vorher speicher zugewiesen und dann nachher weider freigegeben... es ist genau das gleiche..
    werde jetzt mal testen die arrays global zu definieren und gucken ob das prob verschwindet...



  • So... es laeut jetzt..
    habe die 9 arrays auf die ich darin zugreife gloabl definiert und nun hat er keine probs mehr damit..
    das Programm funtzt nun endlich komplett und ich freue mich nen Keks...:D 😃 😃 😃

    danke fuer die Hilfe soweit!!

    Cholera



  • Rufst du evtl. andere Funktionen in der local3() auf, die dir ein lokales Array zurückgeben? (Bei der vorherigen Programmierung)


Anmelden zum Antworten