Kbase P139990: SUBSTITUTE function in FIND statement causes crash
Autor |
  Progress Software Corporation - Progress |
Acesso |
  Público |
Publicação |
  4/27/2009 |
|
Status: Verified
SYMPTOM(s):
SUBSTITUTE function in FIND statement causes crash
Stacktrace from vsapi.dll reads:
vsFileMove
vsFindIndex
vsError
vsCallPtr
vsguiUpdateStatusFont
GetDC
Clients receive error (2659)
Disconnect from server; database is being shutdown. (2659)
Database log contains errors (5635) and (279)
SYSTEM ERROR: -s exceeded. Raising STOP condition and attempting to write stack trace to file 'procore'. Consider increasing -s startup parameter. (5635)
SYSTEM ERROR: stkpush: stack overflow. Increase the -s parameter. (279)
FACT(s) (Environment):
The ABL code looks similar to the following:
IF CAN-FIND(FIRST customer WHERE SUBSTITUTE("&1&2",customer.NAME,customer.contact) BEGINS "a") THEN
MESSAGE 'yes'.
ELSE MESSAGE 'no'.
Altering the code so it only contains one substitution results in the code not crashing the remote server anymore:
IF CAN-FIND(FIRST customer WHERE SUBSTITUTE("&1",customer.NAME) BEGINS "a") THEN
MESSAGE 'yes'.
ELSE MESSAGE 'no'.
Increasing -s has no effect.
OpenEdge 10.1C02 64-bit Service Pack
OpenEdge 10.1B03 Service Pack
Red Hat Enterprise Linux 4.0
CAUSE:
Bug# OE00179995
CAUSE:
The issue is on the side running the 64-bits product, when mixing 32-bits and 64-bits client or server.
FIX:
Upgrade to OpenEdge 10.1C03 or later.
Upgrade to 10.2A or later.
A workaround is to only use 1 substitution in the SUBSTITUTE function