Kbase P125505: CAN-FIND query causes memory violation when running against Oracle DataServer on Solaris
Autor |
  Progress Software Corporation - Progress |
Acesso |
  Público |
Publicação |
  2/29/2008 |
|
Status: Unverified
FACT(s) (Environment):
OpenEdge 10.1B
Oracle DataServer
Sun Solaris SPARC
Oracle 10g
SYMPTOM(s):
Connecting to Oracle 10 database via Oracle DataServer
ABL query using CAN-FIND causes session crash with error 49
SYSTEM ERROR: Memory violation. (49)
Stack trace from _progres reads:
X8StmtPrepare
orgettime
oradbnxt
orafnd
ABL query is constructed in a manner similar to the following:
FOR EACH <Table1> NO-LOCK:
MESSAGE CAN-FIND(FIRST <Table2> WHERE <Table2>.<Field1> = 1)
VIEW-AS ALERT-BOX.
END.
RETURN.
Dataserv.lg (with -Dsrv qt_debug,EXTENDED set) shows:
HH:MM:SS : OCI call OCIStmtExecute <5>
HH:MM:SS : error text: ORA-01008: not all variables bound ----
HH:MM:SS : OCI call omru <5>
HH:MM:SS :
HH:MM:SS : Cursor <5> Rows processed 0 (last execution)
HH:MM:SS : SYSTEM ERROR: Memory violation. (49)
HH:MM:SS : ** Save file named core for analysis by Progress Software Corporation. (439)
CAUSE:
Bug# OE00156304
FIX:
Option #1
Upgrade to 10.1C or later
Option #2
Change WHERE condition on the CAN-FIND function as follows:
FOR EACH <Table1> NO-LOCK:
MESSAGE CAN-FIND(FIRST <Table2> WHERE <Table2>.<Field1> >= 1 AND <Table2>.<Field1> <= 1)
VIEW-AS ALERT-BOX.
END.
RETURN.