Consultor Eletrônico



Kbase P127464: Remote Server crashes if 4GL/ABL code contains the SUBSTITUTE function
Autor   Progress Software Corporation - Progress
Acesso   Público
Publicação   7/8/2008
Status: Unverified

SYMPTOM(s):

SYSTEM ERROR: Memory violation. (49)


Database runs on Sun Solaris SPARC 64-Bit

Database runs on Linux 64-Bit

Client code is run from a Windows 2003 machine


Stack trace from _mprosrv reads:

nsaEopFrmNetwork()
nsaEopFrmNetwork()
nsaEopFrmNetwork()
nsadoix()
nsaloop()


The offending code looks similar to this:

FIND paymast WHERE paymast.payno = 4 NO-LOCK NO-ERROR.

FOR EACH timesheet OF paymast

WHERE timesheet.empno >= 0

AND timesheet.empno <= 99999999

AND timesheet.batchno MATCHES "*"

AND timesheet.period >= 0

AND timesheet.period <= 99

AND timesheet.costcentre >= ""

AND timesheet.costcentre <= "ZZZZZZZZZZZZ"

AND timesheet.jobgrade >= ""

AND timesheet.jobgrade <= "ZZZZZZZZZZZZ"

AND timesheet.tspage = 1 NO-LOCK,

EACH employee OF timesheet WHERE SUBSTITUTE("&1, &2 &3",

TRIM(employee.surname),

TRIM(employee.etitle),

TRIM(employee.initials)) MATCHES "*" NO-LOCK,

FIRST batchhead WHERE batchhead.payno = timesheet.payno

AND batchhead.period = timesheet.period

AND batchhead.batchno = timesheet.batchno NO-LOCK:

DISPLAY employee.empno timesheet.batchno.

END.


Removing this WHERE clause from the offending code prevents this behaviour:

EACH employee OF timesheet WHERE SUBSTITUTE("&1, &2 &3",

TRIM(employee.surname),

TRIM(employee.etitle),

TRIM(employee.initials)) MATCHES "*" NO-LOCK,

FIRST batchhead WHERE batchhead.payno = timesheet.payno


FACT(s) (Environment):

Linux x86 64-bit
Solaris SPARC 9 64-bit
OpenEdge 10.x

CAUSE:

Bug# OE00160971


FIX:

Upgrade to 10.1C