Student requires urgent help! Debug Assertion Failed error

C

Cormac

Hi everyone,

I'm writing Pure Data externals in C++ using Ms Visual C++ 7.0 and
Windows2000. I'm running motions sensor hardware so there's a bit of
real time data processing involved.

When I'm running my objects in Pure Data, I get an assertion failure
after a few seconds of running the motion sensors and I can't seem to
get rid of it. The error occurs in the expression _CrtCheckMemory().
Could anyone provide some possible solutions?

Many thanks,
Cormac
 
M

Marcin Kalicinski

Uzytkownik "Cormac said:
Hi everyone,

I'm writing Pure Data externals in C++ using Ms Visual C++ 7.0 and
Windows2000. I'm running motions sensor hardware so there's a bit of
real time data processing involved.

When I'm running my objects in Pure Data, I get an assertion failure
after a few seconds of running the motion sensors and I can't seem to
get rid of it. The error occurs in the expression _CrtCheckMemory().
Could anyone provide some possible solutions?

You overwrite memory somewhere in your code. _CrtCheckMemory() in debug
builds of VC++ 7.0 checks the consistency of the heap. Because it asserts -
the heap is corrupt. The assertion message probably contains more detailed
information - i.e. where the corruption occured (but not when). In general,
tracking down this kind of bug is hard, and this is probably one of the
worst symptoms of bug you can have in C++. It's sometimes called CoreWars
:).

It can be caused by writing outside an array, by using members of object
that has been deleted (common cause), by deleting object more than once, and
by multitude of other "undefined behavior" actions that you can do in C++.

I suggest you quickly review the code that you recently changed to determine
if you haven't introduced any pointer-related bugs. If it does not help, you
might try pinpointing down the exact address where the corruption occurs,
and check the contents of corrupt memory. Usually it will contain rubbish
(some pointers, floating point numbers etc.). You can try to identify that -
for example if it is a floating point number or a C string - you may
succeed. Then, you'll have a clue where to look for corruption source.

If this fails, you can try setting a memory-access breakpoint in this place
(Visual C++ 7.0 has this feature in IDE). You'll get debug break anytime the
memory is changed. By enabling and disabling the breakpoint in "clever" way,
provided that you have enough patience and time, you may pinpoint the moment
where the memory is actually corrupt.

<OT>
If this fails, switch to Java or C# and rewrite the project :)
</OT>

Good luck,
Marcin
 
T

Thomas Matthews

Cormac said:
Hi everyone,

I'm writing Pure Data externals in C++ using Ms Visual C++ 7.0 and
Windows2000. I'm running motions sensor hardware so there's a bit of
real time data processing involved.

When I'm running my objects in Pure Data, I get an assertion failure
after a few seconds of running the motion sensors and I can't seem to
get rid of it. The error occurs in the expression _CrtCheckMemory().
Could anyone provide some possible solutions?

Many thanks,
Cormac

My crystal ball says that your problem is on line 123 in the
third source file. Fix that and all shall be well.

Since my crystal ball may be wrong, post the minimal compilable and
executable source code that recreates the problem. Other than that
try using "print" statements to see where the memory leak is.

--
Thomas Matthews

C++ newsgroup welcome message:
http://www.slack.net/~shiva/welcome.txt
C++ Faq: http://www.parashift.com/c++-faq-lite
C Faq: http://www.eskimo.com/~scs/c-faq/top.html
alt.comp.lang.learn.c-c++ faq:
http://www.raos.demon.uk/acllc-c++/faq.html
Other sites:
http://www.josuttis.com -- C++ STL Library book
 
K

Kevin Goodsell

Cormac said:
Hi everyone,

I'm writing Pure Data externals in C++ using Ms Visual C++ 7.0 and
Windows2000. I'm running motions sensor hardware so there's a bit of
real time data processing involved.

When I'm running my objects in Pure Data, I get an assertion failure
after a few seconds of running the motion sensors and I can't seem to
get rid of it. The error occurs in the expression _CrtCheckMemory().
Could anyone provide some possible solutions?

Short answer: You should have used standard containers instead of 'new'
(although this can also happen if you mis-use containers -- a good
debugging version of the standard containers helps).

Explicit memory management is a bitch, and debugging the problems that
arise from it is even worse.

-Kevin
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,744
Messages
2,569,484
Members
44,903
Latest member
orderPeak8CBDGummies

Latest Threads

Top