Application Error -> CArray::Serialize

Posted on 2005-03-02
Medium Priority
Last Modified: 2013-11-20
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,
Question by:cediger
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 3
  • 2
LVL 30

Expert Comment

ID: 13441243
Hi cediger,

Did you look at your stack when your error occurs?


Author Comment

ID: 13441342
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.
LVL 30

Expert Comment

ID: 13441384
>>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.
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!


Author Comment

ID: 13441544
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.
LVL 14

Accepted Solution

wayside earned 375 total points
ID: 13442580
>  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.

Author Comment

ID: 13443695
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.

Featured Post

On Demand Webinar: Networking for the Cloud Era

Ready to improve network connectivity? Watch this webinar to learn how SD-WANs and a one-click instant connect tool can boost provisions, deployment, and management of your cloud connection.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Introduction: Database storage, where is the exe actually on the disc? Playing a game selected randomly (how to generate random numbers).  Error trapping with try..catch to help the code run even if something goes wrong. Continuing from the seve…
Introduction: Dialogs (1) modal - maintaining the database. Continuing from the ninth article about sudoku.   You might have heard of modal and modeless dialogs.  Here with this Sudoku application will we use one of each type: a modal dialog …
This video will show you how to get GIT to work in Eclipse.   It will walk you through how to install the EGit plugin in eclipse and how to checkout an existing repository.
Have you created a query with information for a calendar? ... and then, abra-cadabra, the calendar is done?! I am going to show you how to make that happen. Visualize your data!  ... really see it To use the code to create a calendar from a q…
Suggested Courses
Course of the Month11 days, 20 hours left to enroll

752 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question