BC_Programmer
Thanked: 697 Posts: 15,876
Computer: Specs Experience: Beginner OS: Windows 7

Pinkie Pie is best pony
|
 |
« Reply #17 on: December 26, 2011, 12:20:53 AM » |
|
On my Win7 System:
C:\Windows\System32>dumpbin /exports msvcrt.dll | find /i "_except_handler4_common" 346 159 00023E27 _except_handler4_common
File Version of the file is 7.0.7600.16385
running the same command on a fully patched XP SP3 system- I get nothing. No _except_handler4_common is exported in the XP version. (file version for that one is 7.0.2600.5701, btw).
I also tried installing the VC++ 2008 and 2010 redistributables but neither one updated the file.
However. The exception function being called clearly marks it as a Exception handler; the number (4) and the fact that there are in fact similar exports for 3, 2, and 1 in the file led me to believe that it may be that the file msvcrt.dll isn't considered to be part of the c-runtime (in fact, most systems I've seen, it is only updated by the OS or service packs). So, those wouldn't be changed regardless. This leads me to think (further) that it's related to a compile-time option, whereby you can choose to either statically link the C Runtime, or dynamically link to it as a dll, in the latter case, most programs will link against msvcrt.dll- and thus the problem, since depending on the version of the C run-time .lib file that is being used, it will try to link against functions that don't exist in earlier versions of windows.
The answer, from what I can gather, is that the programs were compiled wrong. they aren't supposed to link against msvcrt.dll- they should be linking against msvcr80.dll (or the appropriate version for the compiler in use). msvcrt.dll is only to be linked against by window applets and components. Additionally, it should not be updated by anything other than service packs or KB hotfixes. (this includes things like the redistributables).
The problem therefore, has several causes- either the software is stupidly(not surprising given the software in question) linked against msvcrt.dll for no good reason, or, more likely, there is some other component or DLL copied from a Vista system onto the XP system, possibly in the hopes of "upgrading" it, and of course the Vista/7 file depends on the Vista/7 OS version of the dll.
|