Kbase P135352: GUI client crashes under Citrix when rendering images
Autor |
  Progress Software Corporation - Progress |
Acesso |
  Público |
Publicação |
  23/12/2010 |
|
Status: Verified
SYMPTOM(s):
GUI client crashes under Citrix when rendering images
Program crashes randomly at runtime
Issue does not occur on standalone Windows
Issue does not occur on Terminal Server
Stack Trace from prowin32 reads:
Exception code: C0000005 ACCESS_VIOLATION
Fault address: 0038A9AD 01:000499AD %DLC%\bin\snbd12dm.dll
Call Stack:
IMGLOW_set_fileio
FACT(s) (Environment):
Windows
Citrix Metaframe
Citrix Presentation Server
OpenEdge 10.x
OpenEdge Category: Language (4GL/ABL)
CHANGE:
Upgraded to OpenEdge 10.x
CAUSE:
Bug# OE00174464
CAUSE:
A bug in the third-party image rendering library (snbd12dm.dll) is the root cause of this crash. A support issue has been logged with the vendor of this dll. A HANDLE returned from CreateFileA in the library's IMGLOW_get_filetype function causes the crash to occur. If the HANDLE is assigned a value beyond 0x0000FFFF, the crash happens. Citrix seems to generate HANDLEs of this nature. The HANDLE should be an opaque identifier, but instead HANDLEs over 0x0000FFFF are interpreted as pointers with this function; trying to unreference them causes the crash.
FIX:
Option #1
Upgrade to OpenEdge 10.1C03 or later release.
Upgrade to OpenEdge 10.2A01 or later release.
After upgrading to the appropriate release, the fix for this issue needs to be activated by specifying the -imgmem startup parameter on the client.
From OpenEdge 10.2B onwards, -imgmem is enabled by default.
Option #2
A workaround consists of pre-loading the images into a procedure library. This solution prevents images from being loaded from the file and will therefore circumvent the call of IMGLOW_get_filetype. Rendering images loaded from a procedure library is achieved by another function (namely IMGLOW_get_filetype_mem) which is not affected by the defect.
To create the procedure library:
- prolib <libname> -create
To add the image files to the procedure library:
- prolib <libname> -add <file1> ... <filen>
Add the procedure library to the PROPATH.