<p>KSCrash fängt den Absturz ab, aber der Absturzstapel ist leer</p>

Erstellt am 27. Juli 2017  ·  17Kommentare  ·  Quelle: kstenerud/KSCrash

Ich bekomme einen Absturzbericht von unserem Benutzer, aber ich habe festgestellt, dass ein Teil des Absturzstapels leer ist.
2017-07-27 3 00 07

Dies sind einige der rohen json-Absturzberichte.
1.txt
2.txt
3.txt

Hilfreichster Kommentar

Ich werde mich nächste Woche mit diesem Problem befassen

Alle 17 Kommentare

Ich bekomme das gleiche Problem.

Ich treffe auf das gleiche Problem. Repariert es jemand?

Ich habe das gleiche Problem, aber warum?

So reproduzieren Sie das Problem?

KSCrash hat die Cursor-Bildadresse in der Funktion kssymbolicator_symbolicate() auf 0 gesetzt, wenn die Symboltabelle ohne Debugging-Symbole analysiert wurde (Xcode --> Build-Einstellungen --> Strip-Stil -- >Debugging-Symbole)
Viel Glück ...

Ich treffe auf das gleiche Problem. Repariert es jemand?

Alle drei vom Autor bereitgestellten Berichte beziehen sich auf C++-Ausnahmen. Hat jemand Nicht-C++-Abstürze ohne Backtrace erhalten?

@bamx23 #205 zeigt, warum C++-Abstürze den abgestürzten Stapel nicht abrufen können. Ich habe eine Frage: Wurde das Problem bis jetzt gelöst? kann ich immer noch einen leeren Stack erhalten, wenn C++-Ausnahmen in eingebetteten Frameworks auftreten?

Ich werde mich nächste Woche mit diesem Problem befassen

@bamx23 Ich bekomme viele leere, abgestürzte Stacks, "diagnosis": "Attempted to dereference null pointer."
leere.txt

Wenn der leere Stack für die C++-Ausnahme auftritt, können Sie den Grund für dieses Problem finden. https://github.com/kstenerud/KSCrash/issues/205

Entschuldigung, es wäre besser gewesen, "nächsten Monat" zu sagen.
Ich habe KSCrash auf C++-Absturz aus meiner Beispiel-App überprüft, aber die Threads waren in Ordnung. Könnte jemand einen Beispielcode bereitstellen, der das Problem reproduziert?

@chzhij5 Bruder, welche Version von ks verwendest du? 1.15.8?

Hallo! Wir haben das Problem und mögliche Lösungen in unserem Team untersucht. Da ist einer:

Während des Installationsvorgangs von KSCrashMonitor_CPPException können wir einen „Hack“ verwenden, der in https://github.com/facebook/fishhook beschrieben und implementiert ist. Es ermöglicht das Hooken eines beliebigen Aufrufs einer dynamisch verknüpften Binärfunktion. Also haken wir __cxa_throw für alle geladenen Binärdateien ein.

Wenn eine Bibliothek ein schwaches Symbol __cxa_throw hat (wie es derzeit KSCrash hat), nennen wir es genauso wie jetzt. Die Reihenfolge wäre wie [fishhooked one] -> [weak one] -> [libc++abi one] .

Das einzige Problem, das nicht gelöst werden kann, ist, wenn eine Binärdatei ein starkes __cxa_throw -Symbol enthält, können wir sie nicht einhaken. Aber ich denke, dass es keine Möglichkeit gibt, mit einer solchen Situation umzugehen.

@kstenerud , was denkst du? Wir haben Ihren Beitrag bei stackoverflow gelesen, und es scheint, dass die obige Idee es zumindest teilweise lösen könnte.

Wir können fortfahren und eine Pull-Anfrage erstellen, bei der Fishhook eine Abhängigkeit von KSCrash (oder einer KSCrash-Unterspezifikation wie z. B. 'KSCrash/Recording/ImprovedCPPExceptionsHandling') ist.

[fishhooked one] -> [weak one] -> [libc++abi one] .

Wir können tatsächlich [libc++abi one] von [fishhooked one] anrufen, falls [weak one] es nicht anruft, das erfüllt die Anforderungen von @kstenerud .

Das hört sich gut an, das werden wir nächste Woche in unserer hauseigenen App ausprobieren.

Hier die PR: #375

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen

Verwandte Themen

pdrtrifork picture pdrtrifork  ·  12Kommentare

kstenerud picture kstenerud  ·  4Kommentare

happy201993 picture happy201993  ·  10Kommentare

1t2t3t4t picture 1t2t3t4t  ·  3Kommentare

ferrous777 picture ferrous777  ·  30Kommentare