2011-03-20 6 views
15

PluginState.ONに設定されたPluginStateでloadDataWithBaseURLを使用してFlashプラグインが埋め込まれたWebView(ほとんどyoutube)にHTMLをロードしようとすると、SIGSEGV信号が表示されます。私は簡単なテストケースでエラーを再現することができます。プロセスは、プロセスに割り当てられているメモリセグメント外部のメモリを参照しようとしたときに発生SIGSEGV WebViewにHTML + Flashをロードする

package ians.android2; 

import android.app.Activity; 
import android.os.Bundle; 
import android.webkit.WebView; 
import android.webkit.WebSettings; 

public class TestAndroid extends Activity { 
/** Called when the activity is first created. */ 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 

    WebView wv = (WebView)findViewById(R.id.webview); 
    wv.getSettings().setPluginState(WebSettings.PluginState.ON); 

    String html = ""; 
    html += "<object width=\"620\" height=\"376\">"; 
    html += "<param name=\"movie\" value=\"http://www.youtube.com/v/C4KdcRHoXOA?fs=1&amp;hl=en_US&amp;rel=0\"></param>"; 
    html += "<param name=\"allowFullScreen\" value=\"true\"></param>"; 
    html += "<param name=\"allowscriptaccess\" value=\"always\"></param>"; 
    html += "<embed src=\"http://www.youtube.com/v/C4KdcRHoXOA?fs=1&amp;hl=en_US&amp;rel=0\" type=\"application/x-shockwave-flash\" allowscriptaccess=\"always\" allowfullscreen=\"true\" width=\"620\" height=\"376\"></embed>"; 
    html += "</object>"; 

    wv.loadDataWithBaseURL("notreal/", html, "text/html", "utf-8", null); 
    } 
} 
+0

これは、2.2.1に基づいて最新のファームウェアを使用しているHTC Desire HD上にあります。ストックROM、カスタムのものはありません。 – Ian

答えて

5

SIGSEGV信号またはセグメンテーション障害:次のコードを参照してください。これにより、プロセスが電話や実際にAndroid自体で実行されている他のプロセスを破損するのを防ぎます。

自分で問題を再現することを試みることなく、あなたのコードがHTC上で実行されているDalvik JVMに欠陥を公開している可能性があることをお勧めします。

セグメンテーションフォルトに関するクールなものの1つは、フォルトが発生したときにメモリ内のプロセスの状態を説明するコアファイルを取得できることです。

コアファイルはGNUデバッガgdbによって読み込み可能であり、セグメントスタックフォールトが発生したポイントまでコールスタックトレースを提供します。そのため、対応するコアファイルが見つかると、Android開発者にバグリクエストとともに提出すると便利です。いくつかの調査では、HTCのプロセスクラッシュからコアファイルを取得できるかどうかが明らかになります。

あなたのコードを稼働させる観点からは、あまり複雑でないHTMLを試して、HTMLの特定の変更が欠陥を公開するかどうかを確認する必要があるhtmlを段階的に追加することをおすすめします。これはAndroid開発者があなたが提出したバグ報告書の中で有用です。

+0

セグメンテーションフォルトが発生すると、アプリケーションが強制的にシャットダウンして再起動します(例外をスローせずに..)。 –

+1

セグメンテーションフォールトは、アプリケーションをシャットダウンさせるだけです。 –

+0

ありがとうございます。それは私が知りたかったものです –

関連する問題