Velocity Reviews - Computer Hardware Reviews

Velocity Reviews > Newsgroups > Programming > C Programming > Stack overflow and memory problem?

Reply
Thread Tools

Stack overflow and memory problem?

 
 
Yvad
Guest
Posts: n/a
 
      11-04-2005
When I encounter software crash, the software always pop-up something
like " The instruction at "0x1000a1eb" referenced memory at
"0x000000c0". The memory could not be "read"".
Then Visual C++ will ask me whether to debug the program(in assembly).

My friend told me it is mostly cause by stack overflow. Is he right?
And is there any document on how to debug it?

And how to avoid this bug in C and C++?

All the best,
Davy

 
Reply With Quote
 
 
 
 
Gordon Burditt
Guest
Posts: n/a
 
      11-04-2005
>When I encounter software crash, the software always pop-up something
>like " The instruction at "0x1000a1eb" referenced memory at
>"0x000000c0". The memory could not be "read"".
>Then Visual C++ will ask me whether to debug the program(in assembly).
>
>My friend told me it is mostly cause by stack overflow. Is he right?
>And is there any document on how to debug it?
>
>And how to avoid this bug in C and C++?


There are a number of reasons you could get a crash like this.
Stack overflow is pretty far down the list.

- Dereferencing NULL pointers
- Dereferencing uninitialized pointers.
- Array subscript out of range
- calling free() on a pointer not returned by malloc(), or free()ing
something twice
- Writing off the end of an array into a pointer variable, which
is then used.

The low value for the memory address referenced suggests the
possibility of dereferencing a NULL pointer to a structure:
((struct foo *)NULL)->bar
but it's difficult to be sure.

Gordon L. Burditt
 
Reply With Quote
 
 
 
 
Zara
Guest
Posts: n/a
 
      11-04-2005
On Fri, 04 Nov 2005 07:12:01 -0000, http://www.velocityreviews.com/forums/(E-Mail Removed) (Gordon
Burditt) wrote:

>>When I encounter software crash, the software always pop-up something
>>like " The instruction at "0x1000a1eb" referenced memory at
>>"0x000000c0". The memory could not be "read"".
>>Then Visual C++ will ask me whether to debug the program(in assembly).
>>
>>My friend told me it is mostly cause by stack overflow. Is he right?
>>And is there any document on how to debug it?
>>
>>And how to avoid this bug in C and C++?

>
>There are a number of reasons you could get a crash like this.
>Stack overflow is pretty far down the list.
>
>- Dereferencing NULL pointers
>- Dereferencing uninitialized pointers.
>- Array subscript out of range
>- calling free() on a pointer not returned by malloc(), or free()ing
> something twice
>- Writing off the end of an array into a pointer variable, which
> is then used.
>
>The low value for the memory address referenced suggests the
>possibility of dereferencing a NULL pointer to a structure:
> ((struct foo *)NULL)->bar
>but it's difficult to be sure.
>
> Gordon L. Burditt



Yes, almost every time I have a crash lihe that ina program, it comes
form dereferencing a NULL pointer.

-- Zara
 
Reply With Quote
 
tony_in_da_uk@yahoo.co.uk
Guest
Posts: n/a
 
      11-04-2005
Gordon's listed many plausible causes. Further, try adding debug
information to your program, and you shouldn't have to look at it in
assembly, making it much easier to understand the error. Tony

 
Reply With Quote
 
EventHelix.com
Guest
Posts: n/a
 
      11-04-2005
The crash you are experiencing could be due to any number of reasons.

The following articles might help:

http://www.eventhelix.com/RealtimeMa...re_crashes.htm

http://www.eventhelix.com/RealtimeMa..._crashes_2.htm

--
EventStudio System Designer 2.5 - http://www.EventHelix.com/EventStudio
Sequence Diagram Based System Design and Object Modeling Tool

 
Reply With Quote
 
Jugoslav Dujic
Guest
Posts: n/a
 
      11-04-2005
Gordon Burditt wrote:
|| When I encounter software crash, the software always pop-up something
|| like " The instruction at "0x1000a1eb" referenced memory at
|| "0x000000c0". The memory could not be "read"".
|| Then Visual C++ will ask me whether to debug the program(in assembly).
||
|| My friend told me it is mostly cause by stack overflow. Is he right?
|| And is there any document on how to debug it?
||
|| And how to avoid this bug in C and C++?
|
| There are a number of reasons you could get a crash like this.
| Stack overflow is pretty far down the list.
|
| - Dereferencing NULL pointers
| - Dereferencing uninitialized pointers.

In this particular case, probably dereferencing 0xc0 pointer ,
which is equally fatal as NULL. Also, address of the instruction
suggests that this is probably somewhere in startup code of a Dll
(default base adress 0x10000000).

<I'm not sure why clc and clc++ are in newsgroup list>

--
Jugoslav
___________
www.xeffort.com

Please reply to the newsgroup.
You can find my real e-mail on my home page above.
 
Reply With Quote
 
Stephen Kellett
Guest
Posts: n/a
 
      11-04-2005
In message <(E-Mail Removed) .com>,
EventHelix.com <(E-Mail Removed)> writes
>The crash you are experiencing could be due to any number of reasons.
>
>The following articles might help:
>
>http://www.eventhelix.com/RealtimeMa...re_crashes.htm
>
>http://www.eventhelix.com/RealtimeMa...ing_software_c
>rashes_2.htm


If you've read those two URLs you'll be aware of memory corruption,
buffer overruns, uninitialised variables and also flow tracing. Two
products that can help with these issues are Memory Validator and Crash
Validator.

http://www.softwareverify.com

Stephen
--
Stephen Kellett
Object Media Limited http://www.objmedia.demon.co.uk/software.html
Computer Consultancy, Software Development
Windows C++, Java, Assembler, Performance Analysis, Troubleshooting
 
Reply With Quote
 
Lucian Wischik
Guest
Posts: n/a
 
      11-04-2005
(E-Mail Removed) (Gordon Burditt) wrote:
>>When I encounter software crash, the software always pop-up something
>>like " The instruction at "0x1000a1eb" referenced memory at
>>"0x000000c0". The memory could not be "read"".
>>Then Visual C++ will ask me whether to debug the program(in assembly).

>The low value for the memory address referenced suggests the
>possibility of dereferencing a NULL pointer to a structure:
> ((struct foo *)NULL)->bar
>but it's difficult to be sure.


Doesn't VC initialize all variables to 0xc0 in debug mode? so this
looks like dereferencing an uninitialized pointer.

Isn't it funny how they put "read" in quotes, as if "reading" memory
were some esoteric concept?!

--
Lucian
 
Reply With Quote
 
red floyd
Guest
Posts: n/a
 
      11-04-2005
Lucian Wischik wrote:

>
> Doesn't VC initialize all variables to 0xc0 in debug mode? so this
> looks like dereferencing an uninitialized pointer.
>

OT, but what the hell... VC initializes to 0xcccccccc in debug mode.
 
Reply With Quote
 
Stephen Kellett
Guest
Posts: n/a
 
      11-05-2005
In message <(E-Mail Removed)>, Lucian Wischik
<(E-Mail Removed)> writes
>Doesn't VC initialize all variables to 0xc0 in debug mode? so this
>looks like dereferencing an uninitialized pointer.


Static variables. 0x00000000 (I think)
CRT variables: 0xcdcdcdcd
Win32 Heap variables 0xbaadf00d
Stack Variables: 0xcccccccc

Stephen
--
Stephen Kellett
Object Media Limited http://www.objmedia.demon.co.uk/software.html
Computer Consultancy, Software Development
Windows C++, Java, Assembler, Performance Analysis, Troubleshooting
 
Reply With Quote
 
 
 
Reply

Thread Tools

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are Off


Similar Threads
Thread Thread Starter Forum Replies Last Post
C/C++ compilers have one stack for local variables and return addresses and then another stack for array allocations on the stack. Casey Hawthorne C Programming 3 11-01-2009 08:23 PM
Why stack overflow with such a small stack? Kenneth McDonald Ruby 7 09-01-2007 04:21 AM
CComBSTR, std::endl and stack overflow Dilip C++ 0 08-08-2006 10:58 PM
regexp and stack overflow Une bévue Ruby 0 03-27-2006 07:50 AM
Stack overflow and memory problem? Yvad C++ 11 11-09-2005 03:21 PM



Advertisments