Prev: start last-open document
Next: serialize args
From: TomChapman on 17 May 2010 14:56 I thought 0047AC19 might be the location address. How do I find what subroutine that equates to? Joseph M. Newcomer wrote: > If 0047AC19 is the address of the instruction that failed, you need to find out what > subroutine that is in. Usually an access fault gives both the address of the failing > instruction and the address that was accessed. Most commonly, the address access is > either < 0xFFFF or some weird address that starts with 0xFEEE???? 0xDFDF???? or 0xCCCC???? > and these are hints as to what went wrong (null pointer, stale pointer, uninitialized > heap, or uninitialized stack, respectively) > joe > > On Mon, 17 May 2010 11:32:39 -0500, TomChapman <TomChapman12(a)gmail.com> wrote: > >> My program occasionally terminates with a memory access violation. The >> description is shown below: >> >> The thread tried to read from or write to a virtual address for which it >> does not have the appropriate access. Error code: 0xC0000005 Exception >> address: 0x0047AC19. >> >> Finding this problem would be easy if I was running the debugger. >> Unfortunately, on the server where this occurs, I can not load the >> compiler and run the debugger. The error doesn't occur when the program >> is run elsewhere. Does the exception address included in the error mean >> something useful? Is there a way for me isolate where in my code the >> error is occurring? >> >> This is a release version of software. I could install the debug version >> if that would help. This is Visual C++ version 6. What can I do here? > Joseph M. Newcomer [MVP] > email: newcomer(a)flounder.com > Web: http://www.flounder.com > MVP Tips: http://www.flounder.com/mvp_tips.htm
From: Joseph M. Newcomer on 17 May 2010 17:30 Use the debugger on a copy of the same .exe image you ship. joe On Mon, 17 May 2010 13:56:19 -0500, TomChapman <TomChapman12(a)gmail.com> wrote: >I thought 0047AC19 might be the location address. How do I find what >subroutine that equates to? > > >Joseph M. Newcomer wrote: >> If 0047AC19 is the address of the instruction that failed, you need to find out what >> subroutine that is in. Usually an access fault gives both the address of the failing >> instruction and the address that was accessed. Most commonly, the address access is >> either < 0xFFFF or some weird address that starts with 0xFEEE???? 0xDFDF???? or 0xCCCC???? >> and these are hints as to what went wrong (null pointer, stale pointer, uninitialized >> heap, or uninitialized stack, respectively) >> joe >> >> On Mon, 17 May 2010 11:32:39 -0500, TomChapman <TomChapman12(a)gmail.com> wrote: >> >>> My program occasionally terminates with a memory access violation. The >>> description is shown below: >>> >>> The thread tried to read from or write to a virtual address for which it >>> does not have the appropriate access. Error code: 0xC0000005 Exception >>> address: 0x0047AC19. >>> >>> Finding this problem would be easy if I was running the debugger. >>> Unfortunately, on the server where this occurs, I can not load the >>> compiler and run the debugger. The error doesn't occur when the program >>> is run elsewhere. Does the exception address included in the error mean >>> something useful? Is there a way for me isolate where in my code the >>> error is occurring? >>> >>> This is a release version of software. I could install the debug version >>> if that would help. This is Visual C++ version 6. What can I do here? >> Joseph M. Newcomer [MVP] >> email: newcomer(a)flounder.com >> Web: http://www.flounder.com >> MVP Tips: http://www.flounder.com/mvp_tips.htm Joseph M. Newcomer [MVP] email: newcomer(a)flounder.com Web: http://www.flounder.com MVP Tips: http://www.flounder.com/mvp_tips.htm
From: David Ching on 17 May 2010 18:51 "TomChapman" <TomChapman12(a)gmail.com> wrote in message news:#cFeEBe9KHA.3176(a)TK2MSFTNGP05.phx.gbl... > My program occasionally terminates with a memory access violation. The > description is shown below: > > The thread tried to read from or write to a virtual address for which it > does not have the appropriate access. Error code: 0xC0000005 Exception > address: 0x0047AC19. > > Finding this problem would be easy if I was running the debugger. > Unfortunately, on the server where this occurs, I can not load the > compiler and run the debugger. The error doesn't occur when the program is > run elsewhere. Does the exception address included in the error mean > something useful? Is there a way for me isolate where in my code the error > is occurring? > > This is a release version of software. I could install the debug version > if that would help. This is Visual C++ version 6. What can I do here? Install a debug version complete with the .pdb files. Run the program until it crashes. Fire up Process Explorer from Sysinternals.com. In the process list, find the crashed process, right click, choose Properties. Look at the Threads tab. You can see the call stack of each thread by clicking the Stack button. The call stack will have function names because of the .pdb files that are present. It's not the same as having a full debugger because you can't see variable values, but at least you can see a symbolic stack frame, and this is really easy to deploy (no installing Remote Debugger, establish network connection, set security permissions, etc.). -- David
From: Cholo Lennon on 18 May 2010 00:09 TomChapman wrote: > RFOG wrote: >> You can do remote debugging. You install the Remote Debugger Monitor >> into server and can debug from your dev machine without problem. >> >> http://support.microsoft.com/kb/241848 >> http://msdn.microsoft.com/en-us/library/y7f5zaaa.aspx >> >> "TomChapman" <TomChapman12(a)gmail.com> wrote in message >> news:#cFeEBe9KHA.3176(a)TK2MSFTNGP05.phx.gbl... >>> My program occasionally terminates with a memory access violation. >>> The description is shown below: >>> >>> The thread tried to read from or write to a virtual address for which >>> it does not have the appropriate access. Error code: 0xC0000005 >>> Exception address: 0x0047AC19. >>> >>> Finding this problem would be easy if I was running the debugger. >>> Unfortunately, on the server where this occurs, I can not load the >>> compiler and run the debugger. The error doesn't occur when the >>> program is run elsewhere. Does the exception address included in the >>> error mean something useful? Is there a way for me isolate where in >>> my code the error is occurring? >>> >>> This is a release version of software. I could install the debug >>> version if that would help. This is Visual C++ version 6. What can I >>> do here? >> > > Than you, but your idea does not help me. My only link to the remote > server is a LogMeIn link. I don't think I could get a remote debugging > link to work. Can't you install the remote debugger monitor? (as RFOG told you)? or don't you have access (local or remote) to the server? Another idea in case you have local access to the server: Is it possible to install on it the "Debugging Tools for Windows? (just 17 mb, http://www.microsoft.com/whdc/devtools/debugging/installx86.Mspx) If so, 1st: generate a .pdb information file for your release version, 2nd: run your program and attach the debugger (WinDbg) to it or just run your program under the debugger. Also check the Adplus.vbs script (installed with Debugging tools for Windows) for an automated process monitoring (see http://support.microsoft.com/kb/q286350) Regards -- Cholo Lennon Bs.As. ARG
From: Geoff on 19 May 2010 07:59
On Mon, 17 May 2010 11:32:39 -0500, TomChapman <TomChapman12(a)gmail.com> wrote: >My program occasionally terminates with a memory access violation. The >description is shown below: > >The thread tried to read from or write to a virtual address for which it >does not have the appropriate access. Error code: 0xC0000005 Exception >address: 0x0047AC19. > >Finding this problem would be easy if I was running the debugger. >Unfortunately, on the server where this occurs, I can not load the >compiler and run the debugger. The error doesn't occur when the program >is run elsewhere. Does the exception address included in the error mean >something useful? Is there a way for me isolate where in my code the >error is occurring? > >This is a release version of software. I could install the debug version >if that would help. This is Visual C++ version 6. What can I do here? This sounds like a classic NULL pointer exception. Build your release version with pdb files turned on. Keep the PDBs on your development machine. Configure the server to create a minidump of the application when it crashes. Do this from My Computer | Properties | Advanced | Startup and recovery. Have the user transmit the minidump file to you after the application crashes. Files are stored in %SystemRoot%\Minidump Open the dump file with Windbg, then execute following commands: !analyze -v ..ecxr kb This should get you the stack information you need to isolate the function where the error is occuring. More information can be found in VC 6.0 help files, look for crash dump. |