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