2013-03-06 75 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