Tuesday, April 10, 2012

How to get a bug fixed...


I've been meaning to do a post like this for a little while and with the last update, this seems to be a good time.

If something happens inside the app that causes it to crash, you'll probably see a window like this:


The important thing to do is hit that "Report" button.  I think that a lot of users don't even consider that as think it probably goes off to Google and into a list of a million other reports never to be read.  That certainly is the case for the Microsoft windows version of this screen.  However with Android, these reports come to developer and can be seen in the development console:


The 4 that I have outstanding are minor and happen infrequently, I've left them as "New" so I don't forget about them.  Each of the reports contain a stack trace (what functions were called before the application crashed).  For example, the bug that was fixed for Monday here's part of the stack trace:


Even if you don't understand everything (I don't always either), the important pieces are:
  • The app version
  • When it happened
  • How often it happens
  • What happens (a null exception in this case)
  • Where it happens (class name, file and most importantly line number)
The other bit of information that comes along is provided by the user.  When you tap the Report button you're given a chance to include a note of what you were doing (you could also include beer suggestions or your thoughts on Hockey or Soccer teams).  These notes are optional and not nessacary, but the user who sent in this report also sent a good note on what they were doing.
attempted long press set action on second dock of 4th icon to Music App
This defiantly helps me re-create the bug, but wasn't as important in this case.  Looking at the code I realized what had happened on line 512.  I had a check to make sure that I wasn't going to go out of bounds on my list of buttons and if something caused the buttons to go out of bounds, I cleared everything, displayed a toast message and reloaded the list of buttons.  As far as I can tell that's what happened to this user and instead of exiting when the reload was called it continued on (I missed an exit call).  Which then caused the null error.  The fix for this was very simply to add the exit call.

Hopefully this gives a little insight on how things work behind the curtain.

Tuesday, April 3, 2012

It's been rough...

Since March 13, I've had make a number of releases, sadly only one was a new feature, so just to make a quick refresher of what's been fixed:

  • 1.0.0.20 -- Brought a fix for the application not launching when it was not in a dock (the details were in the last post)
  • 1.0.0.21 -- This was the release of the tablet mode feature (details also in the last post).
  • 1.0.0.22 -- A number of code "fixes"
    • I spent some time with the theme down loader.  This is a good example of me not knowing what I was doing when I wrote it (not that I completely know what I'm doing now).  
      • I moved some code out into threads to avoid Application Not Responding reports 
      • I made some changes to how the dialogs were handled
      • I also localized some strings (I am working on getting everything localized)
    • I also got a report of an infinite spinning dialog when loading the album list which lead me to redo how I did the dialogs for the preference window (making things uniform with the theme down loader)
    • I also fixed the dialogs with slide show (another source of crash logs)
  • 1.0.0.23 -- My changes to the preferences caused a problem with the color picker which resulted in quick release.
  • 1.0.0.24 -- Fixed a problem with the themes loading incorrectly.  Which was pretty much there since the release of the tablet mode release.  The problem (for non scrolling dock users) would cause an icon to be loaded into the dock background instead of it's proper place.  The problem was just some really hard to read code and not being able to flush out all the situations where to use the tablet mode dock background vs the regular dock background.  There were some misorginized parentheses as well.
That should bring us to where we are now... What looks to be a pretty stable release that I can start to build on again.  The stabilization of the code shows in the stats that Google provides me.  Since the release of version 1.0.0.24 I've gained about 100 users in 5 days, and previous to that the amount of active installs stayed pretty level and looking back to the releases that had issues, there were points that I lost users.

I am hopefully going to start on something new here soon and that and that will include two other minor fixes.  One of which is upgrading the PayPal SDK.  It's very frustrating to get error logs and they are related to some random issue with the PayPal code that I don't have control over.