Consultor Eletrônico



Kbase P148112: AVM can crash with collation on two-step conversion
Autor   Progress Software Corporation - Progress
Acesso   Público
Publicação   20/10/2009
Status: Verified

SYMPTOM(s):

AVM can crash with collation on two-step conversion

Client can crash when comparing characters

The crashes happen to occur more frequently on Windows Vista

Stack trace from OpenEdge 10.2A01 reads:
ccConversionType+13
ccConvertBytes+9A
stbcmpl+4B0
findval2+3CF
fmEEQ+C4
fmeval+5CD
rnfasterifstmt+48
rnifstmt+1B
rnexec_entry+4FA
rninterpret+34
rnrq+F5
drmain+50B
ProStartup+62
WinMain+10C
__tmainCRTStartup+286
WinMainCRTStartup+D
RegisterWaitForInputIdle+49

setting the collation to BASIC prevents the crash from occurring

The crash can occur on the following logical test:

IF SUBSTRING(myStringVariable,1,3) = "LIB" THEN myStringVariable2 = SUBSTRING(myStringVariable,5,60).


FACT(s) (Environment):

Collation is set explicitely for the session

Codepage is set explicitely for the session

Windows
UNIX
OpenEdge 10.x

CAUSE:

Bug# OE00181023

CAUSE:

We are not correctly building the collation data for a collation on a two-step codepage conversion. This can cause the AVM to crash, depending on what happens to be in memory.

This happens only for collations on two-step codepage conversions i.e. where convmap.cp does not contain a collation entry for the requested -cpinternal and -cpcoll, but there is a conversion available from -cpinternal to another codepage, and this other codepage has a collation entry for -cpcoll.

As an example, there is no collation for ISO8859-15 and FRENCH, but there is a conversion from ISO8859-15 to ISO8859-1, and ISO8859-1 has a FRENCH collation.


FIX:

There are two workarounds available:

1- Define a collation table for the requested codepage/collation, and add this to your convmap.cp.
2- Determine whether the requested -cpinternal is really required, and if it is possible to use a different codepage that supports the requested codepage.