It's certainly not the "fault" that is wrong about an invalid page fault. A page fault is not really a fault; it's part of the workings of the "memory manager", which on its turn is part of Windows' Virtual Memory Manager (VMM), also called the Virtual Machine Manager. The VMM is incorporated in a virtual device driver, Vmm32.vxd.
The VMM allows applications to address more memory space than your RAM actually has, and it uses paging to accomplish this. For example: if you have 32 Mb of RAM, the VMM can make your applications believe that there is 80 Mb of memory, or even more, depending on what is necessary. It creates a swapfile on your hard disk (Win386.swp, in the Windows folder and variable in size) in which it stores pieces of memory that would normally reside in the RAM. Those pieces, 4 Kb each, are called pages.
Code and date are loaded in the virtual memory, i.e. RAM and swapfile. If a page that is on disk is needed by a process, the processor generates a page fault and the page will be paged into physical memory (RAM). When an application causes an invalid page fault in a module, it means that it tried to load a page into an address space that was occupied by the module, which should run in a protected memory space anyway. If the module belongs to the Windows Kernel, it is likely that not just the application, but the operating system will crash. The real question is: How and why does the application cause the invalid page fault? It could be a bug, or just a badly written application, or even a corrupted Vmm32.vxd. Anyhow it should be clear that is it probably not the module itself.
|