java.io.IOException 导致的 WebView 崩溃:关闭失败:EIO(I/O 错误)libcore.io.IoUtils.close(IoUtils.java:41)
Posted
技术标签:
【中文标题】java.io.IOException 导致的 WebView 崩溃:关闭失败:EIO(I/O 错误)libcore.io.IoUtils.close(IoUtils.java:41)【英文标题】:WebView Crash by java.io.IOException: close failed: EIO (I/O error) libcore.io.IoUtils.close(IoUtils.java:41) 【发布时间】:2014-09-07 19:18:41 【问题描述】:我有一个android 4.0/4.1用户上传的崩溃日志,但我无法重现。日志是这样的:
java.io.IOException: close failed: EIO (I/O error)
libcore.io.IoUtils.close(IoUtils.java:41)
java.io.FileInputStream.close(FileInputStream.java:121)
android.webkit.JWebCoreJavaBridge.nativeServiceFuncPtrQueue(Native Method)
android.webkit.JWebCoreJavaBridge.handleMessage(JWebCoreJavaBridge.java:113)
android.os.Handler.dispatchMessage(Handler.java:99)
android.os.Looper.loop(Looper.java:137)
android.webkit.WebViewCore$WebCoreThread.run(WebViewCore.java:949)
java.lang.Thread.run(Thread.java:856)
cause by:
libcore.io.ErrnoException: close failed: EIO (I/O error)
libcore.io.Posix.close(Native Method)
libcore.io.BlockGuardOs.close(BlockGuardOs.java:75)
libcore.io.IoUtils.close(IoUtils.java:38)
java.io.FileInputStream.close(FileInputStream.java:121)
android.webkit.JWebCoreJavaBridge.nativeServiceFuncPtrQueue(Native Method)
android.webkit.JWebCoreJavaBridge.handleMessage(JWebCoreJavaBridge.java:113)
android.os.Handler.dispatchMessage(Handler.java:99)
android.os.Looper.loop(Looper.java:137)
android.webkit.WebViewCore$WebCoreThread.run(WebViewCore.java:949)
java.lang.Thread.run(Thread.java:856)
有谁知道它是怎么发生的?或者如何解决它?
【问题讨论】:
【参考方案1】:这是由于只读文件而发生的。
我认为这是因为 EIO 来自您文件中的 bad_file_flush
。 似乎当内核访问文件失败时,它会将打开的文件描述转换为以 bad_inode_ops 作为其文件操作的伪打开文件。我找不到为基于 FAT 的文件系统执行此操作的代码,但也许有一些通用代码。
由于 FileChannel 缓存数据我认为你需要先调用force(
),然后再调用close() the FileChannel
有关更多信息,请访问此链接 Link1
【讨论】:
申请流程是什么意思?是否导致重启?用户是否看到崩溃对话框? 这个问题是由于内核访问文件 IO 流有任何失败。【参考方案2】:EIO 发生在 bad_file_flush
中的 bad_inode.c
。看来内核访问inode有问题。
原因可能是安装-卸载 SD 卡或存储介质,将 USB 连接到手机上。
尝试在close()
之前调用force()
【讨论】:
以上是关于java.io.IOException 导致的 WebView 崩溃:关闭失败:EIO(I/O 错误)libcore.io.IoUtils.close(IoUtils.java:41)的主要内容,如果未能解决你的问题,请参考以下文章
java.io.IOException 导致的 WebView 崩溃:关闭失败:EIO(I/O 错误)libcore.io.IoUtils.close(IoUtils.java:41)
Java 报:java.io.IOException: Too many open files ,导致服务器 OOM,内存溢出的 bug
后端跨域问题导致java.io.IOException: UT010029: Stream is closed解决办法
Tomcat报java.io.IOException: Broken pipe错误
mockito 异常Reason: java.io.IOException: invalid constant type: 18
java.io.IOException: setDataSource failed.: status=0x80000000问题的解决