2

私は直面する方法がわからないという奇妙な問題を抱えています。

私のアプリケーションは、WebView を使用して HTML アプリをロードします。これは長く複雑なアプリであり、JavaScriptInterfaces も含まれます。

最近、アクティビティ全体を強制終了するネイティブ Webcore モジュールでコア ダンプを取得しています。

時々発生しますが、頻繁に、5 回に 1 回としましょう。

WebView がアプリをロードしている間は常に発生しますが、場所は異なります。エクスポートされた Java 関数の呼び出しが関係しているようですが、特定の関数ではありません。私は何十億回もリファクタリングを行ってきましたが、解決したように見えることもありますが、それは運の問題です。突然、再び失敗します。

WebView がアプリの読み込みと初期化を完了すると、クラッシュすることはありません。load/init/start の実行中にのみ発生します。

ほぼ常に現れる唯一のパターンは、常に同じ場所でクラッシュするように見えることです:

    I/DEBUG   (30186):          #00  pc 003a37a4  /system/lib/libwebcore.so (_ZNK5Layer8getChildEi)
    I/DEBUG   (30186):          #01  pc 00285bae  /system/lib/libwebcore.so
    I/DEBUG   (30186):          #02  pc 0001edb0  /system/lib/libdvm.so (dvmPlatformInvoke)
    I/DEBUG   (30186):          #03  pc 000594ba  /system/lib/libdvm.so (_Z16dvmCallJNIMethodPKjP6JValuePK6MethodP6Thread)

もちろん、これが不完全な質問であることはわかっています。リクエストに応じて何でも投稿しますが、多かれ少なかれ何が起こっているのかを推測する方法について誰かが考えている場合は、答えたいと思います。このスタックトレースで?? Android Native Layer に関しては、私は完全に迷っています。

クラッシュとの関係を少しでも知っていれば、Java や JavaScript をリファクタリングできますが、私は完全に盲目であり、すべてを移動した限り、何も改善されないようです....

前もって感謝します !!!

PD- Samsung Galaxy Tab 10.1 で ICS v.4.04 を使用しています。

    /libc    (  575): Fatal signal 11 (SIGSEGV) at 0x00000000 (code=1)
    I/DEBUG   (30186): *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
    I/DEBUG   (30186): Build fingerprint: 'samsung/GT-P7500/GT-P7500:4.0.4/IMM76D/XXLQ8:user/release-keys'
    I/DEBUG   (30186): pid: 575, tid: 591  >>> com.regaliz.libneo <<<
    I/DEBUG   (30186): signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr 00000000
    I/DEBUG   (30186):  r0 0117f608  r1 00000000  r2 00feb880  r3 00000000
    I/DEBUG   (30186):  r4 00feb880  r5 00ffb568  r6 00000007  r7 50fbfe0c
    I/DEBUG   (30186):  r8 5bf04c10  r9 50fbfe04  10 00000000  fp 5bf04c24
    I/DEBUG   (30186):  ip 5a229ba5  sp 5bf04c08  lr 5a229bb3  pc 5a3477a4  cpsr 800f3430
    I/DEBUG   (30186):  d0  0000000042c80000  d1  0000000043ae0000
    I/DEBUG   (30186):  d2  3f00000043ae0000  d3  43ae000041c80000
    I/DEBUG   (30186):  d4  00000000432e0000  d5  411efaf800000000
    I/DEBUG   (30186):  d6  3fe03e1c9b413986  d7  41d4634c06a07c39
    I/DEBUG   (30186):  d8  0000000000000000  d9  0000000000000000
    I/DEBUG   (30186):  d10 0000000000000000  d11 0000000000000000
    I/DEBUG   (30186):  d12 0000000000000000  d13 0000000000000000
    I/DEBUG   (30186):  d14 0000000000000000  d15 0000000000000000
    I/DEBUG   (30186):  scr 20000011
    I/DEBUG   (30186):
    I/DEBUG   (30186):          #00  pc 003a37a4  /system/lib/libwebcore.so (_ZNK5Layer8getChildEi)
    I/DEBUG   (30186):          #01  pc 00285bae  /system/lib/libwebcore.so
    I/DEBUG   (30186):          #02  pc 0001edb0  /system/lib/libdvm.so (dvmPlatformInvoke)
    I/DEBUG   (30186):          #03  pc 000594ba  /system/lib/libdvm.so (_Z16dvmCallJNIMethodPKjP6JValuePK6MethodP6Thread)
    I/DEBUG   (30186):          #04  pc 00030c0c  /system/lib/libdvm.so
    I/DEBUG   (30186):          #05  pc 000343e4  /system/lib/libdvm.so (_Z12dvmInterpretP6ThreadPK6MethodP6JValue)
    I/DEBUG   (30186):          #06  pc 0006ce76  /system/lib/libdvm.so (_Z14dvmCallMethodVP6ThreadPK6MethodP6ObjectbP6JValueSt9__va_list)
    I/DEBUG   (30186):          #07  pc 0006ce98  /system/lib/libdvm.so (_Z13dvmCallMethodP6ThreadPK6MethodP6ObjectP6JValuez)
    I/DEBUG   (30186):          #08  pc 0005ffe0  /system/lib/libdvm.so
    I/DEBUG   (30186):          #09  pc 00013048  /system/lib/libc.so (__thread_entry)
    I/DEBUG   (30186):          #10  pc 00012b74  /system/lib/libc.so (pthread_create)
    I/DEBUG   (30186):
    I/DEBUG   (30186): code around pc:
    I/DEBUG   (30186): 5a347784 47a868e1 f57f69a0 4620e95c bf00bd7c  .h.G.i..\. F|...
    I/DEBUG   (30186): 5a347794 0036eb46 3088f8d0 bf3a4299 3080f8d0  F.6....0.B:....0
    I/DEBUG   (30186): 5a3477a4 0021f853 47702000 e005b911 d0034288  S.!.. pG.....B..
    I/DEBUG   (30186): 5a3477b4 280068c0 e000d1fa 47702001 41f0e92d  .h.(..... pG-..A
    I/DEBUG   (30186): 5a3477c4 f8c54605 460e10a0 f5d62400 4607fa1b  .F.....F.$.....F
    I/DEBUG   (30186):
    I/DEBUG   (30186): code around lr:
    I/DEBUG   (30186): 5a229b90 b9084603 e0042001 f8d34620 f6a611a4  .F... .. F......
    I/DEBUG   (30186): 5a229ba0 bd10fd01 4614b510 2100b14b f11d4618  .......FK..!.F..
    I/DEBUG   (30186): 5a229bb0 4601fdf3 4620b118 ffe2f7ff 2001e000  ...F.. F.......
    I/DEBUG   (30186): 5a229bc0 bf00bd10 4ff0e92d 6d464607 460cb0a7  ....-..O.FFm...F
    I/DEBUG   (30186): 5a229bd0 0b90f10d 0a88f10d 52f4f8d6 f6fa4628  ...........R(F..
    I/DEBUG   (30186):
    I/DEBUG   (30186): stack:
    I/DEBUG   (30186):     5bf04bc8  5bf04c24
    I/DEBUG   (30186):     5bf04bcc  400828c0  /system/lib/libc.so
    I/DEBUG   (30186):     5bf04bd0  56d045f8  /dev/ashmem/dalvik-LinearAlloc (deleted)
    I/DEBUG   (30186):     5bf04bd4  00ffb568  [heap]
    I/DEBUG   (30186):     5bf04bd8  00000003
    I/DEBUG   (30186):     5bf04bdc  50fbff00
    I/DEBUG   (30186):     5bf04be0  5bf04c10
    I/DEBUG   (30186):     5bf04be4  400827f0  /system/lib/libc.so
    I/DEBUG   (30186):     5bf04be8  5bf04bf0
    I/DEBUG   (30186):     5bf04bec  40129393  /system/lib/libutils.so
    I/DEBUG   (30186):     5bf04bf0  000607dd
    I/DEBUG   (30186):     5bf04bf4  00000000
    I/DEBUG   (30186):     5bf04bf8  40eb4a68  /dev/ashmem/dalvik-heap (deleted)
    I/DEBUG   (30186):     5bf04bfc  40eb4a68  /dev/ashmem/dalvik-heap (deleted)
    I/DEBUG   (30186):     5bf04c00  df0027ad
    I/DEBUG   (30186):     5bf04c04  00000000
    I/DEBUG   (30186): #01 5bf04c08  56e6d840  /dev/ashmem/dalvik-LinearAlloc (deleted)
    I/DEBUG   (30186):     5bf04c0c  40822db4  /system/lib/libdvm.so
    D/PlasmaWebView[1](  575): Invalidate triggered
    I/BootReceiver( 7248): Copying /data/tombstones/tombstone_05 to DropBox (SYSTEM_TOMBSTONE)
    I/DEBUG   (30186): debuggerd committing suicide to free the zombie!
    I/WindowManager( 7248): WIN DEATH: Window{415980d8 com.regaliz.libneo/com.regaliz.libneo.NativeStory paused=false}
    I/ActivityManager( 7248): Process com.regaliz.libneo (pid 575) has died.
    W/WindowManager( 7248): Force-removing child win Window{416c4f88 SurfaceView paused=false} from container Window{415980d8 com.regaliz.libneo/com.regaliz.libneo.NativeStory paused=false}
    I/flint   (28979): jni: deleting text normalizer ...
    I/flint   (28979): jni: deleting synthesizer ...
    I/flint   (28979): jni: deleting project file ...
    I/flint   (28979): jni: deleting project resource holder ...
    I/DEBUG   (  631): debuggerd: Oct  7 2012 16:35:04
    D/Zygote  ( 7206): Process 575 terminated by signal (11)
    W/ActivityManager( 7248): Force removing ActivityRecord{41303a20 com.regaliz.libneo/.NativeStory}: app died, no saved state

編集: webkit の重大なバグに遭遇したようです: https://bugs.webkit.org/show_bug.cgi?id=93447。残念ながら、GoogleがWebkitから新しいレンダリングエンジンBlinkに移行しているため、WONTFIXとしてマークされています...私は怖いです:(

編集 2: これはすでに Android Bug Tool で 9 つ星で報告されていますが、なぜそれが起こるのか誰も知らないようです :( https://code.google.com/p/android/issues/detail?id=24232

編集 3: シャンパンを開くには早すぎますが、ViewSwitcher 内でアクティブなビューが彼 (彼女/それ) 自身ではない場合、WebView は重いページの読み込みで初期化されることを好まないようです ...

4

2 に答える 2

1

遅かれ早かれエラーが発生することもあるため、言うのは少し面倒ですが、5日間の集中的なデバッグの後、災害のレシピを見つけたと確信しています. 私は結論付けることができます:

ViewFlipper 内に WebView を配置し、その中に複雑なページをロードし、別の ViewFlipper ページ (私の場合は単純なスロバー) を表示すると、コア ダンプをトリガーするアクティビティが強制終了されます。

私はまだ WebView を ViewFlipper に保持していますが、Init (ページの読み込み、ページの解析、body.onload) 中にその viewflipper ページが表示されている限り、問題はありません。ドキドキものをリトライするとすぐに…バン!

ページが開始され、webview が安定したら、ViewFlipper ビューを正常に変更できます。

于 2013-05-14T01:14:59.077 に答える
0

デバッグのいくつかのモード

あなたはまだ非同期ですか?

別のスレッドでコンテンツを実行していますか?

これを別のデバイス/エミュレーターで再現できますか?

これは、サポートされていない/変更された libwebcore またはその他のファイル バージョンが原因である可能性があります。

デスクトップ ブラウザで JS を試してみませんか?

JavaScript が標準ブラウザで正常に動作する場合、ある程度の信頼性があります。これをさらにレベルアップして、デスクトップ ツールを使用して JS コードを調べて分析し、そこに問題があるかどうかを確認できます。

于 2013-05-10T20:41:42.683 に答える