<p>KSCrash attrape le crash, mais la pile de crash est vide</p>

Créé le 27 juil. 2017  ·  17Commentaires  ·  Source: kstenerud/KSCrash

Je reçois un rapport de plantage de notre utilisateur, mais j'ai trouvé qu'une partie de la pile de plantage est vide.
2017-07-27 3 00 07

Voici quelques-uns des rapports de plantage json bruts.
1.txt
2.txt
3.txt

Commentaire le plus utile

Je vais regarder ce problème la semaine prochaine

Tous les 17 commentaires

Je reçois le même problème.

Je rencontre le même problème. Quelqu'un le répare ?

Je rencontre le même problème, mais pourquoi ?

Comment reproduire le problème ?

KSCrash a défini le curseur imageAddress sur 0 dans la fonction kssymbolicator_symbolicate() lors de l'analyse de la table des symboles sans symboles de débogage (Xcode --> paramètres de construction --> style de bande --> symboles de débogage)
Bonne chance ...

Je rencontre le même problème. Quelqu'un le répare ?

Les trois rapports fournis par l'auteur du problème sont liés aux exceptions C++. Quelqu'un a-t-il reçu des plantages non-C++ sans backtrace ?

@ bamx23 # 205 montre pourquoi les plantages C++ ne peuvent pas obtenir la pile plantée. J'ai une question, jusqu'à présent, le problème a-t-il été résolu ? je peux toujours obtenir une pile vide lorsque des exceptions C++ dans des frameworks intégrés ?

Je vais regarder ce problème la semaine prochaine

@ bamx23 j'obtiens beaucoup de pile vide, "diagnosis": "Tentative de déréférencement du pointeur nul."
vide.txt

Si vous rencontrez la pile vide pour l'exception C++, vous pouvez trouver la raison de ce problème. https://github.com/kstenerud/KSCrash/issues/205

Désolé, il aurait été préférable de dire "le mois prochain".
J'ai vérifié le crash de KSCrash sur C++ à partir de mon exemple d'application, mais les threads étaient corrects. Quelqu'un pourrait-il fournir un exemple de code qui reproduit le problème?

@ chzhij5 frère, quelle version de ks utilises-tu ? 1.15.8 ?

Salut! Nous avons étudié le problème et les solutions possibles dans notre équipe. Il existe une:

Pendant le processus d'installation de KSCrashMonitor_CPPException, nous pouvons utiliser un "hack" qui est décrit et implémenté dans https://github.com/facebook/fishhook. Il permet d'accrocher n'importe quel appel de fonction binaire lié dynamiquement. Nous accrochons donc __cxa_throw pour tous les binaires chargés.

Si une bibliothèque a un symbole faible __cxa_throw (comme KSCrash l'a actuellement), nous l'appellerons de la même manière que nous le faisons maintenant. La commande serait comme [fishhooked one] -> [weak one] -> [libc++abi one] .

Le seul problème qui ne peut pas être résolu est que si un binaire contient un symbole fort __cxa_throw , nous ne pouvons pas l'accrocher. Mais je pense qu'il n'y a pas d'option pour faire face à une telle situation.

@kstenerud , qu'en pensez-vous ? Nous avons lu votre message sur stackoverflow et il semble que l'idée ci-dessus puisse le résoudre, au moins partiellement.

Nous pouvons continuer et créer une demande d'extraction où fishhook sera une dépendance de KSCrash (ou de la sous-spécification de KSCrash comme par exemple "KSCrash/Recording/ImprovedCPPExceptionsHandling").

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

Nous pouvons en fait appeler [libc++abi one] partir de [fishhooked one] au cas où si [weak one] ne l'appelle pas, cela répond aux exigences de @kstenerud .

Cela sonne bien, nous ferons un essai la semaine prochaine dans notre application interne.

Ici le PR : #375

Cette page vous a été utile?
0 / 5 - 0 notes