Velocity Reviews

Velocity Reviews (http://www.velocityreviews.com/forums/index.php)
-   C Programming (http://www.velocityreviews.com/forums/f42-c-programming.html)
-   -   Stack overflow and memory problem? (http://www.velocityreviews.com/forums/t440019-stack-overflow-and-memory-problem.html)

Yvad 11-04-2005 07:00 AM

Stack overflow and memory problem?
 
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


Gordon Burditt 11-04-2005 07:12 AM

Re: Stack overflow and memory problem?
 
>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

Zara 11-04-2005 08:50 AM

Re: Stack overflow and memory problem?
 
On Fri, 04 Nov 2005 07:12:01 -0000, gordonb.uxc6z@burditt.org (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

tony_in_da_uk@yahoo.co.uk 11-04-2005 10:37 AM

Re: Stack overflow and memory problem?
 
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


EventHelix.com 11-04-2005 11:31 AM

Re: Stack overflow and memory problem?
 
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


Jugoslav Dujic 11-04-2005 01:24 PM

Re: Stack overflow and memory problem?
 
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.

Stephen Kellett 11-04-2005 01:34 PM

Re: Stack overflow and memory problem?
 
In message <1131103895.975352.128750@g47g2000cwa.googlegroups .com>,
EventHelix.com <eventhelix@gmail.com> 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

Lucian Wischik 11-04-2005 04:21 PM

Re: Stack overflow and memory problem?
 
gordonb.uxc6z@burditt.org (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

red floyd 11-04-2005 04:31 PM

Re: Stack overflow and memory problem?
 
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.

Stephen Kellett 11-05-2005 01:15 AM

Re: Stack overflow and memory problem?
 
In message <qi2nm1dbd8r6dd2kr7fpi8ucgrmfmeanc8@4ax.com>, Lucian Wischik
<lu.nn@wischik.com> 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


All times are GMT. The time now is 03:13 AM.

Powered by vBulletin®. Copyright ©2000 - 2014, vBulletin Solutions, Inc.
SEO by vBSEO ©2010, Crawlability, Inc.