Stack corruption



  • Das nicht der Compiler dafür verantwortlich ist das mein Programm einen Fehler hat steht außer frage. Darum geht es ja auch nicht.
    Ihr habt mir nur etwas Hoffnung gemacht das ich den gcc dazu verwenden kann den Fehler zu finden oder wenigstens ein zu kreisen.

    Mudflap hat mir zwar geholfen einen anderen Fehler zu finden aber das eigentliche Problem ist mir noch unbekannt und ungelöst.

    Im Coredump ist der Callstack oft defekt oder irgend ein Pointer ist überschrieben. Oft ist ein Pointer der vorher z.B. auf das Next Element in einer Liste gezeigt hat auf einmal 0x65 und damit kann ich natürlich nicht mehr auf den Pointer zugreifen. Frage mich auch warum immer 0x65.

    Meine Vermutung ist das irgend jemand über seine grenzen Schreibt oder einfach irgendwo in den Stack schreibt. Vielleicht liege ich auch ganz falsch.

    Ich danke euch auf jeden Fall für die teilweise sehr interessanten und auch guten Tipps.



  • Ich wollte die Sachen noch mal zum Abschluss bringen.
    Der Bug ist durch mühselige Handarbeit doch noch gefunden worden.

    An einer Stelle wurde für den Zugriff auf ein Array ein falsches Define benutzt welches *weit* über die Grenzen irgendwo die 0x65 hingeschrieben hat.
    Gefunden haben wir es in dem wir geschaut hatten warum es immer 0x65 ist und wo die her kommt. Als wir die Zahl dann gegen 0x66 ausgetauscht hatten und dann im Speicher eine 0x66 stand, wussten wir das es was mit dem Define zu tun hat.
    Alle Stellen untersucht und dann das Array gefunden.

    Echt schwer zu findender Bug.

    Wollte es hier nur noch mal erwähnen.


Anmelden zum Antworten