Consultor Eletrônico



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.