Thursday, November 4, 2010

CyanogenMod 6.0.2 - Email Force Close

This week I managed to brick my phone, then with help unbrick it, and like an ID10T, I messing with it again.

After getting it fixed yesterday, I reinstalled CyanogenMod 6.0.2. Lo and behold, those Email Force Close errors showed up again. Great.

Fortunately I use GMail, so it doesn't really affect me, but it is very annoying.

With a trick I learned yesterday, I decided to see what was going on.

The trick is the Android Debug Bridge, or ADB. Among other things, it allows you to run shell commands on your phone. Since I have had Ubuntu for close to 2 years now, I'm naturally a Linux expert (quit laughing).

The specific command I am talking about is logcat. You plug your phone in, run adb logcat and you can see what's going on...it's a log file.

With it turned on, I went to applications and selected Email.



Sorry! The application Email (process com.android.email) has stopped unexpectedly. Please try again.

I then checked the log output...and what could it be? I'm thinking it's some sort of java error, but after reading more closely...
I/Database(19754): sqlite returned: error code = 1, msg = no such column: accountColor
D/AndroidRuntime(19754): Shutting down VM
W/dalvikvm(19754): threadid=1: thread exiting with uncaught exception (group=0x4001d7e0)
E/AndroidRuntime(19754): FATAL EXCEPTION: main
What's that? Database? Really?

A little further down:
E/AndroidRuntime(19754): java.lang.RuntimeException: Unable to create service 
com.android.exchange.SyncManager: android.database.sqlite.SQLiteException: no such column:
accountColor: , while compiling: SELECT
_id,
displayName,
emailAddress,
syncKey,
syncLookback,
syncInterval,
hostAuthKeyRecv,
hostAuthKeySend,
flags,
isDefault,
compatibilityUuid,
senderName,
ringtoneUri,
protocolVersion,
newMessageCount,
securityFlags,
securitySyncKey,
signature,
accountColor
FROM Account
(formatted for better readability)

So someone forgot to add a column? Nice.

Now I know I can put a database on there, I'll be more likely to write something for it. :)

7 comments:

  1. This is truly odd. Are you using the stock Mail app? I use that w/o any issues in Cyanogen 6.0. Maybe it's fixed in 6.1 (now RC)?

    SQLite databases are pretty common. Firefox versions after 3 deploy one for profile data, see here: http://theappslab.com/2009/06/15/i-like-shiny-things/

    You should apply your DBA-fu to mobile dbs.

    ReplyDelete
  2. I'm using whatever was default. GMail works just fine, it's just that one app.

    IIRC, when researching my other issues, I ran across a fix out there for it...but I don't plan on applying it just yet (i have actual work to do).

    I think development on there would be fun. Seems to be packaged nicely via Eclipse (i.e. really easy to deploy). Running a database on the phone would be cool...even cooler, get Oracle up and running on the thing. :)

    ReplyDelete
  3. I think the full blown DB is just a little too much. But "Oracle Berkeley DB 11g Release 2 introduces support for the Android platform"

    http://www.oracle.com/us/corporate/press/063695

    Given the lawsuit against Google though maybe Android won't be a platform of choice. Maybe next year Larry will introduce the ExaPhone that allows 30 concurrent conversations over an Infiniband link while still running a couple of app servers in the background.

    ReplyDelete
  4. Looks to me like you have your fix, then. If you have cmdline access to your 'droid, should be pretty simple to add a the column to the sqlite table and make the error go away. ;-)

    ReplyDelete
  5. @jp

    lol...that's awesome! hadn't even thought of that...$10 says that's not the only one, it's just the first one...but a very intriguing idea!

    ReplyDelete
  6. Also, learning to tinker with SQLite can be useful for other things, like Chrome and Firefox cookie extraction for OTN downloads:

    http://only4left.jpiwowar.com/2010/04/wget_otn_downloads/

    ReplyDelete