Segauliste in malloc () und malloc_consolidate ()
Meine Anwendung segfaults manchmal und vor allem in malloc() und malloc_consolidate() wenn ich mir den backtrace in gdb.
Ich habe überprüft, dass der Rechner genug Speicher zur Verfügung, die es gar nicht austauscht.
Ich überprüfte ulimits für Daten-segement-und max-Speicher-Größe und beide sind auf 'unbegrenzt'.
Ich lief auch in der Anwendung unter valgrind und nicht finden, eine memory-Fehler.
Nun bin ich ratlos was könnte die Ursache diese segfaults. Irgendwelche Ideen ?
Update:
Da bin ich nicht etwas zu finden mit valgrind (oder ptrcheck), könnte es sein, dass eine andere Anwendung ist die Dresch-libc - Speicher-Struktur oder ist es eine separate Struktur für jeden Prozess ?
InformationsquelleAutor der Frage Gene Vincent | 2010-06-23
Du musst angemeldet sein, um einen Kommentar abzugeben.
Vom http://www.gnu.org/s/libc/manual/html_node/Heap-Consistency-Checking.html#Heap-Consistency-Checking:
InformationsquelleAutor der Antwort BillTorpey
Wahrscheinlich, du bist verriss der heap-d.h., Sie schreiben über die Grenzen ein Stück Speicher (Memory) zugewiesen, und dies ist ein überschreiben der Daten-Strukturen, die
malloc()
verwendet, um zu verwalten heap. Dies bewirkt, dassmalloc()
für den Zugriff auf eine ungültige Adresse, und Ihre Anwendung abstürzt.Läuft der Speicher würde nicht dazu führen
malloc()
zum Absturz-es würde einfach zurückNULL
. Das könnte dazu führen, Ihren code zu Abstürzen, wenn Sie die Prüfung nicht fürNULL
, aber der crash-site nicht inmalloc()
.Ist es etwas seltsam, dass Valgrind ist nicht reporting-Fehler -- aber es gibt einige Fehler, die den Standard "Memcheck" Werkzeug verpassen können. Versuchen Sie, Valgrid mit der "Ptrcheck" - tool statt.
InformationsquelleAutor der Antwort Martin B