客退机开不机异常分析

来源:互联网 发布:超链接宣传单制作软件 编辑:程序博客网 时间:2024/06/05 19:30

客退机出现了开不机的现象一直定着开机logo界面。

刷入eng的boot.img,可以连上usb,抓出android 和 kernel log部分信息如下 :

main.log :

1-01 08:00:47.036   932   949 E AndroidRuntime: *** FATAL EXCEPTION IN SYSTEM PROCESS: ActivityManager


01-01 08:00:47.036   932   949 E AndroidRuntime: java.lang.RuntimeException: Unable to get provider com.android.providers.settings.SettingsProvider: android.database.sqlite.SQLiteCantOpenDatabaseException: unknown error (code 14): Could not open database


01-01 08:00:47.036   932   949 E AndroidRuntime: at android.app.ActivityThread.installProvider(ActivityThread.java:5434)


01-01 08:00:47.036   932   949 E AndroidRuntime: at android.app.ActivityThread.acquireProvider(ActivityThread.java:5050)


01-01 08:00:47.036   932   949 E AndroidRuntime: at android.app.ContextImpl$ApplicationContentResolver.acquireProvider(ContextImpl.java:2004)


01-01 08:00:47.036   932   949 E AndroidRuntime: at android.content.ContentResolver.acquireProvider(ContentResolver.java:1501)


01-01 08:00:47.036   932   949 E AndroidRuntime: at android.provider.Settings$NameValueCache.lazyGetProvider(Settings.java:1315)


01-01 08:00:47.036   932   949 E AndroidRuntime: at android.provider.Settings$NameValueCache.getStringForUser(Settings.java:1369)


01-01 08:00:47.036   932   949 E AndroidRuntime: at android.provider.Settings$Global.getStringForUser(Settings.java:8507)


01-01 08:00:47.036   932   949 E AndroidRuntime: at android.provider.Settings$Global.getString(Settings.java:8496)


01-01 08:00:47.036   932   949 E AndroidRuntime: at android.provider.Settings$Global.getInt(Settings.java:8563)


01-01 08:00:47.036   932   949 E AndroidRuntime: at com.android.server.am.ActivityManagerService$20.run(ActivityManagerService.java:13766)


01-01 08:00:47.036   932   949 E AndroidRuntime: at com.android.server.am.ActivityManagerService.addErrorToDropBox(ActivityManagerService.java:13806)


01-01 08:00:47.036   932   949 E AndroidRuntime: at com.android.server.am.ActivityManagerService.handleApplicationWtfInner(ActivityManagerService.java:13583)


01-01 08:00:47.036   932   949 E AndroidRuntime: at com.android.server.am.ActivityManagerService$19.run(ActivityManagerService.java:13555)


01-01 08:00:47.036   932   949 E AndroidRuntime: at android.os.Handler.handleCallback(Handler.java:815)


01-01 08:00:47.036   932   949 E AndroidRuntime: at android.os.Handler.dispatchMessage(Handler.java:104)


01-01 08:00:47.036   932   949 E AndroidRuntime: at android.os.Looper.loop(Looper.java:207)


01-01 08:00:47.036   932   949 E AndroidRuntime: at android.os.HandlerThread.run(HandlerThread.java:61)


01-01 08:00:47.036   932   949 E AndroidRuntime: at com.android.server.ServiceThread.run(ServiceThread.java:46)


01-01 08:00:47.036   932   949 E AndroidRuntime: Caused by: android.database.sqlite.SQLiteCantOpenDatabaseException: unknown error (code 14): Could not open database


01-01 08:00:47.036   932   949 E AndroidRuntime: at android.database.sqlite.SQLiteConnection.nativeOpen(Native Method)


01-01 08:00:47.036   932   949 E AndroidRuntime: at android.database.sqlite.SQLiteConnection.open(SQLiteConnection.java:212)


01-01 08:00:47.036   932   949 E AndroidRuntime: at android.database.sqlite.SQLiteConnection.open(SQLiteConnection.java:196)


01-01 08:00:47.036   932   949 E AndroidRuntime: at android.database.sqlite.SQLiteConnectionPool.openConnectionLocked(SQLiteConnectionPool.java:463)


01-01 08:00:47.036   932   949 E AndroidRuntime: at android.database.sqlite.SQLiteConnectionPool.open(SQLiteConnectionPool.java:185)


01-01 08:00:47.036   932   949 E AndroidRuntime: at android.database.sqlite.SQLiteConnectionPool.open(SQLiteConnectionPool.java:177)


01-01 08:00:47.036   932   949 E AndroidRuntime: at android.database.sqlite.SQLiteDatabase.openInner(SQLiteDatabase.java:836)


01-01 08:00:47.036   932   949 E AndroidRuntime: at android.database.sqlite.SQLiteDatabase.open(SQLiteDatabase.java:821)


01-01 08:00:47.036   932   949 E AndroidRuntime: at android.database.sqlite.SQLiteDatabase.openDatabase(SQLiteDatabase.java:714)


01-01 08:00:47.036   932   949 E AndroidRuntime: at android.app.ContextImpl.openOrCreateDatabase(ContextImpl.java:576)


01-01 08:00:47.036   932   949 E AndroidRuntime: at android.database.sqlite.SQLiteOpenHelper.getDatabaseLocked(SQLiteOpenHelper.java:223)


01-01 08:00:47.036   932   949 E AndroidRuntime: at android.database.sqlite.SQLiteOpenHelper.getWritableDatabase(SQLiteOpenHelper.java:163)


01-01 08:00:47.036   932   949 E AndroidRuntime: at com.android.providers.settings.SettingsProvider$SettingsRegistry.migrateAllLegacySettingsIfNeeded(SettingsProvider.java:1577)


01-01 08:00:47.036   932   949 E AndroidRuntime: at com.android.providers.settings.SettingsProvider$SettingsRegistry.<init>(SettingsProvider.java:1400)


01-01 08:00:47.036   932   949 E AndroidRuntime: at com.android.providers.settings.SettingsProvider.onCreate(SettingsProvider.java:219)


01-01 08:00:47.036   932   949 E AndroidRuntime: at android.content.ContentProvider.attachInfo(ContentProvider.java:1801)


01-01 08:00:47.036   932   949 E AndroidRuntime: at android.content.ContentProvider.attachInfo(ContentProvider.java:1776)


01-01 08:00:47.036   932   949 E AndroidRuntime: at android.app.ActivityThread.installProvider(ActivityThread.java:5431)


01-01 08:00:47.036   932   949 E AndroidRuntime: ... 17 more

。。。


kernel log:


Line 2562: [    4.956290] <1>.(1)[194:init]fs_mgr: check_fs(): mount(/dev/block/platform/mtk-msdc.0/11230000.msdc0/by-name/userdata,/data,ext4)=-1: Invalid argument
Line 2614: [    5.2147[    5.235339] <1>.(1)[194:init]fs_mgr: fs_mgr_mount_all(): possibly an encryptable blkdev /dev/blocSTOP<12><0x0> Error<0> Resp<0x0> <- msdc_dump_trans_error() : L<6610> PID<kworker/1:1><0x3c>
Line 2622: [    5.374160] <0>.(0)[194:init]EXT4-fs (mmcblk0p23): mounted filesystem with ordered data mode. Opts: nomblk_io_submit,errors=remount-ro


分析从上层来说是settings db文件无法打开,从kernel log来看是userdata分区,即data出现挂载失败,挂载成remount_ro 。

然后尝试push 一些小文件进/data/local/tmp不能pull,显示no space。 

但是使用adb shell df 看到机器是有460M多可用空间,显然不是没空间 。

把kernel代码映射到fs_mgr.c中去看,确实是出现了异常 。





可见,文件系统挂载跑到异常error的代码中去了。然后正常挂载是挂载ext4文件系统格式,反正挂载不上,就remout_ro .

故不能读写就是提示没空间错误 。 


当然该问题分析,都是客户机器出现问题后的事后分析,只能分析到,什么原因导致开不机,是什么问题。

但是怎么操作导致的,显然客户在出问题之前不能抓来一个现场的日志 。

照理来说flash是比较稳定的,但是怎么说呢,机器冷着了,热着了,摔了还可能有轻微虚焊的机器,都有可能问题。 出现问题的原因只要客户不说,怎么也无法得知,不过公司给客户做了退机处理 。已经很人性化了。



原创粉丝点击