jberkel / sms-backup-plus

Backup Android SMS, MMS and call log to Gmail / Gcal / IMAP
https://play.google.com/store/apps/details?id=com.zegoggles.smssync
Apache License 2.0
1.81k stars 499 forks source link

SMSBackup+ crashes when doing backup. #185

Closed lifanxi closed 11 years ago

lifanxi commented 13 years ago

An FC happens immediately after the step "Calculating...".

SMSBackup+ version 1.4.3

Could you please help to investigate the root cause of the problem? Thanks! If there this any more debugging information needed, please feel free to let me know.

From logcat I grabbed the following information:

D/dalvikvm(12584): GC_FOR_MALLOC freed 9428 objects / 771376 bytes in 599ms D/ACRA (13232): Writing crash report file. D/ACRA (13232): Looking for error files in /data/data/com.zegoggles.smssync/files D/dalvikvm(13232): GC_FOR_MALLOC freed 7558 objects / 492976 bytes in 89ms D/NativeCrypto(13232): Freeing OpenSSL session E/AndroidRuntime(13232): FATAL EXCEPTION: AsyncTask #1 E/AndroidRuntime(13232): java.lang.RuntimeException: An error occured while executing doInBackground() E/AndroidRuntime(13232): at android.os.AsyncTask$3.done(AsyncTask.java:200) E/AndroidRuntime(13232): at java.util.concurrent.FutureTask$Sync.innerSetException(FutureTask.java:273) E/AndroidRuntime(13232): at java.util.concurrent.FutureTask.setException(FutureTask.java:124) E/AndroidRuntime(13232): at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:307) E/AndroidRuntime(13232): at java.util.concurrent.FutureTask.run(FutureTask.java:137) E/AndroidRuntime(13232): at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1068) E/AndroidRuntime(13232): at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:561) E/AndroidRuntime(13232): at java.lang.Thread.run(Thread.java:1096) E/AndroidRuntime(13232): Caused by: android.database.sqlite.SQLiteException: unknown error: Unable to convert BLOB to string E/AndroidRuntime(13232): at android.database.CursorWindow.getString_native(Native Method) E/AndroidRuntime(13232): at android.database.CursorWindow.getString(CursorWindow.java:329) E/AndroidRuntime(13232): at android.database.AbstractWindowedCursor.getString(AbstractWindowedCursor.java:49) E/AndroidRuntime(13232): at android.database.CursorWrapper.getString(CursorWrapper.java:135) E/AndroidRuntime(13232): at com.zegoggles.smssync.CursorToMessage.cursorToMessages(CursorToMessage.java:172) E/AndroidRuntime(13232): at com.zegoggles.smssync.SmsBackupService$BackupTask.backup(SmsBackupService.java:268) E/AndroidRuntime(13232): at com.zegoggles.smssync.SmsBackupService$BackupTask.doInBackground(SmsBackupService.java:159) E/AndroidRuntime(13232): at com.zegoggles.smssync.SmsBackupService$BackupTask.doInBackground(SmsBackupService.java:105) E/AndroidRuntime(13232): at android.os.AsyncTask$2.call(AsyncTask.java:185) E/AndroidRuntime(13232): at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:305) E/AndroidRuntime(13232): ... 4 more W/ActivityManager( 1362): Force finishing activity com.zegoggles.smssync/.SmsSync I/WindowManager( 1362): updateFocusedWindowLocked newFocus=Window{45fb9548 com.zegoggles.smssync/com.zegoggles.smssync.SmsSync paused=true} mode=0 mCurrentFocus = Window{45fb9548 com.zegoggles.smssync/com.zegoggles.smssync.SmsSync paused=true} I/ActivityThread(13232): enter process activity msg = 102

jddcef commented 12 years ago

Can you send through the crashes from the /data/data/com.zegoggles.smssync/files folder on your device.

lifanxi commented 12 years ago

Attached is the crash log. Could you please analyze that? Thanks.

REPORT_ID=e3cc8e1c-f825-407c-b86f-f4228a226c7a APP_VERSION_CODE=1405 APP_VERSION_NAME=1.4.4 PACKAGE_NAME=com.zegoggles.smssync FILE_PATH=/data/data/com.zegoggles.smssync/files PHONE_MODEL=ZTE-T U880 ANDROID_VERSION=2.3.7 BUILD=BOARD\=U880\nBOOTLOADER\=unknown\nBRAND\=ZTE\nCPU_ABI\=armeabi\nCPU_ABI2\=unknown\nDEVICE\=U880\nDISPLAY\=U880V1.0.1B01\nFINGERPRINT\=ZTE/U880/U880:2.3.7/GWK74/eng.root.20111125.174120:user/realease-keys\nHARDWARE\=pxa910-based\nHOST\=ubuntu-10\nID\=GWK74\nMANUFACTURER\=ZTE\nMODEL\=ZTE-T U880\nPRODUCT\=U880\nRADIO\=unknown\nSERIAL\=unknown\nTAGS\=realease-keys\nTIME\=1322214127000\nTYPE\=user\nUNKNOWN\=unknown\nUSER\=root\n BRAND=ZTE PRODUCT=U880 TOTAL_MEM_SIZE=309329920 AVAILABLE_MEM_SIZE=67788800 CUSTOM_DATA= STACK_TRACE=java.lang.RuntimeException: An error occured while executing doInBackground()\n\tat android.os.AsyncTask$3.done(AsyncTask.java:200)\n\tat java.util.concurrent.FutureTask$Sync.innerSetException(FutureTask.java:274)\n\tat java.util.concurrent.FutureTask.setException(FutureTask.java:125)\n\tat java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:308)\n\tat java.util.concurrent.FutureTask.run(FutureTask.java:138)\n\tat java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1088)\n\tat java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:581)\n\tat java.lang.Thread.run(Thread.java:1019)\nCaused by: android.database.sqlite.SQLiteException: unknown error: Unable to convert BLOB to string\n\tat android.database.CursorWindow.getString_native(Native Method)\n\tat android.database.CursorWindow.getString(CursorWindow.java:329)\n\tat android.database.AbstractWindowedCursor.getString(AbstractWindowedCursor.java:49)\n\tat android.database.CursorWrapper.getString(CursorWrapper.java:135)\n\tat com.zegoggles.smssync.CursorToMessage.cursorToMessages(CursorToMessage.java:167)\n\tat com.zegoggles.smssync.SmsBackupService$BackupTask.backup(SmsBackupService.java:261)\n\tat com.zegoggles.smssync.SmsBackupService$BackupTask.doInBackground(SmsBackupService.java:156)\n\tat com.zegoggles.smssync.SmsBackupService$BackupTask.doInBackground(SmsBackupService.java:105)\n\tat android.os.AsyncTask$2.call(AsyncTask.java:185)\n\tat java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:306)\n\t... 4 more\nandroid.database.sqlite.SQLiteException: unknown error: Unable to convert BLOB to string\n\tat android.database.CursorWindow.getString_native(Native Method)\n\tat android.database.CursorWindow.getString(CursorWindow.java:329)\n\tat android.database.AbstractWindowedCursor.getString(AbstractWindowedCursor.java:49)\n\tat android.database.CursorWrapper.getString(CursorWrapper.java:135)\n\tat com.zegoggles.smssync.CursorToMessage.cursorToMessages(CursorToMessage.java:167)\n\tat com.zegoggles.smssync.SmsBackupService$BackupTask.backup(SmsBackupService.java:261)\n\tat com.zegoggles.smssync.SmsBackupService$BackupTask.doInBackground(SmsBackupService.java:156)\n\tat com.zegoggles.smssync.SmsBackupService$BackupTask.doInBackground(SmsBackupService.java:105)\n\tat android.os.AsyncTask$2.call(AsyncTask.java:185)\n\tat java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:306)\n\tat java.util.concurrent.FutureTask.run(FutureTask.java:138)\n\tat java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1088)\n\tat java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:581)\n\tat java.lang.Thread.run(Thread.java:1019)\n INITIAL_CONFIGURATION=locale\=zh_CN\nhardKeyboardHidden\=HARDKEYBOARDHIDDEN_YES\nkeyboard\=KEYBOARD_NOKEYS\nkeyboardHidden\=KEYBOARDHIDDEN_NO\nfontScale\=1.0\nmcc\=460\nmnc\=0\nnavigation\=NAVIGATION_TRACKBALL\nnavigationHidden\=NAVIGATIONHIDDEN_NO\norientation\=ORIENTATION_PORTRAIT\nscreenLayout\=SCREENLAYOUT_SIZE_NORMAL+SCREENLAYOUT_LONG_YES\nseq\=3\ntouchscreen\=TOUCHSCREEN_FINGER\nuiMode\=UI_MODE_TYPE_NORMAL+UI_MODE_NIGHT_NO\nuserSetLocale\=false\n CRASH_CONFIGURATION=locale\=zh_CN\nhardKeyboardHidden\=HARDKEYBOARDHIDDEN_YES\nkeyboard\=KEYBOARD_NOKEYS\nkeyboardHidden\=KEYBOARDHIDDEN_NO\nfontScale\=1.0\nmcc\=460\nmnc\=0\nnavigation\=NAVIGATION_TRACKBALL\nnavigationHidden\=NAVIGATIONHIDDEN_NO\norientation\=ORIENTATION_PORTRAIT\nscreenLayout\=SCREENLAYOUT_SIZE_NORMAL+SCREENLAYOUT_LONG_YES\nseq\=3\ntouchscreen\=TOUCHSCREEN_FINGER\nuiMode\=UI_MODE_TYPE_NORMAL+UI_MODE_NIGHT_NO\nuserSetLocale\=false\n DISPLAY=width\=480\nheight\=800\npixelFormat\=4\nrefreshRate\=61.504fps\nmetrics.density\=x1.5\nmetrics.scaledDensity\=x1.5\nmetrics.widthPixels\=480\nmetrics.heightPixels\=800\nmetrics.xdpi\=160.42105\nmetrics.ydpi\=160.0 USER_APP_START_DATE=2011-12-19T20:04:08.000+08:00 USER_CRASH_DATE=2011-12-19T20:06:41.000+08:00 DUMPSYS_MEMINFO=Applications Memory Usage (kB):\nUptime: 44227717 Realtime: 164584314\n\n\ MEMINFO in pid 17657 [com.zegoggles.smssync] **\n native dalvik other total\n size: 6600 7431 N/A 14031\n allocated: 6524 4120 N/A 10644\n free: 47 3311 N/A 3358\n (Pss): 1670 1752 6324 9746\n (shared dirty): 2024 1860 5672 9556\n (priv dirty): 1608 316 5696 7620\n \n Objects\n Views: 0 ViewRoots: 0\n AppContexts: 0 Activities: 0\n Assets: 2 AssetManagers: 2\n Local Binders: 18 Proxy Binders: 31\nDeath Recipients: 1\n OpenSSL Sockets: 4\n \n SQL\n heap: 0 MEMORY_USED: 0\n PAGECACHE_OVERFLOW: 0 MALLOC_SIZE: 0\n \n \n Asset Allocations\n zip:/system/framework/framework-res.apk:/resources.arsc: 612K\n DEVICE_ID=860457004854536 INSTALLATION_ID=2eb99105-2689-4cb9-860d-3f836b3d0993 USER_EMAIL=N/A DEVICE_FEATURES=android.hardware.wifi\nandroid.hardware.location.network\ncom.google.android.feature.GOOGLE_BUILD\nandroid.hardware.telephony\nandroid.hardware.location\nandroid.software.sip\nandroid.hardware.touchscreen.multitouch\nandroid.hardware.sensor.compass\nandroid.hardware.camera\nandroid.hardware.touchscreen.multitouch.distinct\nandroid.hardware.bluetooth\nandroid.software.sip.voip\nandroid.hardware.sensor.proximity\nandroid.hardware.microphone\nandroid.hardware.sensor.light\nandroid.hardware.location.gps\nandroid.hardware.telephony.gsm\nandroid.hardware.camera.autofocus\nandroid.software.live_wallpaper\nandroid.hardware.touchscreen\nandroid.hardware.sensor.accelerometer\nglEsVersion \= 2.0\n ENVIRONMENT=getDataDirectory\=/data\ngetDownloadCacheDirectory\=/cache\ngetExternalStorageAndroidDataDir\=/mnt/sdcard/Android/data\ngetExternalStorageDirectory\=/mnt/sdcard\ngetExternalStorageState\=mounted\ngetRootDirectory\=/system\ngetSecureDataDirectory\=/data\ngetSystemSecureDirectory\=/data/system\nisEncryptedFilesystemEnabled\=false\nisExternalStorageRemovable\=true\n SETTINGS_SYSTEM=ACCELEROMETER_ROTATION\=0\nAIRPLANE_MODE_ON\=0\nAIRPLANE_MODE_RADIOS\=cell,bluetooth,wifi\nAIRPLANE_MODE_TOGGLEABLE_RADIOS\=\nALARM_ALERT\=content://media/internal/audio/media/85\nAUTO_REDIAL\=0\nAUTO_TIME\=1\nCALL_AUTO_RETRY\=0\nCAR_DOCK_SOUND\=/system/media/audio/ui/Dock.ogg\nCAR_UNDOCK_SOUND\=/system/media/audio/ui/Undock.ogg\nDATE_FORMAT\=yyyy-MM-dd\nDESK_DOCK_SOUND\=/system/media/audio/ui/Dock.ogg\nDESK_UNDOCK_SOUND\=/system/media/audio/ui/Undock.ogg\nDIM_SCREEN\=1\nDOCK_SOUNDS_ENABLED\=0\nDTMF_TONE_TYPE_WHEN_DIALING\=0\nDTMF_TONE_WHEN_DIALING\=0\nEMERGENCY_TONE\=0\nHAPTIC_FEEDBACK_ENABLED\=0\nHEARING_AID\=0\nIP_DIAL_SWITCH\=0\nIP_NUMBER\=\nIP_PREFIX\=0\nLOCAL_NUMBER\=\nLOCKSCREEN_SOUNDS_ENABLED\=0\nLOCK_SOUND\=/system/media/audio/ui/Lock.ogg\nLOW_BATTERY_SOUND\=/system/media/audio/ui/LowBattery.ogg\nMODE_RINGER\=2\nMODE_RINGER_STREAMS_AFFECTED\=166\nMUTE_STREAMS_AFFECTED\=2094\nNEXT_ALARM_FORMATTED\=\nNEXT_ALARM_TIME\=0\nNOTIFICATIONS_USE_RING_VOLUME\=0\nNOTIFICATION_LIGHT_PULSE\=1\nNOTIFICATION_SOUND\=content://media/internal/audio/media/16\nPHONE_NUMBER\=\nPOWER_SOUNDS_ENABLED\=1\nRINGTONE\=content://media/external/audio/media/45\nROAM_IP_DIAL\=0\nROAM_IP_NUMBER\=\nSCREEN_BRIGHTNESS\=255\nSCREEN_BRIGHTNESS_MODE\=1\nSCREEN_OFF_TIMEOUT\=60000\nSECURITY_GUARD_ENABLED\=0\nSMART_TP_DIAL\=0\nSMS_CONFIG_KEY1\=\u73b0\u5728\u5f88\u5fd9,\u4e00\u4f1a\u7ed9\u4f60\u56de\u7535\u8bdd\nSMS_CONFIG_KEY2\=\u6211\u5728\u5f00\u4f1a,\u4e00\u4f1a\u7ed9\u4f60\u56de\u7535\u8bdd\nSPEED_NUMBER2\=\nSPEED_NUMBER3\=\nSPEED_NUMBER4\=\nSPEED_NUMBER5\=\nSPEED_NUMBER6\=\nSPEED_NUMBER7\=\nSPEED_NUMBER8\=\nSPEED_NUMBER9\=\nSTAY_ON_WHILE_PLUGGED_IN\=0\nTIME_12_24\=24\nTRANSITION_ANIMATION_SCALE\=0.5\nTTY_MODE\=0\nTURN_TO_MUTE\=0\nUA_INFO\=ZTE-TU880_TD/1.0 Linux/2.6.32 Android/2.2 Release/5.25.2011 Browser/AppleWebKit533.1\nUNLOCK_SOUND\=/system/media/audio/ui/Unlock.ogg\nVIBRATE_IN_SILENT\=1\nVIBRATE_ON\=5\nVIBTATION_NOTIFICATION\=0\nVOLUME_ALARM\=7\nVOLUME_BLUETOOTH_SCO\=7\nVOLUME_MUSIC\=15\nVOLUME_NOTIFICATION\=7\nVOLUME_RING\=7\nVOLUME_SYSTEM\=7\nVOLUME_VIDEO_CALL\=4\nVOLUME_VOICE\=3\nWIFI_DEFAULT_ACCESSPOINT_SSID\=CMCC\nWIFI_STATIC_DNS1\=192.168.8.1\nWIFI_STATIC_GATEWAY\=192.168.8.1\nWIFI_STATIC_IP\=192.168.8.207\nWIFI_STATIC_NETMASK\=255.255.255.0\nWIFI_USE_STATIC_IP\=1\nWINDOW_ANIMATION_SCALE\=0.5\nWLAN_PREFER_VALUE\=1\n SETTINGS_SECURE=ADB_ENABLED\=1\nALLOWED_GEOLOCATION_ORIGINS\=http://www.google.co.uk http://www.google.com\nALLOW_MOCK_LOCATION\=0\nANDROID_ID\=a80b013ffc3e1637\nASSISTED_GPS_ENABLED\=1\nBACKUP_ENABLED\=1\nBACKUP_PROVISIONED\=1\nBACKUP_TRANSPORT\=android/com.android.internal.backup.LocalTransport\nBLUETOOTH_ON\=0\nCDMA_CELL_BROADCAST_SMS\=1\nDATA_ROAMING\=1\nDEFAULT_INPUT_METHOD\=com.cootek.smartinputv5/.TouchPalIME\nDEVICE_PROVISIONED\=1\nDISABLED_SYSTEM_INPUT_METHODS\=\nENABLED_ACCESSIBILITY_SERVICES\=\nENABLED_INPUT_METHODS\=com.google.android.inputmethod.pinyin/.PinyinIME:com.android.inputmethod.latin/.LatinIME:com.cootek.smartinputv5/.TouchPalIME\nINSTALL_NON_MARKET_APPS\=1\nLOCATION_PROVIDERS_ALLOWED\=network,gps\nLOCK_PATTERN_ENABLED\=1\nLOCK_PATTERN_TACTILE_FEEDBACK_ENABLED\=0\nLOCK_PATTERN_VISIBLE\=1\nMOBILE_DATA\=1\nMOUNT_PLAY_NOTIFICATION_SND\=1\nMOUNT_UMS_AUTOSTART\=0\nMOUNT_UMS_NOTIFY_ENABLED\=1\nMOUNT_UMS_PROMPT\=1\nNETWORK_PREFERENCE\=1\nPREFERRED_CDMA_SUBSCRIPTION\=1\nPREFERRED_NETWORK_MODE\=0\nSEND_ACTION_APP_ERROR\=1\nTHROTTLE_RESET_DAY\=28\nUSB_MASS_STORAGE_ENABLED\=1\nVOICE_RECOGNITION_SERVICE\=com.google.android.voicesearch/.GoogleRecognitionService\nWIFI_DISENABLE_AUTO_CONNECTION_DIALOG\=1\nWIFI_NETWORKS_AVAILABLE_NOTIFICATION_ON\=1\nWIFI_NUM_ALLOWED_CHANNELS\=13\nWIFI_ON\=0\n SHARED_PREFERENCES=default\nserver_address\=imap.gmail.com:993\nbackup_mms\=true\nserver_authentication\=xoauth\nreference_uid\=qx578muulryaljx26rnosdvs\nconnected\=true\nemail_address_style\=name\nbackup_calllog_sync_calendar\=-1\nfirst_use\=false\nmark_as_read_on_restore\=true\nmark_as_read\=true\nupgraded_credentials\=true\noauth_user\=lifanxi@gmail.com\nimap_folder\=SMS\nauto_backup_incoming_schedule\=180\nserver_protocol\=+ssl+\nauto_backup_schedule\=7200\nbackup_sms\=true\nbackup_calllog\=true\nacra.enable\=true\nmax_items_per_sync\=-1\nmax_items_per_restore\=-1\nbackup_calllog_types\=everything\nrestore_sms\=true\nimap_folder_calllog\=Call log\n\n REPORT_SENDER=https://bugsense.appspot.com/api/acra?api_key\=a2603e16

lifanxi commented 12 years ago

I have debugged this problem on 1.4.5.

In CursorToMessage.cursorToMessages, we have this code:

        final Map<String, String> msgMap = new HashMap<String, String>(columns.length);
        for (int i = 0; i < columns.length; i++) {
            msgMap.put(columns[i], cursor.getString(i));
        }

On my phone, when i == 20, it points to the column named "sms_pdu", when doing cursor.getString the exception happens, it seems that this column is BLOB type and cannot be converted to String.

I have quickly workarounded this problem by adding try...catch around msgMap.put(columns[i], cursor.getString(i)); to ignored the columns that causes exceptions. This works fine on my phone.

I'm not sure if this problem happens on how many devices, I have two ZTE phones (U880 and N760) and they are both suffering this problem. If you think this workaround has no side impact to SMSBackup+, I suggest to include this fix in the future releases.

Thank you.

likounin commented 11 years ago

Hi, lifanxi

I met the same problem on ZTE Grand S...

seems the author still not fixed yet?

jberkel commented 11 years ago

@likounin this will be fixed in 1.5.0, release some time this week

likounin commented 11 years ago

@jberkel Hi, the latest 1.5.1 version works all right, thank you!

lifanxi commented 11 years ago

I have verified on 1.5.2. This problem has been solved. Thank you.