Consultor Eletrônico



Kbase P164678: Runaway AppServer process caused by code setting memptr to size 0 on protected memory.
Autor   Progress Software Corporation - Progress
Acesso   Público
Publicação   27/04/2010
Status: Unverified

SYMPTOM(s):

Runaway AppServer process caused by code setting memptr to size 0 on protected memory.

AppServer process runs ABL code which issues a statement to set memptr size to 0.

Used userdump to get stack of AppServer process.

Stack of AppServer process shows the fmFreeMemptr function as the last OpenEdge function called:
0012f800 00441d59 _proapsv!fmFreeMemptr+0xc9
0012f8e0 0044c213 _proapsv!fmrawo+0x339
0012f950 0066cf4a _proapsv!fmeval+0x503
0012fa14 0068a9d5 _proapsv!rnasgsimple+0x3ea
0012fa60 0063c872 _proapsv!rnexec_entry+0x225
...


ABL code using external functions from a Windows dll which is setting up memory addresses.

FACT(s) (Environment):

Windows
OpenEdge 10.x

CAUSE:

The memory invoked by the Windows DLL is protected and is not allowing other programs to modify the memory.

FIX:

If an external function protects memory it may be necessary to avoid performing any adjustment to a memptr as this may return an error status that is unexpected by the ABL code and therefore will likely cause erratic behavior within the ABL code.