ungültige fastbin Eintrag (kostenlos)

Ich versuche, die Ursache zu finden für:

*** glibc detected *** ...: invalid fastbin entry (free): 0x00007fc384ced120 ***

Dem Programm weggeworfen Kern, so konnte ich nachvollziehen, diese wieder zu einem Destruktor eine sehr einfache Klasse, die ähnlich dieser:

class foo : public foo_base
{
    ...
    ...
    std::vector<boost::weak_ptr<bar> > vec;
}

Der Destruktor virtuell ist, in foo_base und nicht umgesetzt foo

Den Vektor vec wird nur zugewiesen, um die im Konstruktor und nicht geändert danach.

Die Adresse von der glibc Fehler ist identisch zu vec._M_impl._M_start

  • Wo könnte ich anfangen nach der Ursache?

  • Wissen, was ein fastbin ist, wie kann es ungültig sein?

  • Könnte dies zu einem double-free-situation, oder würden glibc jeden Fall erhöhen eine double free in diesem Fall?

  • Sie sind entweder Doppel-befreien Sie Ihre foo oder Sie speichern außerhalb von einige reservierten Speicher (also das schreiben in den Speicher, die verwendet wird, um "verwalten" die Zuweisungen).
InformationsquelleAutor idefixs | 2013-07-02
Schreibe einen Kommentar