<p>KSCrashはクラッシュをキャッチしますが、クラッシュスタックは空です</p>

作成日 2017年07月27日  ·  17コメント  ·  ソース: kstenerud/KSCrash

ユーザーからクラッシュレポートを受け取りましたが、クラッシュスタックの一部が空であることがわかりました。
2017-07-27 3 00 07

これらは、生のjsonクラッシュレポートの一部です。
1.txt
2.txt
3.txt

最も参考になるコメント

来週この問題を見ていきます

全てのコメント17件

同じ問題が発生します。

私は同じ問題に直面します。 誰かがそれを修正しますか?

私は同じ問題に直面しますが、なぜですか?

問題を再現する方法は?

KSCrashは、シンボルをデバッグせずにシンボルテーブルを解析するときに、関数kssymbolicator_symbolicate()でカーソルimageAddressを0に設定しました(Xcode->ビルド設定->ストリップスタイル->シンボルのデバッグ)
幸運を ...

私は同じ問題に直面します。 誰かがそれを修正しますか?

著者が提供する3つのレポートはすべて、C++の例外に関連しています。 バックトレースなしで非C++クラッシュを受け取った人はいますか?

@ bamx23 #205は、C++クラッシュがクラッシュしたスタックを取得できない理由を示しています。 質問があります。これまで、問題は解決しましたか? 組み込みフレームワークでC++例外が発生した場合でも、空のスタックを取得できますか?

来週この問題を見ていきます

@ bamx23クラッシュしたスタックが空になり、「diagnosis」:「nullポインタを逆参照しようとしました。」
empty.txt

C ++例外の空のスタックを満たす場合は、この問題の理由を見つけることができます。 https://github.com/kstenerud/KSCrash/issues/205

申し訳ありませんが、「来月」と言った方がいいでしょう。
サンプルアプリからC++クラッシュでKSCrashを確認しましたが、スレッドは問題ありませんでした。 誰かが問題を再現するサンプルコードを提供できますか?

@ chzhij5兄弟、どのバージョンのksを使用していますか? 1.15.8?

やあ! チームで問題と考えられる解決策を調査しました。 ここに一つ:

KSCrashMonitor_CPPExceptionのインストールプロセス中に、 https://github.com/facebook/fishhookで説明および実装されている「ハック」を使用できます。 これにより、動的にリンクされたバイナリの関数の呼び出しをフックできます。 したがって、ロードされたすべてのバイナリに対して__cxa_throwをフックします。

ライブラリに弱い記号__cxa_throwがある場合(KSCrashが現在持っているように)、現在と同じように呼び出します。 順序は[fishhooked one] -> [weak one] -> [libc++abi one]のようになります。

解決できない唯一の問題は、一部のバイナリに強力な__cxa_throwシンボルが含まれている場合、それをフックできないことです。 しかし、そのような状況に対処する選択肢はないと思います。

@kstenerud 、どう思いますか? 私たちはstackoverflowであなたの投稿を読みました、そして上記のアイデアは少なくとも部分的にそれを解決するかもしれないようです。

先に進んで、フィッシュフックがKSCrash(または「KSCrash / Recording /ImprovedCPPExceptionsHandling」のようなKSCrashサブスペック)の依存関係になるプルリクエストを作成できます。

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

[weak one]が呼び出さない場合は、 [fishhooked one] [libc++abi one]を呼び出すことができます。これは、 @kstenerudの要件を満たしています。

良さそうですね。来週は社内アプリで試してみます。

ここにPR:#375

このページは役に立ちましたか?
0 / 5 - 0 評価