3

これは、私のアプリケーションでよく見られるエラーです。このエラーの理由を知っている人はいますか?

エラーには次の 2 行があります。

     consumer ~ Error -1 pinning ashmem fd 69
' ~ Failed to consume input event.  status=-2147483648
4

1 に答える 1

0

最近、私が取り組んでいるアプリで同様のバグを修正しました。問題は、ファイル記述子を 2 回閉じていたバグのあるネイティブ コードにありました。これは、最初に Close メソッドで閉じてから、ファイル記述子が既に閉じられているかどうかを確認せずに、デストラクタで再度 Close を呼び出していたことを意味します。

ネイティブopen関数は、ファイル記述子として、最初の空き最小番号を返します。したがって、上記のバグは、1 回のクローズと 2 回目の呼び出しの間で再利用されるクローズ記述子でした。ほとんどの場合、この記述子はパーセルで使用されていました。

このバグの解決策を探しているときに、このエラーが 2 つのケースで発生することがわかりました。

  1. 開いているファイル記述子が多すぎる場合。これは、リークがあることを示唆している可能性があります
  2. コードがファイル記述子を 2 回閉じている場合

これをデバッグするのは簡単ではなく、再現するのも難しく、ネイティブ コードを使用しないと、問題を理解するのがさらに難しくなります。

ネイティブ コードがない場合、閉じられたウィンドウと通信しようとすると、このバグが発生する可能性があります。ダイアログを閉じていないが、それを所有するアクティビティを閉じたように。そのようなケースは経験したことがありませんが、ヒントとして追加します。

于 2014-05-15T11:09:37.727 に答える