Want to protect your cyber security and still get fast solutions? Ask a secure question today.Go Premium

x
  • Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 318
  • Last Modified:

Application Error -> CArray::Serialize

I have an application that keeps failing.  And I'm not exactly sure what is causing it.  In the event viewer there is an Application Error event giving the faulting applicaiton, faulting module and faulting address (0x00017d87).  I set the project setting to create a MAP file and recompiled the application.  I looked in the MAP file and the function that address is in is CArray::Serialize.  My application does not call Serialize anywhere, so I must not understand CArray (CObject) completely.  Does CArray call Serialize when it adds or removes elements or what am I missing?

Any assistance is appriciated!
Thank you,
Cameron.
0
cediger
Asked:
cediger
  • 3
  • 2
1 Solution
 
AxterCommented:
Hi cediger,

Did you look at your stack when your error occurs?

Cheers!
0
 
cedigerAuthor Commented:
The only way I know how view the stack is through a Dr Watson log file.  Last week I configured dr watson to report a full crash dump but a dr watson log file is not created when my program crashes.
0
 
AxterCommented:
>>The only way I know how view the stack is through a Dr Watson log file.  Last week I configured dr watson to report a full crash dump but a dr watson
>>log file is not created when my program crashes.

You can view the stack from VC++ itself.

Run the program from VC++, and when you get a compile error press (ALT+7)

Or select from the main menu [View]->[Debug Windows]->[Call Stack]

That will display your stack.
0
Technology Partners: We Want Your Opinion!

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

 
cedigerAuthor Commented:
This is actually on a production system so VC++ is not installed.  I have not been able to recreate this problem in our test environment.
0
 
waysideCommented:
>  faulting address (0x00017d87).

This is an absolute address, and being below the normal start address of  0x00400000 indicates your fault address is not in the code section of your program. Meaning, your program has clobbered memory somewhere and you are trying to execute data.

If you are dynamically linking, MFC libraries typically have base addresses of 0x7C000000 or thereabouts, so if you were dying in an MFC function you should see an address higher than this. If you are statically linking, the address would have to be higher that the base address (which you can see with the dependency checker, although unless you set this explicitly during linking, it will be 0x00400000).

Are you using the "rva+base" column of the map file to find the address?

One thing you can try (if allowable) is installing the remote debugging tools on your production system (very small) and attach to the program in your debugger. When it crashes you should get a stack trace, which you can use your map file to figure out.
0
 
cedigerAuthor Commented:
That's interesting.  I am statically listening.  So I know it has nothing to do with the CArray::Serialize then.

> Are you using the "rva+base" column of the map file to find the address?

No, I was looking at the Address column on the left.  If I take that address (0x00017d87) and look at the Rva+Base column (00417d87), that is one of the functions that I think the failure could be in.  I will see  if I can get the remote debugging set up and see if that will help.
0

Featured Post

Industry Leaders: We Want Your Opinion!

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

  • 3
  • 2
Tackle projects and never again get stuck behind a technical roadblock.
Join Now