Consultor Eletrônico



Kbase 21129: 'C' Call Stack Has Been Compromised After Calling In (6069)
Autor   Progress Software Corporation - Progress
Acesso   Público
Publicação   30/01/2007
Status: Unverified

SYMPTOM(s):

'C' Call Stack has been compromised after calling in (6069)

Calling a Windows Dynamic Link Library (DLL) routine.

CAUSE:

This error most likely occurs because Progress is using either the standard Windows calling convention (STDCALL -- default in Progress 9.x) or the Pascal calling convention (PASCAL -- default in Progress 8.x and earlier versions) to access a routine written in the C programming language. Either can cause the 'C' Call Stack not to be cleaned up by the called function.

FIX:

To resolve the error, specify the CDECL option in the procedure definition so that Progress uses the C calling convention to access the routine. Example:

PROCEDURE DWT_Init EXTERNAL "DWT32.DLL":U CDECL:
DEFINE INPUT PARAMETER APPPATH AS CHARACTER NO-UNDO.
DEFINE INPUT PARAMETER MASKSPATH AS CHARACTER NO-UNDO.
DEFINE INPUT PARAMETER BLDGAPPNAME AS CHARACTER NO-UNDO.
DEFINE INPUT PARAMETER PERSAPPNAME AS CHARACTER NO-UNDO.
DEFINE INPUT PARAMETER SEEDAPPNAME AS CHARACTER NO-UNDO.
DEFINE INPUT PARAMETER TMPPATH AS CHARACTER NO-UNDO.
DEFINE INPUT PARAMETER ADLMSGFILEPATH AS CHARACTER NO-UNDO.
DEFINE INPUT PARAMETER OFFSETSFILENAME AS CHARACTER NO-UNDO.
DEFINE RETURN PARAMETER ERRSTATUS AS LONG NO-UNDO.
END.