October 3, 2005

The Downside of Shims

As some of you may know, Microsoft has included a "shim" mechanism in Windows XP.

This mechanism lets Microsoft drop in "compatibility" fixes for older Windows products. Unfortunately, there can be issues.

I've been spending the last week trying to track down a bug in the original "SiN" that only manifests itself on certain configs with Windows XP Home SP2 German Edition. The application crashes on launch. We haven't been able to reproduce this bug internally.

I finally just sent off a copy of "Dependency Walker" to the person experiencing the crash because the address that was being reported for the crash wasn't anywhere near our code. ("Dependency Walker," aka depends.exe is a tool that ships with Visual Studio, but can also be downloaded from the official website.)

I had him open "sin.exe" using File->Open, then had him go Profile->Start Profiling. The next instruction was to make sure that everything was checked, and for him just to hit "OK." After it crashed, I had him save out a .dwi file using File->Save, and had him send me the .dwi file.

Turns out the access violation was occuring in ACGENRAL.DLL, the Application Compatibility manager. It seemed to occur when UXTHEME.DLL was loaded by a second thread.

End result: this is a customer that I can't help. I don't know what ACGENRAL.DLL is doing, so we can't work around it. I can't reproduce the issues locally to try to trace through it. There is literally nothing I can do.

So beware the shim...it may not always help.

1 comment:

Drogo said...

as opposed to the MS Shill, which you can safely ignore :) (Ok, ok, so it's early and I'm not quite fully awake yet... a dangerous combination when leaving comments)