web-dev-qa-db-ja.com

0x00000000(コード= 1)の致命的な信号11(Sigsegv)?

なぜこの問題が発生するのですか?

public static String path;
private VideoView mVideoView;


mVideoView = (VideoView) findViewById(R.id.surface_view);
mVideoView.setVideoPath(path);
mVideoView.setMediaController(new MediaController(this));
mVideoView.requestFocus();

//...

    private int mLayout = VideoView.VIDEO_LAYOUT_ZOOM;

    @Override
    public void onConfigurationChanged(Configuration newConfig) {
        if (mVideoView != null)
            mVideoView.setVideoLayout(mLayout, 0);
        super.onConfigurationChanged(newConfig);
    }

this is error

15
Ersin Gülbahar

表示されるエラーメッセージは、ネイティブコードでnullポインタを逆参照することによって発生します。あなたが示したものから、何が原因であるかを推測するのは難しいです。

あなたの代わりに、システムまたはライブラリメソッドへのnull参照を渡していないことを再確認します。

7
Nicola Musatti

Nicolaが述べたように、これはおそらくネイティブコードでnullポインタを逆参照することによって引き起こされます。同様の問題があり、スタックトレースをデバッグすることで解決しました。

Log catでフィルタリングをオフにすると、スタックトレース全体が表示されます。これにより、クラッシュが発生した場所の詳細情報が得られます。正確な原因を見つけるために、次のpythonスクリプトを使用しました; https://code.google.com/p/Android-ndk-stacktrace-analyzer/wiki/Usage

私の場合、カスタムAndroidビルドを実行しているため、nullポインターが発生していました。

幸運を

5
Lunar

おそらくスレッドの問題です...間違ったスレッドで何かをしているときに、私も_Fatal Signal 11_で実行したことがあります...

おそらくsetVideoLayout()-onConfigurationChanged()実装を呼び出します。

あなたがもう少しコードを投稿することができれば、あなたは役に立ちます...

4
Sambuca

前回のガベージコレクションの呼び出しから、ガベージコレクタがメモリの解放に失敗し、使用可能なメモリがないことがわかります。バッファの大きさはどれくらいですか?彼らはどのくらいの追加のヘッドルームが必要ですか?

考えられる解決策の1つは、Android:largeHeap="true"を設定して、アプリケーションマニフェストで大きなヒープサイズを許可することにより、大きなヒープサイズを使用して調査することです。これは、 開発者サイト に記載されています。

2
Harshit Rathi

サムスンギャラクシータブ2を使用してWiXWebサイトをロードすると、同じ問題が発生しました。

0x00000000(コード= 1)での致命的な信号11(SIGSEGV)

アプリケーション全体を終了します。

さらに調べてみると、ROM BUGについての投稿が見つかりました。そこで、電話とF11(Eclipse)を接続して、同じコードをコンパイルします。そして...動作しています!私はそれでもタブレットでエラーが発生します。

タブレット:Samsung Galaxy Tabg 2 GT-P5100 Android 4.0.3 KERNEL 3.0.8

電話:Samsung Galaxy Young DUOS(古いがファームウェアが更新されている)GT-S6102B Android 4.4.2 KERNEL 2.6.35.7

携帯電話で動作しますが、WiXツールで作成されたWebサイトをロードすると、タブレットでクラッシュします。

良い情報 ここ:google +リンク

0
Léo Rocha

2つのTextureViewでアクティビティを終了したとき(つまり、ホームボタンを押すとき)にも同様の問題が発生しました。

Fatal signal 11 (SIGSEGV), code 1, fault addr 0xa4680000 in tid 29013 (pool-4-thread-1)

Logcatは、segvがdrawXXX関数内に表示されたことを示しました。だから私は表面が破壊されたときに描画しないようにしました:

private synchronized void doDraw(Canvas canvas) {
...
}

doDraw()は、バックグラウンドスレッドによって定期的に呼び出されます。正確には、ScheduledExecutorServiceを使用します。このことは、同期されたキーワードも取得した破棄されたリスナーで停止されます。

public synchronized boolean onSurfaceTextureDestroyed(SurfaceTexture surfaceTexture) {
    executorService.shutdownNow();
    return true;
}

これにより、現在何も描画されていない場合にのみサーフェスを破棄できることが保証されます。

アクティビティを離れるときにクラッシュすることはもうありません!

TextureViewsを使用しているのに、SurfaceViewsを使用している人はいないようです。残念ながら、後者は一部のデバイスで半透明のグラフィックを描画するときにいくつかの問題があります。そのため、TextureViewに切り替えました。

お役に立てれば。

0
Uwe Post