Thursday, 23 May 2013

More issues with iTunes 11.0.3

Please read this carefully.

We have a release candidate for BitPerfect 1.0.7 which addresses the problems we have reported with iTunes 11.0.3 and I have been testing it myself all day on two systems, one using iTunes 11.0.3 and the other using iTunes 11.0.2.  If our Beta Team blesses it, and Apple approves it, it will be available soon as a free update.

1.0.7 has been performing flawlessly for me all day, on both systems, with no problems whatsoever.  But suddenly, in the late afternoon, the original problem returned again with a vengeance, completely out of the blue.  At least it appeared that way.  I won't take you through the diagnostic process blow-by-blow, but instead I will present you with my conclusions.

Basically, if I took BitPerfect out of the picture completely, and played music using iTunes alone, what I observed was that playback of a track would proceed normally, but the track position indicator would remain frozen at 0 seconds.  When this happens with BitPerfect playing, after a few seconds BitPerfect interprets this as the user having manually returned the track position slider to the zero position, and re-starts playback of the track from the beginning.  If the track position slider continues to stay frozen at the zero mark, the track will continue to repeat ad nauseam from zero.  This is the same thing that used to happen before we made the fix, except that instead of the track position slider staying at zero, the call to Apple Scripting Bridge to return the track position was returning a garbled value that BitPerfect was interpreting as zero.  This is different behavior entirely, but with an identical outcome.

My music is located on a NAS, and the NAS is in turn accessed via an ethernet hub.  iTunes must load every tune over ethernet.  What seems to be happening is that my ethernet hub is in the process of failing.  If I cold boot it, everything seems to start working perfectly for a while, and then all of a sudden the problem returns.  My Mac is a ~2009 Mac Mini with an Intel dual-core processor.  Our best interpretation of what is happening is that iTunes 11.0.3 runs a more tightly thread-based execution model.  If the ethernet connection is flaky (either because your hub is flaky, or maybe because you are running a WiFi connection with a low signal or unexpected interference) then one core is busy running the music playback, and iTunes spawns another thread to manage the housekeeping tasks such as updating the track position slider.  However, this thread wants to run on the other core, which is busy trying to manage a non-responsive ethernet connection.  If I move the music off the NAS and onto the local HD, the problem immediately goes away.

I have no idea whether this is a very specific problem to my own configuration, or if other users might also see something similar.  Generally speaking, anybody with an older Mac, which is doing something - anything, really - that ties up one core and won't release it, could experience this problem.

That represents our initial take on what we are observing.  It may end up being totally wrong, so don't take it as gospel.  But in any case I thought it was worth reporting, since the symptoms for BitPerfect users would appear at first to be the same as those associated with a known BitPerfect problem (which we have since fixed).  If you suspect you are seeing the same problem, just try quitting BitPerfect and playing music the normal way without it.  Watch the track position slider and make sure it is behaving normally.