"Medland, Bill" Bill.Medland@accpac.com writes:
It looks to me like:
comctl32.dll includes a shared data segment. One of the entries in that segment, presumably during the DllEntry, is populated with the address of GetSystemMetrics
A second copy of comctl32 then tries to use that address to call GetSystemMetrics
Unfortunately the second process has user32 mapped somewhere else and so the call goes somewhere weird and things fall over.
Any ideas as to what we can do about it?
That's a common problem with Win9x dlls. It cannot be completely fixed because we don't control the layout of our address space; there are some hacks that could be done in the loader to make it less likely to happen, but I'm not convinced it is worth the trouble. Our efforts would probably be better spent making sure the builtin versions of the offending dlls work properly.