簡體   English   中英

FATAL SIGNAL 11(Sigsegv)在0x00000000(代碼= 1)?

[英]FATAL SIGNAL 11 (Sigsegv) at 0x00000000 (code=1)?

為什么會出現這個問題?

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);
    }

這是錯誤

您看到的錯誤消息是由在本機代碼中取消引用空指針引起的。 從你展示的內容來看,很難猜出可能是什么原因。

在你的位置,我會仔細檢查你沒有傳遞對系統或庫方法的空引用。

正如Nicola所提到的,這很可能是由在本機代碼中取消引用空指針引起的。 我有一個類似的問題,並通過調試堆棧跟蹤解決它。

如果關閉日志cat中的過濾,您將看到整個堆棧跟蹤。 這將為您提供發生崩潰的詳細信息,我使用以下python腳本來查找確切原因; https://code.google.com/p/android-ndk-stacktrace-analyzer/wiki/Usage

在我的情況下,由於運行自定義android構建,發生了空指針。

祝好運

很可能是一個線程問題......我曾經在一個Fatal Signal 11中運行,當我在錯誤的線程上做事時......

可能是setVideoLayout() - 在你的onConfigurationChanged()實現中調用。

如果您可以發布更多代碼,那將會很有幫助......

您可以從上一次垃圾收集調用中看到垃圾收集器未能釋放任何內存並且您沒有可用內存。 你的緩沖區有多大? 他們需要多少額外的頭部空間?

一種可能的解決方案是通過設置android:largeHeap="true"來調查使用更大的堆大小,以允許應用程序清單中的android:largeHeap="true"大小,在開發人員站點上進行記錄。

我使用三星galaxy tab 2加載任何WiX網站得到同樣的問題:

致命信號11(SIGSEGV)位於0x00000000(代碼= 1)

並退出整個申請。

研究更多,我發現了一篇關於ROM BUG的帖子。 所以,我插上手機和F11(eclipse)來編譯相同的代碼。 而且......它正在發揮作用! 我的平板電腦仍然出現錯誤。

平板電腦:三星Galaxy Tabg 2 GT-P5100 ANDROID 4.0.3 KERNEL 3.0.8

電話:三星Galaxy Young DUOS(舊但固件更新)GT-S6102B ANDROID 4.4.2 KERNEL 2.6.35.7

在我的手機中工作,但在我加載任何使用WiX工具制作的網站時在平板電腦上崩潰。

這里有好消息:谷歌+鏈接

使用兩個TextureViews(即按下主頁按鈕)完成活動時,我遇到了類似的問題:

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。 這個東西在被破壞的偵聽器中停止,它也獲得了synchronized關鍵字:

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

這保證了表面只能在當前沒有繪制時被銷毀。

現在離開活動不再有崩潰!

在我看來,沒有人使用TextureViews但仍然使用SurfaceViews。 不幸的是,后者在某些設備上繪制半透明圖形時會出現一些問題,這就是我切換到TextureView的原因。

希望這可以幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM