Kbase P44286: Code using GLOBAL SHARED variables with initial value not portable across platforms
Autor |
  Progress Software Corporation - Progress |
Acesso |
  Público |
Publicação |
  12/03/2009 |
|
Status: Verified
SYMPTOM(s):
Code using GLOBAL SHARED variables with initial value not portable across platforms
Procedure defines GLOBAL SHARED variables
Running from .r code
The OS where the .r was produced and the OS where the .r is executed, have different endianess.
Variable is initialized to incorrect value (example: Blank character string instead of UNKNOWN value)
The following errors may occur:
Invalid Color Index: 0 is greater than max value 255 (4105)
Invalid Font Index: 16777216 is greater than max value (4470)
vv_flush:I/O error 5 on fd 1
SYSTEM ERROR: Illegal instruction. (47)
_progres process may hang
FACT(s) (Environment):
Progress 9.0x
Progress 9.1A
Progress 9.1B
Progress 9.1C
Progress 9.1D
All Supported Operating Systems
CAUSE:
Bug# OE00095419
CAUSE:
The initial value for NEW GLOBAL SHARED variables was incorrectly stored in the .r in machine-dependent format.
As a result byte-swapping problems manifest when generating the .r code on machines that use different endians. For example, compiling on Solaris for SPARC and deploying it on Linux for Intel.
FIX:
Upgrade to Progress 9.1D08 or later
Upgrade to OpenEdge 10.0A or later
For Progress 9, additional steps will be required to activate the fix:
- Add the -glbshvarfix startup parameter to the client sessions in the compilation environment
- Re-compile all code, producing new .r code
- Deploy the new .r code to the target machine
This is because the fix introduces a change in r-code format, and will break compatibility with older Progress 9 r-code files.