Consultor Eletrônico



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