Jump to content
Battlefront is now Slitherine ×

Game crash with VxD Issues, etc...


Recommended Posts

Cafard:

You must be monkeying around with your system pretty hard if you have to reinstall that often.

Pawbroon:

THE PROBLEM:

Your issues relate to a mismatched set of DLLs in the Windows System directory. One of the dlls (the virtual memory manager: VMM) has got the wrong address for a function inside another DLL, or some other DLL is trying to call an incorrect address inside the VMM dll.

THE LIKELY CAUSE:

THIS particular bit of fun is because Microsoft always alpha orders the exported functions (and hence their function signatures) in their DLLs for each major rebuild of the OS or its supporting components (like DirectX).

DLL A, version 1 exports:

1. A_Function

2. B_Function

3. D_Function

When Microsoft adds C_Function to that DLLs export list, the new export list looks like the following:

DLL A, version 2 exports:

1. A_Function

2. B_Function

3. C_Function

4. D_Function

Not necessarily bad or evil of its own right (unlike Berlichtingen).

Part B of this equation for disaster is that when Microsoft code calls Microsoft code (this Windows System DLL calling that one), they do so NOT by function name, but by function position in the function export list for the target DLL, as this is much quicker to resolve at runtime inside the operating system.

Some hunk of code that calls dll A, version 1, function #3 will be sorely hurt when dll A, version 2 is the one found in the Windows system directory. Because D_Function isn't at position 3 anymore, it's C_Function now. When the function expected at position X no longer appears at position X, the odds are huge that you'll get low level function signature trouble, as you so painfully know.

When you upgraded IE4 to IE5 for example, a whole boatload of DLLs came along for the ride. This "package" of DLLs forms a coherent set of DLLs who all "speak" the same function positions.

This is why developers of other tools should NEVER call Windows DLLs by function position, because it leaves you at the whim of the Microsoft developers naming conventions. BUT, a number of developers, particularly those hell-bent on speed, do make those calls, and end up having very specific lists of Windows DLL versions that will cooperate with their code.

Piecemeal addition of core Windows System files (from game publishers, hardware vendors, etc) can get you into this type of problem if they are not up to date with the latest technology themselves.

A SOLUTION METHODOLOGY:

(personal history and personal practice which serves me well)

The best way to avoid these types of issues is to keep up to date with the WindowsUpdate, which will inform you of what updates are available, AND will install coherent sets of DLLs that avoid the function signature mismatch.

I'd recommend a clean install, updating your machine with all the recommended updates from Microsoft starting from Service Packs and working down to smaller Windows subsystems like DirectX 8.0.

From personal history, video drivers are the most notorious generators of VxD problems.

Good luck.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...