woody
October 29th, 2005, 16:56
Hi,
I have a problem on an application on few servers I admin whereby I get the error:
Application Error : The instruction at "<some mem location>" referenced memory at "0x00000008". The memory could not be "read".
(which bombs the application out)
It has just started happening and I can't figure out why. I have done all the usualy tests (tested mem with memtest86, uninstalled latest hotfixes, compaired DLL versions / checksums with working systems, even re-built the server, changed hardware), but due to the complexities of the install its been rather difficult to asertain what the problem is. I've turned to Ollydbg to try to see if it can shead any light on what is happening.
The above error is one example of a few errors that I get. The only common feature is that they are all "referencing" memory at very low addresses (sometimes 00000000, 00000030, or 00000080). I've used Ollydbg to find out where the instructions are that are causing these problems, and they are mostly in the MFC42.dll file that the program loads. An example of one of the instructions is:
6C3B7E50 8B06 MOV EAX,DWORD PTR DS:[ESI]
What the problem would be is that the ESI register at that point in time would be un-initiallised (00000000), hence there being a problem.
Unfortunatly I have been unable to get Ollydbg to 'catch' the problem when it occurs as it is not *that* frequent, and there is no re-producable pattern to it.
However (i'm finally getting to my question you'll be glad to hear), I have run Ollydbg on a 'good' system, and it halts the program running quite frequently stating "Access violation when writing to [00000000] - use shift +F7/F8/F9 to pass exception to program". This is also occuring in MFC42. Now this sounds exactly the same as the error I get on the 'bad' servers, yet the application is fine. It continues to run even though I pass the exception to the program. Can anyone explain why the 'bad' servers would not be able to handle such exceptions, yet good ones can.
Any pointers to help me understand what is going on would be great.
Thanks
I have a problem on an application on few servers I admin whereby I get the error:
Application Error : The instruction at "<some mem location>" referenced memory at "0x00000008". The memory could not be "read".
(which bombs the application out)
It has just started happening and I can't figure out why. I have done all the usualy tests (tested mem with memtest86, uninstalled latest hotfixes, compaired DLL versions / checksums with working systems, even re-built the server, changed hardware), but due to the complexities of the install its been rather difficult to asertain what the problem is. I've turned to Ollydbg to try to see if it can shead any light on what is happening.
The above error is one example of a few errors that I get. The only common feature is that they are all "referencing" memory at very low addresses (sometimes 00000000, 00000030, or 00000080). I've used Ollydbg to find out where the instructions are that are causing these problems, and they are mostly in the MFC42.dll file that the program loads. An example of one of the instructions is:
6C3B7E50 8B06 MOV EAX,DWORD PTR DS:[ESI]
What the problem would be is that the ESI register at that point in time would be un-initiallised (00000000), hence there being a problem.
Unfortunatly I have been unable to get Ollydbg to 'catch' the problem when it occurs as it is not *that* frequent, and there is no re-producable pattern to it.
However (i'm finally getting to my question you'll be glad to hear), I have run Ollydbg on a 'good' system, and it halts the program running quite frequently stating "Access violation when writing to [00000000] - use shift +F7/F8/F9 to pass exception to program". This is also occuring in MFC42. Now this sounds exactly the same as the error I get on the 'bad' servers, yet the application is fine. It continues to run even though I pass the exception to the program. Can anyone explain why the 'bad' servers would not be able to handle such exceptions, yet good ones can.
Any pointers to help me understand what is going on would be great.
Thanks