ActiveSync and the number of threads in wcescomm.exe

Posted by

Am I the only who hates Active Sync? It’s the most intrusive piece of software ever. Not so much in terms of the UI (which is actually nice and simple) but just in terms of the fact that it seems to tightly coupled to the operating system. I mean, I’ve already explained how I hate programs that ask you to reboot when they update themselves – especially when they’re not an integral part of the operating system.

So why would Active Sync be any different? I remember when I installed the latest version, it apparently even updated my USB drivers! What would the USB drivers have to do with a program that just sits on top of USB?

Anyway, I was looking through Process Explorer the other day and I noticed something else:

wcescomm.exe in Process Explorer

Why on Earth would it need 131 threads? Looking on the Properties page in Process Explorer, most of those threads seem to blocked on a call to accept() - so why is there so many of them? You only need one thread (maybe two) in an accept() call, so why do they have almost 100? It’s insane!

Also notice the Virtual Size column – it says wcescomm.exe is using 180MB of Virtual Memory. Can you guess where most of that is going? The default stack size in Windows is 1MB, and every thread has their own stack... so 131 x 1MB = 131MB just of stack. And since most of the threads aren’t doing anything, that’s 131MB of wasted space!

I just don’t get it. I mean, Active Sync should have been a very simple application. All it needs is a simple interface for applications (like Outlook) to plug into, to provide synching of their address book and so on, and then another custom process on the Windows CE device to handle that end of the communication. I know it’s got some Internet pass-through features as well, but again, most of the work for that would be done on the device, surely.

So why does Active Sync have to be such an intrusive, memory-hogging dog?

blog comments powered by Disqus