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,
Who is Participating?
I wear a lot of hats...

"The solutions and answers provided on Experts Exchange have been extremely helpful to me over the last few years. I wear a lot of hats - Developer, Database Administrator, Help Desk, etc., so I know a lot of things but not a lot about one thing. Experts Exchange gives me answers from people who do know a lot about one thing, in a easy to use platform." -Todd S.

Hi cediger,

Did you look at your stack when your error occurs?

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.
>>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.
Keep up with what's happening at Experts Exchange!

Sign up to receive Decoded, a new monthly digest with product updates, feature release info, continuing education opportunities, and more.

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.
>  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.

Experts Exchange Solution brought to you by

Your issues matter to us.

Facing a tech roadblock? Get the help and guidance you need from experienced professionals who care. Ask your question anytime, anywhere, with no hassle.

Start your 7-day free trial
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.
It's more than this solution.Get answers and train to solve all your tech problems - anytime, anywhere.Try it for free Edge Out The Competitionfor your dream job with proven skills and certifications.Get started today Stand Outas the employee with proven skills.Start learning today for free Move Your Career Forwardwith certification training in the latest technologies.Start your trial today
System Programming

From novice to tech pro — start learning today.

Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.