By using this site, you agree to our updated Privacy Policy and our Terms of Use. Manage your Cookies Settings.
449,402 Members | 1,107 Online
Bytes IT Community
+ Ask a Question
Need help? Post your question and get tips & solutions from a community of 449,402 IT Pros & Developers. It's quick & easy.

Student requires urgent help! Debug Assertion Failed error

P: n/a
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
Jul 22 '05 #1
Share this Question
Share on Google+
6 Replies


P: n/a
Uzytkownik "Cormac" <bo****@csn.ul.ie> napisal w wiadomosci
news:40**************************@posting.google.c om...
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

Jul 22 '05 #2

P: n/a
Uzytkownik "Cormac" <bo****@csn.ul.ie> napisal w wiadomosci
news:40**************************@posting.google.c om...
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

Jul 22 '05 #3

P: n/a
Cormac wrote:
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

Jul 22 '05 #4

P: n/a
Cormac wrote:
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

Jul 22 '05 #5

P: n/a
Cormac wrote:
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
--
My email address is valid, but changes periodically.
To contact me please use the address from a recent posting.
Jul 22 '05 #6

P: n/a
Cormac wrote:
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
--
My email address is valid, but changes periodically.
To contact me please use the address from a recent posting.
Jul 22 '05 #7

This discussion thread is closed

Replies have been disabled for this discussion.