2016-07-04 8 views
1

Ich habe einige Abstürze in meiner App auf dem Feld bekommen, ein einziger Absturz, den ich erhielt, ist sehr interessant in der Natur. Bei einem der Abstürze meldet der Dienst, den ich verwende, eine SIGSEGV SEGV_MAPERR in libwebviewchromium.so und die einzige Information, die zurückkommt, ist die Adresse 0x00000000fbadbeef. Es erscheint irgendwie ironisch, dass nicht nur die Adresse lesbar, sondern auch so konsistent ist.SIGSEGV SEGV_MAPERR 0x00000000fbadbeef in libwebviewchromium.so

Ich kann den Absturz lokal nicht erstellen, so dass ich keine vollständige Ablaufverfolgung habe, aber ich war neugierig, ob es ein Problem oder einen Grund für die 0xfbadbeef Adresse in libwebviewchromium gibt und ob es eine Lösung dafür gibt Möglichkeit, es zu vermeiden.

+0

Eine lesbare Adresse wie diese passiert nicht zufällig. Es bedeutet, dass sie absichtlich diesen Wert geschrieben haben. Es ist eine alte Schule Debug-Technik für Speicherfehler in C und anderen zeigerbasierten Sprachen. Wenn Sie das sehen, bedeutet das, dass Sie entweder die Grenzen eines Arrays überschritten haben, auf einen bereits freigegebenen Zeiger oder einen ähnlichen Fehler zugreifen. Was es ist, ist nicht ohne mehr Informationen debuggbar. Sie können zwar den Code von libwebviewchromium nach FBADBEEF durchsuchen, um zu sehen, warum er diesen bestimmten Wert zugewiesen hat (Sie verwenden unterschiedliche Werte für verschiedene Probleme, nach denen Sie suchen). –

Antwort

1

Von der - siehe den Kommentar direkt über der Makrodefinition -, das ist ihr Code für "bekannte, nicht behebbare Fehler wie out-of-memory".