Fehler in "libc"? Wie Fehlermeldung deuten?



  • Hallo! Ich habe bereits auf stackoverflow gepostet, möchte aber auch in meinem Lieblingsforum posten. Vor allem, weil das Problem sehr speziell erscheint und hier immer wirklich gute Leute mitlesen 👍 👍

    Ich mach's kurz:

    Ich möchte mit einer Herstellerbibliothek Bilder von einer Kamera unter Ubuntu 11.10 auslesen. Mit dem Beispielprojekt des Herstellers (besteht nur aus einer main.cpp) geht das einwandfrei. Ist wirklich nur diese main.cpp, mehr nicht.

    Füge ich diese main.cpp zu meinem größeren Projekt hinzu und kompiliere, dann stürzt das Programm kurz nach dem Start ab. Die Bilderauslesefunktion liefert nun einmal "Error: Timout" und dann kommt ein memory(?) dump. Hier könnt ihr es euch ansehen ("dump.txt"):

    http://www59.zippyshare.com/v/49743979/file.html
    oder
    http://www.yourfilelink.com/get.php?fid=810525&dv=1

    Interessant ist: Entferne ich Quelltext von mir, der gar nicht in der main.cpp verwendet wird, dann geht es. Ich habe das Gefühl, dass sich da zwei Bibliotheken irgendwie beissen. Leider ist mein Projekt so riesig, dass ich schon Ewigkeiten dransitze um die verursachenden Quellen/Libs zu finden.

    Wie gesagt: Es wird weiterhin nur der Herstellerbeispielcode ausgeführt, meine Sourcen aber mitkompiliert und dadurch weitere Bibliotheken herangezogen. Kann mir vlt. jemand helfen? Kann man an der Ausgabe sehen, wer den Fehler verursacht (und warum?)

    Wirklich, vielen vielen Dank an das Forum hier :schland:

    (PS: Hier der Post auf stackoverflow: http://stackoverflow.com/questions/11050110/bug-in-libc-how-to-read-dump-file)


  • Mod

    - Das Projekt wird wirklich komplett neu erstellt, du linkst hier nicht neue Objektdateien mit alten?
    - Kannst du nach und nach Teile entfernen, um festzustellen, wann es nicht funktioniert und ab wann doch?
    - globale Variablen, Makros oder sonstige Dinge, von den man nicht ohne Grund immer abrät?



  • Alles neu erstellt habe ich gemacht, dachte auch zuerst das wär's gewesen. Letztendlich hänge ich gerade an Punkt 2:

    SeppJ schrieb:

    - Kannst du nach und nach Teile entfernen, um festzustellen, wann es nicht funktioniert und ab wann doch?

    Ist nur super aufwendig, weil das Projekt ein wenig größer ist. Aber ich arbeite dran. Kann man aus der Crashmeldung denn was rauslesen? Sowas hab ich noch nie wirklich gemacht 😞


  • Mod

    Anonymous123 schrieb:

    Kann man aus der Crashmeldung denn was rauslesen? Sowas hab ich noch nie wirklich gemacht 😞

    Nun, entweder hast du tatsächlich etwas doppelt freigegeben (du verwendest doch brav RAII, damit so etwas gar nicht passieren kann, oder?) oder du hast dir den Heap zerschossen. Eben das, was die Fehlermeldung besagt :p . Aktivier mal die Debugoptionen der STL-Container (du benutzt doch brav STL-Container, oder?) und setz auch mal valgrind auf den Fall an.



  • Wie gesagt, dass ist keine Quelltextdatei von mir. Letztendlich steht jetzt fest (durch Aufstellung eines Minimalbeispiels, bei dem GAR KEINE Quellen von mir verwendet werden), dass sich da zwei Bibliotheken, die als shared objects geladen werden, beißen, sobald sie zusammen verwendet werden.



  • Immer valgrind bei soetwas, das lokalisiert Fehler der Art ganz genau.


Anmelden zum Antworten