Consultor Eletrônico



Kbase P172735: AVM can crash when overriding .NET void method
Autor   Progress Software Corporation - Progress
Acesso   Público
Publicação   18/05/2011
Status: Unverified

SYMPTOM(s):

AVM can crash when overriding .NET void method

SYSTEM ERROR when invoking ABL method <method-name> from .NET
Exception code: C0000005 ACCESS_VIOLATION

Progress session crash with ACCESS_VIOLATION when closing an ABL Form with ABL Inherited ultraDateTimeEditor control.

FACT(s) (Environment):

Session does not crash if the ABL Form Object is not deleted in FormClosing event handler procedure in main ABL window or the WndProc override method is not added in ABL form.
Windows
OpenEdge 10.2B

CAUSE:

Bug# OE00200073

CAUSE:

The AVM can crash when executing an overridden .NET void method in a hybrid. The crash will occur if on return from the void method, another hybrid object with an ABL destructor is garbage collected. The message displayed during the crash is:
SYSTEM ERROR when invoking ABL method <method-name> from .NET
Exception code: C0000005 ACCESS_VIOLATION

The prevalent manifestation of this crash is when an ABL Form overrides WndProc, and has a hybrid control on it which has a destructor. If the form is explicitly destroyed from the ABL during the formClosed event, and the hybrid control is not explicitly destroyed during the form's destructor, the AVM will crash on returning from WndProc.

FIX:

Upgrade to OpenEdge 10.2B03 or later. If upgrading to OpenEdge 10.2B03 or later is not feasible, a workaround is to explicitly delete the hybrid object in the form's destructor rather than leave it for garbage collection.