2013-03-06 76 views
4

我有一個片段的web視圖。它幾個月來一直工作正常。我正在玩嵌入的HTML(一個生成的字符串),我認爲它有一個不好的字體引用。Android webview segfaults顯示

結果是,現在在一個設備上,此webview 始終顯示爲 segfaults - 但僅在我測試的其中一臺設備(Galaxy Nexus)上測試 - 在其他設備上測試的結果均正常。它加載在viewpager的後臺,所以我知道它初始化正確,但是當它顯示它總是segfaults在這個設備上的應用程序。

所以它看起來像有一些緩存的數據沒有被清除。我無法理解爲什麼同樣的APK適用於所有的其它設備(所有的Android版本。 - 但只有崩潰這臺設備上

我試圖清除使用

_web.clearCache(true); 
webSettings.setCacheMode(WebSettings.LOAD_NO_CACHE); 

,但沒有什麼區別緩存是否有?任何其他緩存我可以清除 我已經重新啓動手機 - 沒有區別

尋找關於如何解決此錯誤的任何想法! - 無論多麼瘋狂

這裏是段錯誤 - 看起來是OpenGL的有關 - - webview使用opengl字體嗎? - Webview有沒有字體緩存?

D/TilesManager(5776): new EGLContext from framework: 50c5df28 
D/GLWebViewState(5776): Reinit shader 
W/webcore (5776): skip viewSizeChanged as w is 0 
D/GLWebViewState(5776): Reinit transferQueue 
D/MyPodV2 (5776): load page:0 - 0.0 
D/MyPodV2 (5776): load page:720 - 100.0 
F/libc (5776): Fatal signal 11 (SIGSEGV) at 0x00000008 (code=1), thread 5776 (nelweb.mypod.v2) 
I/DEBUG ( 121): *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** 
I/DEBUG ( 121): Build fingerprint: 'samsung/yakjuxw/maguro:4.1.1/JRO03C/I9250XWLH2:user/release-keys' 
I/DEBUG ( 121): pid: 5776, tid: 5776, name: nelweb.mypod.v2 >>> co.uk.sentinelweb.mypod.v2 <<< 
I/DEBUG ( 121): signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr 00000008 
I/DEBUG ( 121):  r0 00000008 r1 585b7008 r2 00000010 r3 00000004 
I/DEBUG ( 121):  r4 56dbdb90 r5 56dbe9c0 r6 00000001 r7 00000004 
I/DEBUG ( 121):  r8 00000008 r9 00000001 sl 00000004 fp 00000001 
I/DEBUG ( 121):  ip 00000001 sp beac4180 lr 5863688c pc 5865f774 cpsr 80000010 
I/DEBUG ( 121):  d0 000000003e8374f1 d1 0000000000000000 
I/DEBUG ( 121):  d2 3e8374f100000000 d3 0000000000000000 
I/DEBUG ( 121):  d4 0000000000000000 d5 000000003f800000 
I/DEBUG ( 121):  d6 426d42bcc1248268 d7 3f80000000000000 
I/DEBUG ( 121):  d8 4411c6fc438013e9 d9 4507000000000000 
I/DEBUG ( 121):  d10 43e72bda4481c000 d11 43e670f943e670f9 
I/DEBUG ( 121):  d12 43e670f943e670f9 d13 bfa2695643f6cead 
I/DEBUG ( 121):  d14 00000000bd134ab6 d15 0000000000000000 
I/DEBUG ( 121):  d16 0000000800000000 d17 0000000000000000 
I/DEBUG ( 121):  d18 0000000000000000 d19 0000000000000000 
I/DEBUG ( 121):  d20 3ff0000000000000 d21 0000000000000000 
I/DEBUG ( 121):  d22 0000000000000000 d23 0000000000000000 
I/DEBUG ( 121):  d24 0000000000000000 d25 0000000000000000 
I/DEBUG ( 121):  d26 0000000000000000 d27 0000000000000000 
I/DEBUG ( 121):  d28 0000000000000000 d29 0000000000000000 
I/DEBUG ( 121):  d30 0000000000000000 d31 0000000000000000 
I/DEBUG ( 121):  scr 20000013 
I/DEBUG ( 121): 
I/DEBUG ( 121): backtrace: 
I/DEBUG ( 121):  #00 pc 00034774 /system/vendor/lib/egl/libGLESv2_POWERVR_SGX540_120.so 
I/DEBUG ( 121):  #01 pc 0000b888 /system/vendor/lib/egl/libGLESv2_POWERVR_SGX540_120.so 
I/DEBUG ( 121): 
I/DEBUG ( 121): stack: 
I/DEBUG ( 121):   beac4140 03d00000 
I/DEBUG ( 121):   beac4144 00000000 
I/DEBUG ( 121):   beac4148 5c7b3dd0 
I/DEBUG ( 121):   beac414c 586d79f8 
I/DEBUG ( 121):   beac4150 56dbea6c 
I/DEBUG ( 121):   beac4154 585b6c7c /dev/pvrsrvkm 
I/DEBUG ( 121):   beac4158 00000002 
I/DEBUG ( 121):   beac415c 00000004 
I/DEBUG ( 121):   beac4160 56dbea6c 
I/DEBUG ( 121):   beac4164 56dbdb90 
I/DEBUG ( 121):   beac4168 56dbe9bc 
I/DEBUG ( 121):   beac416c 00000000 
I/DEBUG ( 121):   beac4170 00000004 
I/DEBUG ( 121):   beac4174 00000023 
I/DEBUG ( 121):   beac4178 df0027ad 
I/DEBUG ( 121):   beac417c 00000000 
I/DEBUG ( 121):  #00 beac4180 56dbdb90 
I/DEBUG ( 121):   ........ ........ 
I/DEBUG ( 121):  #01 beac4180 56dbdb90 
I/DEBUG ( 121):   beac4184 5863688c /system/vendor/lib/egl/libGLESv2_POWERVR_SGX540_120.so 
I/DEBUG ( 121):   beac4188 56dbdb90 
I/DEBUG ( 121):   beac418c 00000004 
I/DEBUG ( 121):   beac4190 00000004 
I/DEBUG ( 121):   beac4194 00000000 
I/DEBUG ( 121):   beac4198 00000005 
I/DEBUG ( 121):   beac419c 5863898c /system/vendor/lib/egl/libGLESv2_POWERVR_SGX540_120.so 
I/DEBUG ( 121):   beac41a0 56dbdb90 
I/DEBUG ( 121):   beac41a4 00000004 
I/DEBUG ( 121):   beac41a8 00000000 
I/DEBUG ( 121):   beac41ac 5868606c /system/vendor/lib/egl/libGLESv2_POWERVR_SGX540_120.so 
I/DEBUG ( 121):   beac41b0 00000005 
I/DEBUG ( 121):   beac41b4 58639a70 /system/vendor/lib/egl/libGLESv2_POWERVR_SGX540_120.so (glDrawArrays+804) 
I/DEBUG ( 121):   beac41b8 00000004 
I/DEBUG ( 121):   beac41bc 00000000 
I/DEBUG ( 121): 
I/DEBUG ( 121): memory near r1: 
I/DEBUG ( 121):  585b6fe8 ffffffff ffffffff ffffffff ffffffff ................ 
I/DEBUG ( 121):  585b6ff8 ffffffff ffffffff ffffffff ffffffff ................ 
I/DEBUG ( 121):  585b7008 ffffffff ffffffff ffffffff ffffffff ................ 
I/DEBUG ( 121):  585b7018 ffffffff ffffffff ffffffff ffffffff ................ 
I/DEBUG ( 121):  585b7028 ffffffff ffffffff ffffffff ffffffff ................ 
I/DEBUG ( 121): 
I/DEBUG ( 121): memory near r4: 
I/DEBUG ( 121):  56dbdb70 10000298 58ec5138 5dc1229f 00000298 ....8Q.X.".].... 
I/DEBUG ( 121):  56dbdb80 58ca335c 5dbf356f 00000000 00000f9b \3.Xo5.]........ 
I/DEBUG ( 121):  56dbdb90 00000018 0000e7fd 00001c80 00001100 ................ 
I/DEBUG ( 121):  56dbdba0 00001100 00000024 000003aa 00000064 ....$.......d... 
I/DEBUG ( 121):  56dbdbb0 00000064 00000064 00000064 00000004 d...d...d....... 
I/DEBUG ( 121): 
I/DEBUG ( 121): memory near r5: 
I/DEBUG ( 121):  56dbe9a0 00000000 00000000 00000000 00000000 ................ 
I/DEBUG ( 121):  56dbe9b0 00000000 00000000 56dbe794 56dbe83c ...........V<..V 
I/DEBUG ( 121):  56dbe9c0 56dbe86c 00000000 00000000 00000000 l..V............ 
I/DEBUG ( 121):  56dbe9d0 00000000 00000000 00000000 00000000 ................ 
I/DEBUG ( 121):  56dbe9e0 00000002 00000003 00000003 00000004 ................ 
I/DEBUG ( 121): 
I/DEBUG ( 121): memory near sp: 
I/DEBUG ( 121):  beac4160 56dbea6c 56dbdb90 56dbe9bc 00000000 l..V...V...V.... 
I/DEBUG ( 121):  beac4170 00000004 00000023 df0027ad 00000000 ....#....'...... 
I/DEBUG ( 121):  beac4180 56dbdb90 5863688c 56dbdb90 00000004 ...V.hcX...V.... 
I/DEBUG ( 121):  beac4190 00000004 00000000 00000005 5863898c ..............cX 
I/DEBUG ( 121):  beac41a0 56dbdb90 00000004 00000000 5868606c ...V........l`hX 
I/DEBUG ( 121): 
I/DEBUG ( 121): code around pc: 
I/DEBUG ( 121):  5865f754 e781410c e28cc001 e15c0003 3afffffa .A........\....: 
I/DEBUG ( 121):  5865f764 e8bd8010 e92d4010 e3a0c000 ea000004 [email protected] 
I/DEBUG ( 121):  5865f774 e5904000 e5014008 e5904004 e0800002 [email protected]@[email protected] 
I/DEBUG ( 121):  5865f784 e5014004 e15c0003 e2811008 e28cc001 [email protected]\......... 
I/DEBUG ( 121):  5865f794 3afffff6 e8bd8010 e92d4010 e3a0c000 ...:[email protected] 
I/DEBUG ( 121): 
I/DEBUG ( 121): code around lr: 
I/DEBUG ( 121):  5863686c e3530000 1a000005 e1a03007 e59c0018 ..S......0...... 
I/DEBUG ( 121):  5863687c e59c101c e59c2014 e1a0e00f e59cf024 ..... ......$... 
I/DEBUG ( 121):  5863688c e2866001 e2855004 e5942e50 e3a03001 .`...P..P....0.. 
I/DEBUG ( 121):  5863689c e1560002 3affffeb e2840eed e1a01008 ..V....:........ 
I/DEBUG ( 121):  586368ac e280000c e1a02003 e8bd41f0 eaffe178 ..... ...A..x... 
I/BootReceiver( 316): Copying /data/tombstones/tombstone_02 to DropBox (SYSTEM_TOMBSTONE) 

UPDATE 10/03/13:這是我用來停止緩存的代碼 - 顯然我變得有點絕望。

_web.clearCache(true); 
     _web.setAnimationCacheEnabled(false); 
     _web.setDrawingCacheEnabled(false); 
     _web.setAlwaysDrawnWithCacheEnabled(false); 
     _web.clearHistory(); 
     _web.clearFormData(); 
     webSettings.setJavaScriptEnabled(false); 
     webSettings.setCacheMode(WebSettings.LOAD_NO_CACHE); 
     webSettings.setAppCacheMaxSize(0); 
     webSettings.setAppCachePath(""); 
     webSettings.setAppCacheEnabled(false); 
     getActivity().deleteDatabase("webview.db"); 
     getActivity().deleteDatabase("webviewCache.db"); 
     webSettings.setDomStorageEnabled(false); 
     webSettings.setLoadsImagesAutomatically(false); 
     _web.setWillNotCacheDrawing(true); 
     webSettings.setBuiltInZoomControls(false); 
     webSettings.setSupportZoom(false); 
     webSettings.setSaveFormData(false); 
     //_web.setWillNotDraw(true);// loads but stops drawing 
     webSettings.setRenderPriority(WebSettings.RenderPriority.LOW); 

有趣的是,_web.setWillNotDraw(true);停止段錯誤,但不繪製任何東西(這是邏輯),以便向我指出segfault必須在webview中。繪圖代碼。

+0

我已經卸載了應用程序並重新安裝了 – siliconeagle 2013-03-06 17:50:06

回答

3

Webview緩存是特定於應用程序的,因此如果這是您描述的暫時性問題,那麼卸載並重新安裝該應用程序應該可以解決此問題。

更多詳細信息,緩存住在:

/data/data/your.package.name/cache/

,你可以看看,但隨後我們進入的您是否有訪問權限的領域。

如果您的應用程式是爲了調試建成,那麼這ADB命令可以讓你看到的目錄內容:

run-as your.package.name ls /data/data/your.package.name/cache/

在我的Galaxy S3的相關文件被稱爲「webviewCacheChromiumStaging」和「com.android .renderscript.cache',所以你的結果可能會有所不同。

+2

你是對的 - 實際問題是因爲我在webview(flyin菜單)下有一個視圖 - 所以卸載和重新安裝似乎沒有區別。隱藏webview下面的視圖雖然工作。奇怪的是,它只發生在一個設備上(Galaxy聯繫),所以對我來說看起來像三星特有的東西。所以我根本就不是緩存相關的!只是看起來像。 – siliconeagle 2013-03-12 10:36:53

+0

嗨硅膠,你能得到關於真正問題的更多信息?即使在只有web視圖的空白屏幕上,僅在某些設備上,以及僅在某些網頁上,我目前仍然存在該問題。很難調試... Webview文件/繪圖緩存?繪圖層? – 2013-06-18 16:36:22

+0

@siliconeagle我也對這個問題有些更多的細節感興趣,我們在我們的應用程序中遇到了完全相同的問題。但是,我們只能在Android 4.1.2上重現Nexus 7上的段錯誤。我試圖找出問題,但我沒有成功。不過,隱藏下面的WebViews工作。 – Rik 2015-12-30 21:08:30

2

,我用它來防止使用緩存的設置:

_web.clearCache(true); 
_web.setAppCacheEnabled(false); 
webSettings.setCacheMode(WebSettings.LOAD_NO_CACHE); 
webSettings.setAppCacheMaxSize(0); 
webSettings.setAppCacheEnabled(false); 
mContext.deleteDatabase("webview.db"); 
mContext.deleteDatabase("webviewCache.db"); 

也看看:this onethis one

+0

試過了。恐怕沒有區別。 – siliconeagle 2013-03-10 14:24:07