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.