信号11 SIGSEGV导致Android崩溃

23

今天我遇到了一个错误,导致我的Android应用程序收到SIGNAL 11。

这个错误通常是由于Android内部存储未经授权的内存区域访问而发生的。一些可能的情况包括网络访问、网络通信、服务器图像下载等。我的情况是浏览器加载url!

http://bootloader.wikidot.com/linux:android:crashlog

我需要在QR码扫描后启动浏览器。

应用程序不断扫描和流畅地打开浏览器,但在尝试相同操作15-20次后出现问题。

我做了很多研究并发现这是 Android 原生库中发生的内存错误...通常情况下,当 Android 内部存储系统尝试访问未知的内存区域时会发生此错误。

最终,我发现当我在Android应用程序设置部分查看我的应用程序内存使用情况时,我发现缓存已经达到10 MB。


如果Robert的解决方案有效,您可能希望将其标记为正确答案。 - Sriram
当我使用一些复杂的ListAdapters启动新活动时,我会遇到这个问题。我应该在哪里放置这些webview.clearCache()调用? - JPM
JPM,webview和listview之间没有关系,哈哈哈。问题似乎出在你的适配器的getview方法上,特别是convertView。请参考此链接中的getview方法:http://www.softwarepassion.com/android-series-custom-listview-items-and-adapters/。 - Rohit Mandiwal
1
嗨@Rohit,我在应用FFMPEG库解码视频时遇到了同样的问题,我该怎么做呢?这是我的问题链接,请查看https://dev59.com/B-o6XIcBkEYKwwoYPSL7 和http://stackoverflow.com/questions/11389751/using-jni-in-my-project-and-geeting-error-fatal-signal-11-sigsegv-at-0x000000 - Rahul Upadhyay
2个回答

23

调用 webview.clearCache();webView2.destroyDrawingCache(); 将解决该问题。


6
请解释一下为什么这样做可以解决问题。我在使用一个原生库时也遇到了类似的问题,希望你的解释可以对我有所帮助。 - hcpl
@hcpl:已经过去一年了,我真的不记得为什么了,但我猜想可能存在某种内存泄漏。 - Robert Harvey
@RobertHarvey 我在WebView上也遇到了这个问题。请问我应该在哪里调用这个方法? - Dinesh
谢谢你的解决方案。我遇到了一个只有webView而没有其他内容的应用程序相同的问题 - 它在某些网站上崩溃。更有趣的是,一切都在AOS 2.3.x(特别是MIUI 2.3.5)上正常工作,但在4.0.3上崩溃!现在我可以看到AOS 4的改进了!是的,它真的“更好”!将此乘以为AOS 4设计的设备通常具有比2.3.x设计的设备更多的物理RAM的事实。此外,即使是AOS 4内置浏览器也会在相同的网站上崩溃! - Stan

1
我曾经遇到过同样的问题,我使用了jni。这个致命的异常会随机出现,并且当我用它播放音频时,它会在大约2分钟或6分钟左右崩溃。经过大量的研究,我发现问题是我从两个不同的线程中进行了本地函数调用,当它们同时发生时就会失败。
另外,如果你从Android中进行任何jni调用,请确保没有将null作为参数传递。

我有同样的问题,我正在调用jni方法,我没有传递任何空参数,而且方法调用在线程内部,但我仍然遇到了这个错误,你有什么解决方案吗?请告诉我现在该怎么办? - Priyanka

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接