Vista vs. Julian. Round 4.

published: Fri, 27-Apr-2007   |   updated: Mon, 18-Feb-2008

The irritating thing about last night's post was that immediately after writing it and publishing it to the website, the ghost in my machine awoke form its slumber and red-lined both CPUs at 100%. It was playing with me, taunting me. It was trying to show who was boss. Suddenly it came to me: when you have a ghost, who you gonna call? Ghostbusters!

Never let it be said that I can't mix metaphors, literary or cinematic. I unpacked my vorpal sword from the bottom of the closet, and went a-seeking the manxome foe.

First things first. This morning was bright and sunny in Colorado Springs. In my office, iTunes was playing The Orb's Adventures Beyond the Ultraworld, both Messenger and Trillian were live and waiting for messages, and Outlook was proffering its usual eclectic early morning mix of emails. All was good, and I was determined that the day was going to be stress-free.

The phone rang. I hit the key that paused the music, and answered. A customer. Call over, I hit the key again to unpause the music. Nothing happened. Weird. The system was responsive, the ghost hadn't started that trick yet. But anything out of the usual was cause for caution. The vorpal blade whispered out of the sheath.

I restored iTunes. Hitting the play/pause key on the keyboard caused the play/pause button in iTunes to change state: play, pause, play, pause. No issue there. It was just that in play mode, iTunes was stuck. The time played and time remaining just didn't change. It was as if the event handler had become disconnected from the button.

I started up Windows Media Player (WMP), selected a track and clicked the play button. Exactly the same effect: during play mode the player was frozen. Nothing played. Two music programs that suddenly couldn't play music? I went to the Services window and looked for something to do with audio; Windows Audio, that'll do. I tried to stop the service only to be told the service wasn't accepting any commands. Fishy.

Nothing for it but to reboot. I hit shutdown, and after several seconds the applications still running screen came up. There was a program that was taking too long to terminate. The program? Windows Explorer. And the reason for its delay? It was trying to play the shutdown sound. Now I had three independent programs that couldn't play sounds, and the Audio service, their common denominator, was too busy to respond to service commands. Snicker-snack!

I sat in uffish thought before I rebooted. What should I do? First, I should test to see if I could reproduce the effect. Maybe it was a one-off. So I rebooted and started everything up again and started my work again. After a few tracks, I clicked the pause button to pause the music, and then clicked it again to start it playing. It worked. Damn. I tried the key on the keyboard. Worked fine. Double damn. I sat back and wondered what to do next. Suddenly iTunes started stuttering and finally stopped. The ghost had reappeared and flat-lined the CPUs at 100%. This time I decided to leave it well enough alone, and went to get some cash from the ATM and lunch.

After I came back the Mystify screen saver was drawing all over the screen. But neither the play/pause key or button would cause iTunes to play music. I started WMP and verified that it too wouldn't play any music. The bug had returned. Time for another reboot, and again the shutdown process complained about Explorer not terminating in time.

O frabjous day! I seemed to have trapped the ghost whiffling in some tulgey corner. Now to see it in full glory...

Since it seemed to be something to do with audio, I decided that on this reboot I would unplug my M-Audio Fast Track USB from the port and just leave the onboard audio as the only audio device. I started everything up again, and set iTunes playing. I did more work with emails and testing the next release of CodeRush and Refactor. After about an hour, there had been no problems.

I decided to plug the Fast Track in and see what happened. Well, after a little while the CPU utilization started to creep up and soon red-lined at the 100% mark. Time to kill the OS.

This time I plugged the Kensington Dock into the USB port instead of the Fast Track. It too has an audio capability. And lo and behold the problems started to occur. I killed the OS again and rebooted. This time I wanted to see how long it would go before anything happened.

Well it's been nearly five hours and I'm now typing up this blog post. It seems very obvious to me that the issue is within the audio system in Windows Vista, more specifically within the USB audio subsystem. It doesn't seem likely it's in the drivers: both drivers are from different companies (unless they were both written from an example provided by the Microsoft Windows Audio team and both have the same bug, of course). Equally unlikely is that somehow both of my USB audio devices are broken (in fact, they work on my old tablet, so it can't be that.) So, I've left with the assumption that the cause of all my problem is the USM Audio support in Windows Vista.

For now, I'm leaving the Fast Track disconnected and monitoring for driver updates.

{Aside: in all this monitoring of CPUs, processes, services, memory usage, and the like, I've noticed that PCMService.exe (the Cyberlink PowerCinema Resident Program), which is part of the Dell Media Center, has a particularly nasty memory leak. On this laptop, it gobbles up 12MB memory every 5 minutes. That's 2.4MB per minute or 144MB per hour. In the past 5 hours, it's grown to over 700MB. God knows what it's doing, but at this point I don't give a damn: it's gone. All mimsy were the Bucknalls.]

[Aside 2: many thanks are due to Davy Landman for pointing me to the performance diagnostics event log at Applications and Services\Microsoft\Windows\Diagnostics-Performance\Operational. Although it didn't help this time around, I know where to go when things get sluggish in the future. By the way, if you have Vista and haven't explored the new event logging subsystem, you owe it to yourself to have a poke around in there. It's much, much better than the old XP event logs.]