Kbase P81716: What Causes an Error 49 to occur?
Autor |
  Progress Software Corporation - Progress |
Acesso |
  Público |
Publicação |
  6/18/2005 |
|
Status: Verified
SYMPTOM(s):
What Causes an Error 49 to occur?
Error 49 and the possible causes.
Reasons that might cause an error 49
Possible causes of a Memory Violation
Cause of Memory Violation
Cause of Error 49
SYSTEM ERROR: Memory violation (49)
CAUSE:
Memory Violation error 49 and Access violation on Windows occur when the program attempted to read from or write to a memory location that is outside the process address space.
Indicating that a piece of code is using an incorrect pointer.
An incomplete list of causes are:
- uninitialized variable in C, C++
- incorrect calculation of an address
- reference past the end of an array in C, C++
- pointer variable's contents have been smashed
- some data structure has been smashed
- stack has been smashed
- rcode corrupted on disk somehow
- 4GL application passes bad parameters to a function in a dll
- 4GL application calling HLC code with bugs in it (usually not done on Windows)
- code in a dll being called and code in it has a bug
- ActiveX control has a bug
- database is corrupted
- bi log is corrupted
- ai log is corrupted
- Progress executable(s) or shared libaries corrupted
- An installation replaced a dll with an incompatible version
- we start processing events in the middle of an operation that is not supposed to be interrupted
- executable has been corrupted on disk somehow
- bad disk causes swap corruption (not common)
- bad memory causes memory corruption (not common)
- other hardware problems (not common)
4GL code is
ever/ supposed to produce an error 49 or a GPF. If nothing has been corrupted, then reproducible occurrence of same is likely to be a Progress bug.
The specific cause is usually hard to determine because in most cases the access violation is a symptom that is a side-effect of the real problem and it usually happens long after (in number of instructions executed) the code with the bug in it executed.
Sometimes the call stack in the protrace files helps. It allows us to figure out what part of our code was being executed.